Создать квадратное окно C ++ - PullRequest
3 голосов
/ 24 января 2010

Застрял в небольшой неприятной проблеме. Я создаю графический интерфейс в C ++, используя XP и VS C ++, используя команду CreateWindow ().

Мой вопрос: как сделать внутри окрашиваемой области идеальный квадрат? При передаче размера окна для создания, часть этого вычитается для строки меню вверху, границы вокруг и т. Д. Есть ли переменные реального времени, которые я могу передать, например, создать окно 500x500 будет:

...500+BORDER,500+MENU_TOP+BORDER...

Спасибо всем

Ответы [ 3 ]

4 голосов
/ 24 января 2010

Обычно я делаю это с AdjustWindowRect. Я считаю, что это проще, чем другие предложенные методы (которые должны работать так же хорошо, это ваш выбор). Используйте это так:

RECT rect = {0, 0, desiredWidth, desiredHeight};

AdjustWindowRect(&rect, windowStyle, hasMenu);

const int realWidth = rect.right - rect.left;
const int realHeight = rect.bottom - rect.top;

И передать realWidth & realHeight на CreateWindow.

Функция, как следует из ее названия, настроит окно в соответствии с вашим стилем окна и использованием меню, чтобы область клиента соответствовала желаемому размеру.

0 голосов
/ 24 января 2010

Все метрики пользовательского интерфейса можно получить из API-вызова GetSystemMetrics () .

Например, меню будет SM_CXMENU и SM_CYMENU.

0 голосов
/ 24 января 2010

вы можете найти все соответствующие размеры (ширина окна, высота строки меню и т. Д.) Здесь: GetSystemMetrics () . Используя эти значения, вы сможете создать идеальное квадратное окно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...