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

so案例: GetMenuBarInfo() win32 function
win32 - GetMenuBarInfo的使用的更多相关文章
- Microsoft Win32 to Microsoft .NET Framework API Map
Microsoft Win32 to Microsoft .NET Framework API Map .NET Development (General) Technical Articles ...
- C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper
前言 在开发应用程序时,通常只让程序运行一个实例.所以,就要判断程序是否已经运行. 下面是我自己在项目中使用到,封装好的帮助类.有 普通的 C# 应用程序 和 Windows CE 和 Windows ...
- java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
JNA 调用 dll 库时,保错: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始 ...
- 初次认识 C# win32 api
第一次接触win32api,刚开始的时候有点迷迷糊糊的. Windows API 就是windows应用程序接口. win api向上就是windows应用程序,向下就是windows操作系统核心. ...
- [老文章搬家] [翻译] 深入解析win32 crt 调试堆
09 年翻译的东西. 原文见: http://www.nobugs.org/developer/win32/debug_crt_heap.html 在DeviceStudio的Debug编译模式下, ...
- Virus.Win32.Virlock.b分析
0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ...
- cocos2d-x 从win32到android移植的全套解决方案
引言:我们使用cocos2d-x引擎制作了一款飞行射击游戏,其中创新性地融入了手势识别功能.但是我们在移植过程中遇到了很多的问题,同时也发现网上的资料少而不全.所以在项目行将结束的时候,我们特地写了这 ...
- Git使用出错:Couldn‘t reserve space for cygwin‘s heap, Win32
今天使用Git在命令行下更新代码遇到了问题,起初觉得是自己安装某软件导致冲突,从网上搜索了一下找到类似问题,成功解决问题. 错误信息如下: E:\storm-sql>git pull origi ...
- ATL封装IE内核启示:使用Win32/ATL建立窗口
开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是 ...
- Win32 OpenProcess打开进程失败,返回5无权限操作
Win32 OpenProcess打开进程失败,返回5无权限操作,相信你会碰到这样的事,在IDE中可以,单独却不可以了,其实这时就需要提权了,否则是无法打开的,OpenProcess提权至Debug即 ...
随机推荐
- MongoDB的安装使用与监控
MongoDB的安装使用与监控 下载 https://www.mongodb.com/try/download/community 我这边习惯于下载 Windows 的 MSI 进行安装 Linux ...
- [转帖]TiUP 命令概览
https://docs.pingcap.com/zh/tidb/stable/tiup-reference TiUP 在 TiDB 生态中承担包管理器的功能,管理着 TiDB 生态下众多的组件,如 ...
- [转帖]Docker-Compose 自动创建的网桥与局域网冲突解决方案
https://zhuanlan.zhihu.com/p/379305319 Docker-Compose 自动创建的网桥与局域网冲突解决方案 当我使用docker-compose的方式部署内网的ha ...
- [转帖]jmeter无图形界面执行测试并生成报告
1.进入jmeter的安装目录,找到bin文件夹,进入这个文件执行以下命名 jmeter -n -t test\xxx.jmx -l test\cli0705.jtl -e -o test\resul ...
- [转帖]PostgreSQL(三) 内存参数优化和原理(work_mem)内存表 pgfincore插件使用方法
1.常用内存参数 1.1 shared_buffers shared_buffers是PostgreSQL用于共享缓冲区的内存,是由8kb大小的块所形成的数组.PostgreSQL在进行更新.查询等操 ...
- [转帖]Linux内核映像vmlinux、Image、zImage、uImage区别
https://zhuanlan.zhihu.com/p/466226177 本文介绍几种常用的Linux内核映像的区别. 一.vmlinux vmlinux:Linux内核编译出来的原始的内核文件, ...
- uni-app 长按事件 事件目标元素 手机运行uni-app
longpress 长按就会触发哈 <view @click="clickTest">点击</view> <view @longpress=" ...
- 原生js判断某个区域的滚动条滚动到了底部
原生js判断某个区域的滚动条滚动到了底部### 讲解==> 关系公式:element.scrollHeight - element.scrollTop === element.clientHei ...
- 【0基础学爬虫】爬虫基础之HTTP协议的基本原理介绍
大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶.逆向相关文章,为实现从易到难全方位覆盖,特设[0基础学爬 ...
- SqlSugar Code First
注意点 1.SqlSugar Code First可以快速开发,使用起来也要分阶段使用,比如早期随便搞,中后期需要禁用一些功能保证数据安全(标题6和7 ) 2.数据库账号需要有比较高的权限, 3. ...