我试图调整主窗口的标题,以显示尽可能多的文件名,以适应字幕区域。所以,我想要计算红色矩形中标记的区域的宽度:
现在,我希望我的代码可以使用任何可用的系统指标,从而避免被所有可能存在的各种平台/主题/ dpi变体所捕获。
如果确实可以做到这一点怎么办呢?
答案 0 :(得分:1)
如andlabs中comments所述,WM_GETTITLEBARINFOEX
消息可用于获取所需信息。
可以将此消息发送到窗口,并使用标题栏及其每个按钮的状态和位置填充TITLEBARINFOEX
结构。从那里确定标题可用空间是一项简单的任务。
答案 1 :(得分:-1)
首先,调用GetTitleBarInfo
,将指针传递给TITLEBARINFO
结构:
TITLEBARINFO tbi;
GetTitleBarInfo(hwnd, &tbi);
标题栏的宽度为tbi.rcTitlebar.right - tbi.rcTitlebar.left
。但这包括三个按钮(Close,Minimize和Maximize)。一个按钮的宽度为GetSystemMetrics(SM_CXSIZE)
,因此标题栏的宽度减去三个按钮是
(tbi.rcTitlebar.right - tbi.rcTitlebar.left) - (3 * GetSystemMetrics(SM_CXSIZE))
当然,代码适用于所有版本的Windows,其中每个按钮的宽度相等