Я создал окно с функцией 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) ) {
...
}
Ответ 3
Вы пробовали GetWindowRect()
или GetWindowInfo()
, который возвращает структуру WINDOWINFO
?
Ответ 4
Если у вас нет указаний на то, зачем вам нужен размер, и размер может измениться, если в стиле окна установлены изменяемые размеры атрибутов [и пользователь изменяет размер окна с помощью минимизации/максимизации/восстановления или перетаскивает край окна), ваш самый безопасный выбор - включить обработчик сообщений для WM_SIZE и использовать значения параметра wparam и lparam для определения размеров окна. Таким образом, вы всегда будете знать текущий размер. WM_SIZE вызывается в последовательности создания сообщений после сообщения.