Как создать окно, основываясь только на размере экрана, не считая границы окна с C ++ / Windows? - PullRequest
3 голосов
/ 01 марта 2010

При создании окна с использованием CreateWindow(...), для которого требуются ширина и высота окна, мне необходимо ввести значения 656 и 516 вместо 640 и 480, чтобы учесть границу окна.

Мне интересно, есть ли способ создать окно, основанное только на части окна, не включая границу, особенно учитывая, что если разные версии окон имеют границы разного размера, программа может отображаться по-разному, когда Я запускаю его на разных версиях

(то есть: при использовании 640 - object.width поместит объект не совсем по краю экрана, если версия окон пользователя имеет границы разных размеров).

Итак, есть ли способ создать окно, основанное только на той части экрана, которая имеет отношение к программе, или, по крайней мере, изменить функцию в соответствии с GetVericalBorder() / GetHorizontalBorder(), чтобы я использовал их в * Параметры 1010 * вместо произвольных и расплывчатых значений, таких как 656 и 516?

Ответы [ 3 ]

3 голосов
/ 01 марта 2010

Посмотрите на AdjustWindowRectEx . Вы передаете эту функцию прямоугольнику, содержащему желаемый размер клиентской области ваших окон и флаги стиля окна, и она вычисляет, насколько велико сделать общее окно, чтобы клиентская область имела желаемый размер.

2 голосов
/ 01 марта 2010

Вы можете использовать API-интерфейс SystemParametersInfo () для получения такого рода информации об окне. См. Параметры SPI_GETBORDER и / или SPI_GETNONCLIENTMETRICS см. Библиотеку Microsoft

SystemParametersInfo должна позволять вам учитывать границы, меню и т. Д.

0 голосов
/ 02 марта 2010
int WINAPI GetSystemMetrics(
  __in  int nIndex
);

См. Библиотеку Microsoft

...