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)的更多相关文章

  1. VC 获取控制台窗体的句柄(hWnd)

    在Windows中,句柄是一个系统内部数据结构的引用. 比如当你操作一个窗体.或说是一个Delphi窗体时,系统会给你一个该窗体的句柄,系统会通知你:你正在操作142号窗体.就此你的应用程序就能要求系 ...

  2. MFC 框架技术简单研讨

    引用:http://www.cnblogs.com/chinazhangjie/archive/2011/09/20/2181986.html 正文: 第一讲 Win32 App  和  MFC Fr ...

  3. <Win32_1>深入浅出windows消息机制[转自crocodile_]

    上学期学习了Java ,感觉Java写一个窗口真心简单,很易上手,也就难怪很多开发人员选择Java作为自己的开发编程语言.但是由于自身对windows的热爱,让我觉得c.c++语言才是我亲睐的编程语言 ...

  4. C语言 SDK编程之通用控件的使用--ListView

    一.ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件 必须包含comctl32.dll,所以代码中要有头文件: commctrl.h 导入库:comctl32. ...

  5. windows 编程 —— 子窗口 与 子窗口控件

    目录: 子窗口与主窗口的交互 子窗口控件 按钮类别 button 滚动条类别 scrollbar 静态类别  static 编辑框类别 edit 清单方块 listbox 子窗口与主窗口的交互 创建窗 ...

  6. ListBox 如何改变某行的字体颜色

    Option Explicit Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Pri ...

  7. VC++窗口创建过程,图形绘制,时钟程序

    创建窗口步骤: (1)注册窗口类(RegisterClassEx) (2)创建窗口(CreateWindowEx) (3)在桌面显示窗口(ShowWindow) (4)更新窗口客户区(UpdateWi ...

  8. WINDOWS消息和窗口简介

    一.WINDOWS的消息和窗口简介:1.什么是windows在这里我就不介绍了,但是作为一个程序员我们要知道WINDOWS最重要的一个也是我们程序员常用的一个东西就是消息.窗口是以消息的形式输入的,窗 ...

  9. win32 sdk列表视图控件(ListCtrl或ListView)资料整理

    列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon ...

随机推荐

  1. protocol_link

    蔡燧林:1992—2000年教育部考试中心研究生数学命题组组长现在退休养老.要想办法弄到他编的书(ps:别问怎么弄到,我和我同学都能弄到,你怎么会不能弄到呢)李林:目前在导航独家授课,他能屡屡命中考研 ...

  2. win10为什么不能把文件直接拖拽

  3. mysql 用户及赋予权限

    查询用户: use mysql; select host,user from mysql.user; 创建用户: create user 'mhc'@'%' identified by 'mhc.12 ...

  4. HttpClient 4 和 HttpClient 3 超时

    HttpClient 4: 连接超时: httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,6000 ...

  5. 索引与like优化

    未建索引 mysql> alter table modulestatus drop index imei;Query OK, 457922 rows affected (4.29 sec)Rec ...

  6. Python float() 函数

    Python float() 函数  Python 内置函数 描述 float() 函数用于将整数和字符串转换成浮点数. 语法 float()方法语法: class float([x]) 参数 x - ...

  7. Windows phone Toast消息推送 学习笔记

    简单介绍: Windows phone平台支持三种形式的推送通知: 1.Tile——也就是在Start屏幕程序平铺图标 2.Toast——创建一个显示在当前屏幕中的Toast弹出窗口 3.Raw——有 ...

  8. Coding Contest(费用流变形题,double)

    Coding Contest http://acm.hdu.edu.cn/showproblem.php?pid=5988 Time Limit: 2000/1000 MS (Java/Others) ...

  9. Python 中 (&,|)和(and,or)之间的区别

    &,|)和(and,or)是两组比较相似的运算符,用在“与”/ “或”上,在用法上有些许区别. (&,|)和(and,or)是用来比较两组变量的,格式基本上是: a & ba ...

  10. session以及分布式服务器session共享

    一.session的本质 http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你. 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录 ...