C++ 如何截断HWND标题

C++ 如何截断HWND标题,c++,winapi,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标题,或者有另一种方法可以获取标题文本的像素宽度,以便在窗

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

例如,我有

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

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

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

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


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

?当你把窗口缩小时,它的文本会发生什么变化?应该让它更清晰。我希望窗口文本根据标题大小截断(事实上,它可能有足够的空间更长)。