win32 – GetMenuBarInfo的使用

MSDN文档介绍GetMenuBarInfo是用来检索有关指定菜单栏的信息。

假如有个需求是要找到菜单下拉菜单的矩形大小,该怎么做呢?

最简单的方法就是获取菜单栏的句柄,然后将句柄作为参数传给GetMenuBarInfo函数。

 HWND myhWnd = FindWindowW(L"#32768", nullptr);

#32768是菜单栏的类,见:About Window Classes

GetMenuBarInfo中有我们需要的PMENUBARINFO结构体参数,结构体中有下拉菜单的矩形大小

typedef struct tagMENUBARINFO {
  DWORD cbSize;
  RECT  rcBar;
  HMENU hMenu;
  HWND  hwndMenu;
  BOOL  fBarFocused : 1;
  BOOL  fFocused : 1;
  BOOL  fUnused : 30;
} MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO;

rcBar:The coordinates of the menu bar, popup menu, or menu item.

部分代码:

case WM_MENUSELECT:
    {
        HWND myhWnd = FindWindowW(L"#32768", nullptr);
        int err = GetLastError();
        GetMenuBarInfo(myhWnd, OBJID_CLIENT, 0, &minfo);
        int w = minfo.rcBar.right - minfo.rcBar.left;
        int h = minfo.rcBar.bottom - minfo.rcBar.top;
        wchar_t szBuff[64];
        wchar_t W[10];
        wchar_t H[10];
        wsprintf(szBuff, L"%p ", myhWnd);   
        wsprintf(W, L"%d ", w);
        wsprintf(H, L"%dn", h);
        OutputDebugStringW(szBuff); 
        OutputDebugStringW(W);
        OutputDebugStringW(H);
    }
    break;

结果:

win32 - GetMenuBarInfo的使用

so案例: GetMenuBarInfo() win32 function

原文链接: https://www.cnblogs.com/strive-sun/p/14628781.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    win32 - GetMenuBarInfo的使用

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404632

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月25日 下午4:39
下一篇 2023年4月25日 下午4:39

相关推荐