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"%d\n", h);
OutputDebugStringW(szBuff);
OutputDebugStringW(W);
OutputDebugStringW(H);
}
break;

结果:

so案例: GetMenuBarInfo() win32 function

win32 - GetMenuBarInfo的使用的更多相关文章

  1. Microsoft Win32 to Microsoft .NET Framework API Map

    Microsoft Win32 to Microsoft .NET Framework API Map .NET Development (General) Technical Articles   ...

  2. C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper

    前言 在开发应用程序时,通常只让程序运行一个实例.所以,就要判断程序是否已经运行. 下面是我自己在项目中使用到,封装好的帮助类.有 普通的 C# 应用程序 和 Windows CE 和 Windows ...

  3. java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。

    JNA 调用 dll 库时,保错: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始 ...

  4. 初次认识 C# win32 api

    第一次接触win32api,刚开始的时候有点迷迷糊糊的. Windows API 就是windows应用程序接口. win api向上就是windows应用程序,向下就是windows操作系统核心. ...

  5. [老文章搬家] [翻译] 深入解析win32 crt 调试堆

    09 年翻译的东西. 原文见:  http://www.nobugs.org/developer/win32/debug_crt_heap.html 在DeviceStudio的Debug编译模式下, ...

  6. Virus.Win32.Virlock.b分析

    0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ...

  7. cocos2d-x 从win32到android移植的全套解决方案

    引言:我们使用cocos2d-x引擎制作了一款飞行射击游戏,其中创新性地融入了手势识别功能.但是我们在移植过程中遇到了很多的问题,同时也发现网上的资料少而不全.所以在项目行将结束的时候,我们特地写了这 ...

  8. Git使用出错:Couldn‘t reserve space for cygwin‘s heap, Win32

    今天使用Git在命令行下更新代码遇到了问题,起初觉得是自己安装某软件导致冲突,从网上搜索了一下找到类似问题,成功解决问题. 错误信息如下: E:\storm-sql>git pull origi ...

  9. ATL封装IE内核启示:使用Win32/ATL建立窗口

    开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是 ...

  10. Win32 OpenProcess打开进程失败,返回5无权限操作

    Win32 OpenProcess打开进程失败,返回5无权限操作,相信你会碰到这样的事,在IDE中可以,单独却不可以了,其实这时就需要提权了,否则是无法打开的,OpenProcess提权至Debug即 ...

随机推荐

  1. [转帖]10.2 Data Collector与MDW

    10.2 Data Collector与MDW Data Collection功能是SQL SERVER 2005版本提供的数据库监控报表的功能,通过定时地对数据库的语句运行情况,服务器各种资源的监控 ...

  2. [转帖]043、TiDB特性_缓存表和分区表

    针对于优化器在索引存在时依然使⽤全表扫描的情况下,使⽤缓存表和分区表是提升查询性能的有效⼿段. 缓存表 缓存表是将表的内容完全缓存到 TiDB Server 的内存中 表的数据量不⼤,⼏乎不更改 读取 ...

  3. [转帖]ES集群开启X-pack认证

    https://www.cnblogs.com/jclty/p/12913996.html 1.下载 1 # wget https://artifacts.elastic.co/downloads/e ...

  4. [转帖]KingbaseES和Oracle数据类型的映射表

    随着数据库国产化的进程,Oracle向KingbaseES数据库的数据迁移需求也越来越多.数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换. 下表为KingbaseES和 ...

  5. [转帖]Java 认证与授权(JAAS)介绍

    https://www.cnblogs.com/wuyongyin/p/16981469.html JAAS(Java Authentication Authorization Service),即 ...

  6. [转帖]在龙芯3A5000上测试SPEC CPU 2006

    https://baijiahao.baidu.com/s?id=1707601012673143593&wfr=spider&for=pc 注:百家号中,一些文本.代码等的排版格式无 ...

  7. Seata分布式事务 (理论与部署相结合)

    分布式事务--Seata 分布式事务 1. 本地事务与分布式事务 1.1 本地事务 本地事务,也就是传统的单机事务.在传统数据库事务中,必须要满足四个原则: 1.2 分布式事务问题 分布式事务,就是指 ...

  8. Leetcode 42题 接雨水(Trapping Rain Water) Java语言求解

    题目链接 https://leetcode-cn.com/problems/trapping-rain-water/ 题目内容 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱 ...

  9. WPF内嵌Http协议的Server端

    需求:有时后比如WPF,WinForm,Windows服务这些程序可能需要对外提供接口用于第三方服务主动通信,调用推送一些服务或者数据. 想到的部分实现方式: 一.使用Socket/WebSocket ...

  10. Mac 下安装 mysqlclient

    brew install mysql export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/ ...