从窗口句柄得到菜单句柄(从HWND得到HMENU)
1. 如果HWND是主窗口,可以使用API: GetMenu(...) 得到属于主窗口的句柄,原型如下:
HMENU GetMenu(HWND hWnd);
在MFC中原型如下:
CMenu* GetMenu( ) const;
2. 如果HWND就是菜单的窗口,想直接转换成菜单句柄,则需要发消息了:
消息ID: MN_GETHMENU 0x01E5
头文件: #include <Winuser.h>
但是不知道为什么,我的VC9在vista下总是说没有定义MN_GETHMENU,所以只好手工定义一下了:
#ifndef MN_GETHMENU
#define MN_GETHMENU 0x01E5
#endif
然后通过 SendMessage(...) 的返回值取得对应HMENU。
示例:
// 若 hWnd 是菜单的窗口句柄
HMENU hMenu = (HMENU) SendMessage(hWnd, MN_GETHMENU, 0, 0);
3、
如果获得这样的一个句柄后得怎么使用,请高手在后面帮我编多几句,随便实现一个简单的功能就行了
HWND hwnd;
hwnd=(HWND)::GetMenu(m_hWnd); 你没有目的,获取句柄当然不知道怎么用了!
关于窗口操作的API都需要句柄做为参数,基本上。
比如上面,你得到菜单的句柄后,就可以增加、删除、修改菜单。那如果用上面的来增加菜单得怎么加我只会获取不会使用这就看你想怎么用了
比如你得到一个窗口的句柄
::GetWindowText(hwnd,lpWinTitle,256-1);这样可得到窗口标题 :)谁给个简单的例子来看下我对这个句柄还是很迷惑比如这样子
::PostMessage(hWnd, WM_CLOSE, NULL, NULL)
你要发送WM_CLOSE消息关闭一个窗口,这时你就需要知道要关闭窗口的句柄了,因为PostMessage函数的第一个参数就是一个句柄,你先获得句柄,
然后调用上面的函数,就可以将窗口关闭了用句柄和用指针其实区别大.指针只是把句柄封装了一下方便调用,并且更加面向对像而已。如果用句柄调用的
一般是系统api,而指针调用的是类的方法.指api封装了一下.不知大家意下如何对于没有基础的怎么可能解释清楚?要学编程,应该从基础开始,札札实实
看书。 HWND hwnd;
hwnd=(HWND)::GetMenu(m_hWnd);
可以将这个句柄和一个菜单对象关联,然后就可以通过这个菜单对象对菜单进行操作
如
CMenu::Attach
BOOL Attach( HMENU hMenu );
CMenu m_menu1;
m_menu1.Attach(hwnd);
...................
m_menu1.Detach();//将菜单对象和句柄资源分离,因为菜单对象为局部变量
或者
CMenu::FromHandle
static CMenu* PASCAL FromHandle( HMENU hMenu );
CMenu *m_pMenu2=CMenu::FromHandle(hwnd);//将句柄和菜单指针关联
下面可以通过菜单指针操作菜单
句柄是窗口标识的ID号,有了这个ID号,以后要找他的干活就容易了获取句柄,再FromHandle(),转换为对应的指针,以后
从窗口句柄得到菜单句柄(从HWND得到HMENU)的更多相关文章
- VC 获取控制台窗体的句柄(hWnd)
在Windows中,句柄是一个系统内部数据结构的引用. 比如当你操作一个窗体.或说是一个Delphi窗体时,系统会给你一个该窗体的句柄,系统会通知你:你正在操作142号窗体.就此你的应用程序就能要求系 ...
- MFC 框架技术简单研讨
引用:http://www.cnblogs.com/chinazhangjie/archive/2011/09/20/2181986.html 正文: 第一讲 Win32 App 和 MFC Fr ...
- <Win32_1>深入浅出windows消息机制[转自crocodile_]
上学期学习了Java ,感觉Java写一个窗口真心简单,很易上手,也就难怪很多开发人员选择Java作为自己的开发编程语言.但是由于自身对windows的热爱,让我觉得c.c++语言才是我亲睐的编程语言 ...
- C语言 SDK编程之通用控件的使用--ListView
一.ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件 必须包含comctl32.dll,所以代码中要有头文件: commctrl.h 导入库:comctl32. ...
- windows 编程 —— 子窗口 与 子窗口控件
目录: 子窗口与主窗口的交互 子窗口控件 按钮类别 button 滚动条类别 scrollbar 静态类别 static 编辑框类别 edit 清单方块 listbox 子窗口与主窗口的交互 创建窗 ...
- ListBox 如何改变某行的字体颜色
Option Explicit Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Pri ...
- VC++窗口创建过程,图形绘制,时钟程序
创建窗口步骤: (1)注册窗口类(RegisterClassEx) (2)创建窗口(CreateWindowEx) (3)在桌面显示窗口(ShowWindow) (4)更新窗口客户区(UpdateWi ...
- WINDOWS消息和窗口简介
一.WINDOWS的消息和窗口简介:1.什么是windows在这里我就不介绍了,但是作为一个程序员我们要知道WINDOWS最重要的一个也是我们程序员常用的一个东西就是消息.窗口是以消息的形式输入的,窗 ...
- win32 sdk列表视图控件(ListCtrl或ListView)资料整理
列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon ...
随机推荐
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源
视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...
- 1D Blending
[1D Blending] BlendTree有类型之分,分为1D.2D.本文记录1D. 1D Blending blends the child motions according to a sin ...
- 使用js获取伪元素的content
在测试过程中有时候会遇到反爬虫机制,一些元素会使用伪元素,这样在定位元素的时候会定位不到,这时候就要使用js来帮助定位,获取到想要的元素 下面是部分代码 //使用js获取伪元素的content Str ...
- jQuery源码解读二(apply和call)
一.apply方法和call方法的用法: apply方法: 语法:apply(thisObj,[,argArray]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象. 说明:如果argArr ...
- 开启mongod服务(Mongo运行错误:Failed to connect 127.0.0.1:27017,reason:errno:10061由于目标计算机积极拒绝,无法连接)
问题:Mongo运行错误:Failed to connect 127.0.0.1:27017,reason:errno:10061由于目标计算机积极拒绝,无法连接 在Mongodb的安装过程中碰到的问 ...
- ThreadPoolExecutor的execute源码分析
上一篇文章指出,ThreadPoolExecutor执行的步骤如下: 向线程池中添加任务,当任务数量少于corePoolSize时,会自动创建thead来处理这些任务: 当添加任务数大于corePoo ...
- poj3616(LIS简单变式)
题目链接:http://poj.org/problem?id=3616 思路: 我的第一反应是背包,因为每个interval要么选择要么不选,后来发现状态方程很难写出来.后来想一想发现就是LIS的简单 ...
- Drying
Drying http://poj.org/problem?id=3104 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2 ...
- js深拷贝、浅拷贝
浅拷贝: 只针对当前对象的属性进行拷贝,若当前对象的属性是引用类型时,这个不考虑,不进行拷贝.若属性是引用类型,拷贝后引用的是地址,如果进行更改,会影响拷贝的原对象属性. 深拷贝:针对当前对象的数据的 ...
- count(distinct) 与group by 浅析
x在传统关系型数据库中,group by与count(distinct)都是很常见的操作.count(distinct colA)就是将colA中所有出现过的不同值取出来,相信只要接触过数据库的同学都 ...