Как обрезать заголовок HWND - PullRequest
0 голосов
/ 18 августа 2010

Я создаю окно, которое открывается с динамическим заголовком. Я хотел бы, чтобы заголовок окна урезался, если размер окна изменен, и нет места для отображения полного заголовка.

Например, у меня есть

HWND handle = GetHWND(); // gets me the correct handle
std::wstring title = L"some fairly long window title";
SetWindowTextW(handle, title.c_str());

Есть ли способ автоматического усечения заголовка HWND или альтернативно способ получить ширину в пикселях текста заголовка, чтобы я мог установить заголовок вручную, если окно сжимается?

Ответы [ 2 ]

1 голос
/ 18 августа 2010

Вместо того, чтобы задавать текст с помощью SetWindowText, отвечайте на WM_GETTEXT. Два связаны: DefWindowProc отвечает на WM_GETTEXT, возвращая значение, которое вы установили ранее с помощью SetWindowText.

Теперь, когда вы получите сообщение WM_GETTEXT, вы можете вернуть соответствующий текст в данный момент, принимая во внимание текущую ширину.

1 голос
/ 18 августа 2010

Вы можете получить ширину строки, отображаемой в данном контексте устройства (HDC), с помощью функции GetTextExtentPoint32 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...