VC++两种可靠方式获取对话框窗口的菜单栏高度(像素)
下面给出两种可靠方式获取对话框窗口的菜单栏高度(像素)。 方式一:GetMenuBarInfo(推荐,拿到该窗口实际菜单栏矩形) - #include <windows.h>
- int GetDlgMenuBarHeight(HWND hWnd)
- {
- MENUBARINFO mbi{};
- mbi.cbSize = sizeof(mbi);
- if (GetMenuBarInfo(hWnd, OBJID_MENU, 0, &mbi)) {
- return mbi.rcBar.bottom - mbi.rcBar.top; // 实际高度(像素)
- }
- return 0; // 无菜单或失败
- }
- // MFC 调用
- int h = GetDlgMenuBarHeight(m_hWnd);
复制代码 方式二:系统度量(全局菜单栏高度)
- int cyMenu = GetSystemMetrics(SM_CYMENU); // 系统当前单行菜单栏高度
复制代码说明 - 对话框必须已附加菜单(LoadMenu/SetMenu),否则 GetMenuBarInfo 返回失败。
- SM_CYMENU 是全局值;带缩放/DPI 时,GetMenuBarInfo 更精准。
|