winapi - 如何获取航空和基本设计的标题栏高度和宽度

标签 winapi

我正在使用 GetSystemMetrics(SM_CXSIZEFRAME)对于边框的宽度,它适用于基本设计,但不适用于 aero,我该如何改进它,使其适用于 aero?

我正在使用 GetSystemMetrics(SM_CYCAPTION)对于标题栏的高度,但对于基本设计和航空设计而言,该值都太小了,我在这里做错了什么?

最佳答案

在没有主题的 Windows 中,GetSystemMetrics(SM_CYCAPTION)是标题栏中文本的高度;您需要添加框架和边框填充的大小( GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYEDGE) * 2 )。

对于主题 Windows(这是这些天的默认设置), GetThemeSysSize 很可能是您正在寻找的功能;特别是,GetThemeSysSize(SM_CXBORDER)对于边框宽度,和 GetThemeSysSize(SM_CYSIZE) + GetThemeSysSize(SM_CXPADDEDBORDER) * 2为标题栏。

关于winapi - 如何获取航空和基本设计的标题栏高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21566307/

相关文章:

窗口处于事件状态时无法切换键盘语言

c++ - 如何让 C++ 程序响应文件打开而执行?

c++ - 如何捕捉窗口大小调整?

c++ - 如何防止系统在没有窗口的情况下关闭?

c++ - 将一个 DeviceContext 的内容复制到另一个 DeviceContext

c++ - “mblctr”不被识别为内部或外部命令、可操作程序或批处理文件。如何解决此问题?

delphi - 如何显示一个像弹出菜单一样的窗口?

c++ - 为什么 IStream::Commit 无法将数据写入文件?

c - NtDeviceIoControlFile - 获取缓冲区的大小

.net - "The specified procedure could not be found "禁用 wow64 重定向后