Форум программистов, компьютерный форум CyberForum.ru

Узнать размер консоли - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 5.00
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.11.2011, 22:52     Узнать размер консоли #1
Как узнать размер консольного окна, куда программа выводит данные?

Сколько символов "влазит" по вертикали и горизонтали.

Добавлено через 35 минут
с помощью winapi
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
13.11.2011, 23:34     Узнать размер консоли #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <Windows.h>
 
int main()
{
    HANDLE hWndConsole;
    if (hWndConsole = GetStdHandle(-12))
    {
        CONSOLE_SCREEN_BUFFER_INFO consoleInfo;
        if (GetConsoleScreenBufferInfo(hWndConsole, &consoleInfo))
        {
            int widht = consoleInfo.srWindow.Right - consoleInfo.srWindow.Left + 1;
            int height = consoleInfo.srWindow.Bottom - consoleInfo.srWindow.Top + 1;
            printf("Widht: %d\n", widht);
            printf("Height: %d\n", height);
        }
        else
            printf("Error: %d\n", GetLastError());
    }
    else
        printf("Error: %d\n", GetLastError());
    getchar();
    return EXIT_SUCCESS;
}
fair7
8 / 8 / 0
Регистрация: 31.12.2010
Сообщений: 81
14.02.2015, 14:01     Узнать размер консоли #3
а если убрать проверку, это не "смертельно"?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <Windows.h>
 
HANDLE hCon =  GetStdHandle( STD_OUTPUT_HANDLE );
CONSOLE_SCREEN_BUFFER_INFO csbInfo;
void GetBufferChars(COORD *Chars)// 4TO5bI y3HATb PA3MEP 5yFEPA CUMBO7OB
{   GetConsoleScreenBufferInfo(hCon, &csbInfo);
    Chars->X = csbInfo.srWindow.Right - csbInfo.srWindow.Left + 1;
    Chars->Y = csbInfo.srWindow.Bottom - csbInfo.srWindow.Top + 1;
    //printf(" Y=%i X=%i",Chars->Y,Chars->X );  
}
int main()
{getchar();
    COORD Chars;    
    GetBufferChars(&Chars);
    
    int widht = Chars.X;
    int height = Chars.Y;
    printf("Widht: %d\n", widht);
    printf("Height: %d\n", height);
 
    getchar();
    return EXIT_SUCCESS;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,179
Завершенные тесты: 1
14.02.2015, 14:22     Узнать размер консоли #4
C++
1
2
3
4
5
   HWND hWnd = GetConsoleWindow();
   RECT rc;
   GetClientRect(hWnd,&rc);
   int w=rc.right; // ширина рабочей области
   int h=rc.bottom;// высота рабочей области
По моему, так проще!
fair7
8 / 8 / 0
Регистрация: 31.12.2010
Сообщений: 81
14.02.2015, 14:42     Узнать размер консоли #5
у меня почему-то не получается запустить. Говорит компилятор:
`GetConsoleWindow' undeclared (first use this function)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <windows.h>
 
int main()
{getchar();
 
    HWND hWnd = GetConsoleWindow();
    RECT rc;
    GetClientRect(hWnd,&rc);
    int w=rc.right; // ширина рабочей области
    int h=rc.bottom;// высота рабочей области
 
    printf("Widht: %d\n", w);
    printf("Height: %d\n", h);
 
    getchar();
    return 0;
}
и с большой пробовал
C++
1
#include <Windows.h>
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11834 / 6813 / 769
Регистрация: 27.09.2012
Сообщений: 16,887
Записей в блоге: 2
Завершенные тесты: 1
14.02.2015, 14:46     Узнать размер консоли #6
Идем в документацию, смотрим.
To compile an application that uses this function, define _WIN32_WINNT as 0x0500 or later. For more information, see Using the Windows Headers.
Кликните здесь для просмотра всего текста
Перед заголовком
C++
1
#define _WIN32_WINNT 0x0500
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2015, 21:59     Узнать размер консоли
Еще ссылки по теме:

Как изменить размер текста в консоли C++
C++ Как узнать размер массива?
C++ Размер шрифта в консоли

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fair7
8 / 8 / 0
Регистрация: 31.12.2010
Сообщений: 81
14.02.2015, 21:59     Узнать размер консоли #7
Но он показывает сколько пикселей, а не сколько символов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#define _WIN32_WINNT 0x0500 // 4TO5bI MEHRTb KOOPDUHATbI PAMKU, HyJHO nPOnUCATb nEPED #include <windows.h>
#include <Windows.h>
int main()
{getchar();
    HWND hWnd=GetConsoleWindow();
    RECT rc;
    GetClientRect(hWnd, &rc);
    printf(" Y=%i X=%i",rc.right,rc.bottom);
    getchar();
    return EXIT_SUCCESS;
}
Yandex
Объявления
14.02.2015, 21:59     Узнать размер консоли
Ответ Создать тему
Опции темы

Текущее время: 14:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru