我正在创建一个打开动态标题的窗口。如果窗口调整大小并且没有空间显示完整标题,我想让窗口的标题截断。
例如,我有
HWND handle = GetHWND(); // gets me the correct handle
std::wstring title = L"some fairly long window title";
SetWindowTextW(handle, title.c_str());
是否有一种方法可以自动截断HWND标题,或者另外一种方法来获取标题文本的像素宽度,以便在窗口缩小时手动设置标题?
答案 0 :(得分:1)
您可以通过GetTextExtentPoint32函数获取绘制到给定设备上下文(HDC)的字符串的宽度。
答案 1 :(得分:1)
不是通过SetWindowText
设置文本,而是回复WM_GETTEXT.
两者是相关的:DefWindowProc通过返回您之前使用SetWindowText设置的值来响应WM_GETTEXT。
现在,当您收到WM_GETTEXT消息时,您可以返回当时适当的文本,并考虑当前的宽度。