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

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

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

Язык C или С++

Ответ 1

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

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

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

Ответ 2

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

Пример:

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

Ответ 4

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