GetSystemMetrics против SystemParametersInfo

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

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

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

1 ответ

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

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

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

Другие вопросы по тегам