2015-11-19 7 views
1

Мне нужно было узнать высоту экрана, чтобы изменить размер диалогового окна. Я звоню GetSystemMetrics с SM_CYFULLSCREEN, и я получаю определенное количество (1028 в моем случае). За MSDN:GetSystemMetrics vs. SystemParametersInfo

Чтобы получить координаты части экрана не затемняется система панели задач или рабочего стола панели инструментов приложения, вызовите функцию SystemParametersInfo со значением SPI_GETWORKAREA.

Я назвал SystemParametersInfo, а чтобы увидеть, что он возвращается, и я получаю другой номер для высоты, 1050. Запуск шпиона, область без задач действительно высоты 1050. Кто-нибудь знает, почему разные высоты? Благодаря

ответ

3

Из документов MSDN для SM_CYFULLSCREEN:

Высота клиента области для окна в полноэкранном режиме на мониторе основного дисплея в пикселях.

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