如何截断HWND标题

时间:2010-08-17 22:20:21

标签: c++ winapi

我正在创建一个打开动态标题的窗口。如果窗口调整大小并且没有空间显示完整标题,我想让窗口的标题截断。

例如,我有

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

是否有一种方法可以自动截断HWND标题,或者另外一种方法来获取标题文本的像素宽度,以便在窗口缩小时手动设置标题?

2 个答案:

答案 0 :(得分:1)

您可以通过GetTextExtentPoint32函数获取绘制到给定设备上下文(HDC)的字符串的宽度。

答案 1 :(得分:1)

不是通过SetWindowText设置文本,而是回复WM_GETTEXT.两者是相关的:DefWindowProc通过返回您之前使用SetWindowText设置的值来响应WM_GETTEXT。

现在,当您收到WM_GETTEXT消息时,您可以返回当时适当的文本,并考虑当前的宽度。