【问题标题】:How to get the real height of title bar with c++如何用c ++获取标题栏的真实高度
【发布时间】:2017-11-15 10:09:51
【问题描述】:

其实我发现here也有同样的需求帖子。但是我还是发现了一些问题,所以我必须在这里发布另一个问题。

如果我使用snipaste 来捕获工具栏。我可以知道真正的标题栏是28 这样

但是如果我像这样使用该帖子中的方法:

#include<iostream>
#include <wtypes.h>
using namespace std;

int main() {
    cout << GetSystemMetrics(SM_CYCAPTION) << endl;
    return 0;
}

我只会得到23。有什么我错过的吗?或者28 实际上包含除标题栏之外的其他部分?我该怎么做才能用c​​ ++找到标题栏的真实高度。

【问题讨论】:

  • 可能是 y 标题 + y 框架?
  • @VTT SM_CYSIZEFRAME 只是 4 像素..
  • 还有 SM_CXPADDEDBORDER,用于标题 Windows 的边框填充。我自己也不得不将其包含在类似的计算中。
  • 但为什么不AdjustWindowRect
  • @MikkelK。没有SM_CYPADDEDBORDER吗?我认为您可以将其安排为阅读的答案。不管怎么说,还是要谢谢你。 :)

标签: c++ winapi getsystemmetrics


【解决方案1】:

不是准确你问的,但我经常发现这是一个有用的指标:

int FindExtraWindowHeight(HWND h)
{
  RECT w, c;
  GetWindowRect(h, &w);
  GetClientRect(h, &c);
  return (w.bottom - w.top) - (c.bottom - c.top);
}

窗口和客户区的区别。所以这会给你标题栏高度+边框厚度。

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 2010-10-07
    • 2012-02-19
    • 2014-05-17
    相关资源
    最近更新 更多