Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
26 / 26 / 0
Регистрация: 05.08.2012
Сообщений: 83

GetWindowRect() Почему возвращается не тот размер окна?

03.09.2012, 18:55. Показов 4621. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
почему возвращается не тот размер окна что я задавал ранее? 800х600 задавал 806х625 вернула ф-я.
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int GetWidth() 
    {
        RECT r;
        GetWindowRect(WindowHandle, &r);
        return r.right - r.left;
    };
 
    int GetHeight() 
    {
        RECT r;
        GetWindowRect(WindowHandle,&r);
        return r.bottom - r.top;    
    };
окно создается так
Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
GameWindow :: GameWindow()
{
 
        const char* ClassName = "GameWindowClass";
        const char* WindowTitle = "GameWindow";
        const int Width = 800;
        const int Height = 600;
 
        HINSTANCE m_hInstance = GetModuleHandle(NULL);
 
        SelfWindow = this;
        WNDCLASSEX wc = {   sizeof(wc), CS_OWNDC | CS_HREDRAW | CS_VREDRAW,
                            WndProc, 0, 0, m_hInstance, NULL, NULL, NULL, NULL, ClassName, NULL };
 
        RegisterClassEx(&wc);
 
        int x = (GetSystemMetrics(SM_CXSCREEN) - Width)  / 2;
        int y = (GetSystemMetrics(SM_CYSCREEN) - Height) / 2;
 
        RECT rc;
        rc.left                 = x;
        rc.right                = x + Width;
        rc.top                  = y;
        rc.bottom               = y + Height;
 
        int Style       = WS_CAPTION | WS_MINIMIZEBOX; // | WS_SYSMENU
        int ExStyle     = WS_EX_APPWINDOW;
 
        AdjustWindowRectEx (&rc, Style, FALSE, ExStyle);
 
        WindowHandle = CreateWindowEx ( ExStyle, ClassName, WindowTitle, Style,
                                        rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
                                        NULL, NULL, m_hInstance, NULL);
 
        ShowWindow ( WindowHandle, SW_SHOWDEFAULT );
        SetForegroundWindow ( WindowHandle );
        SetFocus ( WindowHandle );
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2012, 18:55
Ответы с готовыми решениями:

Почему не изменяется размер окна как надо?
Надо сделать пропорциональное изменение ширины и высоты: uses GraphABC; var W, H: integer; K: real; begin W :=...

CSS, сделал размер текста в зависимости от размера окна браузера. Почему-то не работает.
Здравствуйте, вот адрес страницы. Вот код страницы: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ...

Почему ничего не возвращается?
Помогите, пожалуйста, разобраться, почему на выходе ничего не возвращается..:cry: #include <iostream> #include <cmath> ...

6
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
03.09.2012, 18:59
попробуй менять экран и мерять его
*W=GetSystemMetrics(SM_CXSCREEN);
*H=GetSystemMetrics(SM_CYSCREEN);
0
26 / 26 / 0
Регистрация: 05.08.2012
Сообщений: 83
03.09.2012, 19:10  [ТС]
попробуй менять экран и мерять его
*W=GetSystemMetrics(SM_CXSCREEN);
*H=GetSystemMetrics(SM_CYSCREEN);
w=1600
h = 900
это размеры текущего видео режима экрана к окну это не имеет отношения. ктому же я не меняю видео режим, просто окно создаю и там все рисую.

мне для перспективной матрицы нужны текущие размеры окна
C++
1
2
3
4
5
6
7
8
9
            //perspective = GLPerspectiveProjection(60.0f, 1.33f, 0.1f, 100.0f);
            perspective = GLOrthographicProjection(0, GetWidth() , 0, GetHeight(), 0,100);
            //perspective = Matrix4D_Identity;
            xcenter = GetWidth() /2;
            ycenter = GetHeight() /2;
            
            glMatrixMode(GL_PROJECTION_MATRIX);
            perspective = transpose(perspective);
            glLoadMatrixf( (float*) &perspective);
а ф-ии фигней страдают( вот, от куда 806 и 625 берутся Оо?
0
26 / 26 / 0
Регистрация: 05.08.2012
Сообщений: 83
03.09.2012, 19:45  [ТС]
обнаружилась засада.
В любом окне для Win32 имеется понятие о двух областях. Первая область - это область всего окна. Во всю область окна входит клиентская часть и не клиентская часть. Заголовок окна, строка меню, меню окна, минимизирующие и максимизирущие кнопки, границы являются неклиентской областью.
поправил теперь норм.
Изображения
 
3
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
03.09.2012, 21:37
GetClientRect(&rc) возвращает размер клиентской части окна
(rc.right - ширина, rc.bottom - высота).
GetWindowRect(&rc) возвращает координаты всего окна
(rc.top,rc.left)-левая верхняя точка,
(rc.bottom,rc.right)-правая нижняя точка.

Вопрос: А как теперь получить координаты клиентской части?
0
26 / 26 / 0
Регистрация: 05.08.2012
Сообщений: 83
04.09.2012, 05:08  [ТС]
>А как теперь получить координаты клиентской части?
Отправить запрос в саппорт майкрософта пускай разродятся координатами.

Не по теме:

ну или повычитать структуры друг из друга

0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
04.09.2012, 10:29
Цитата Сообщение от returnless Посмотреть сообщение
повычитать структуры друг из друга
Не получится. Поскольку они в разных координатах.
Первый - в относительных, второй - в абсолютных.
Тупой способ известен - узнать размер заголовка, тулбара и т.д.
и только потом повычитать. Но уж очень геморройно....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2012, 10:29
Помогаю со студенческими работами здесь

Почему скролл возвращается обратно
Здравствуйте, не могу понять, $(document).scrollTop(scrollTop); сначала срабатывает, а затем возвращается на верх страницы. Вот код: ...

Почему возвращается нулевой указатель?
Всем привет. Не могу понять из за чего внутри метода указатель корректно присваивается, видно что он указывает на объект. Но потом при...

Почему матрица не возвращается из процедуры?
Двумерный массив "mat" не изменяется, есть кто более компетентный? текст программы: program lab10; const N = 3; type ar =...

Почему возвращается пустой массив
function range(start, end) { let resultMassive = ; for(let i = start; i<=end;i++) { ...

Разработать шаблон функции, в которую передается массив и размер и возвращается индекс минимального элемента
Разработать шаблон функции, в которую передается массив и размер и возвращается индекс минимального элемента массива.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru