Windows: получение высоты строки заголовка окнаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Windows: получение высоты строки заголовка окна

Сообщение Anonymous »

Я пытался получить высоту заголовка определенного окна в Windows. Вы можете повторить это с помощью Блокнота. Я использую C++, и ни один из кодов, которые я нашел в Интернете, не дал правильного результата. Используя, например. Screenpresso Я измерил высоту полосы окна 31.
Я пробовал следующие функции:

Код: Выделить всё

TitleBarHeight.h:
#pragma once

#include 

inline int get_title_bar_thickness_1(const HWND window_handle)
{
RECT window_rectangle, client_rectangle;
GetWindowRect(window_handle, &window_rectangle);
GetClientRect(window_handle, &client_rectangle);
return window_rectangle.bottom - window_rectangle.top -
(client_rectangle.bottom - client_rectangle.top);
}

inline int get_title_bar_thickness_2(const HWND window_handle)
{
RECT window_rectangle, client_rectangle;
GetWindowRect(window_handle, &window_rectangle);
GetClientRect(window_handle, &client_rectangle);
return (window_rectangle.right - window_rectangle.left - client_rectangle.right) / 2;
}
Результаты:

Код: Выделить всё

auto window_handle = FindWindow("Notepad", nullptr);
auto a = get_title_bar_thickness_1(window_handle); // 59
auto b = get_title_bar_thickness_2(window_handle); // 8
auto c = GetSystemMetrics(SM_CXSIZEFRAME); // 4
auto d = GetSystemMetrics(SM_CYCAPTION); // 23
Получение системных показателей с помощью GetSystemMetrics() не работает, поскольку окна могут иметь разную высоту заголовка, очевидно, и нет аргумента для дескриптора окна.Как я могу получить результат 31?

Подробнее здесь: https://stackoverflow.com/questions/565 ... ars-height
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»