如何测量文本可用的标题栏的宽度?

时间:2015-11-19 20:40:37

标签: winapi

我试图调整主窗口的标题,以显示尽可能多的文件名,以适应字幕区域。所以,我想要计算红色矩形中标记的区域的宽度:

enter image description here

现在,我希望我的代码可以使用任何可用的系统指标,从而避免被所有可能存在的各种平台/主题/ dpi变体所捕获。

如果确实可以做到这一点怎么办呢?

2 个答案:

答案 0 :(得分:1)

andlabscomments所述,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,其中每个按钮的宽度相等