Как получить ширину и высоту из окна CreateWindowEx ()? С++

Я сделал окно с функцией CreateWindowEx (), теперь, как я могу получить ширину и высоту из этого окна, которое я создал? Это звучит очень просто, но я просто не мог найти ответа;_;

Это необходимо, потому что высота окна создается автоматически в зависимости от того, как Windows хочет его создать.

язык C или C++

4 ответов


использовать GetWindowRect. Вычитайте справа от слева, чтобы получить ширину и снизу сверху, чтобы получить высоту.

RECT rect;
if(GetWindowRect(hwnd, &rect))
{
  int width = rect.right - rect.left;
  int height = rect.bottom - rect.top;
}

в качестве примечания, если вам нужна клиентская область вместо всего окна. Вы можете использовать GetClientRect. Для получения дополнительной информации об окне вы можете использовать GetWindowInfo.


ты пробовал GetWindowRect() или GetWindowInfo() возвращает WINDOWINFO структура?


Я считаю, что вы ищете GetWindowInfo

пример:

HWND window = ::CreateWindowEx(...);
WINDOWINFO info;
if ( ::GetWindowInfo(window, &info) ) {
  ...
}

учитывая, что нет никаких указаний, почему вам нужен размер, и что размер может измениться, если стиль окна установлен на включение изменяемых размеров атрибутов [и пользователь изменяет размер окна с помощью минимизации/максимизации/восстановления или перетаскивает край окна], ваш самый безопасный выбор-включить обработчик сообщений для WM_SIZE и использовать значения параметров wparam и lparam для определения размеров окна. Таким образом, вы всегда будете знать текущий размер. WM_SIZE вызывается в окне последовательность сообщений post создание.