从窗口句柄得到菜单句柄(从HWND得到HMENU)
2010-09-25 17:37
405 查看
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++中有关句柄和指针及其转换 1.MFC窗口的句柄和指针的转换 (1) 一般窗口对象都会有一个其对应的句柄变量,所以我们可以取此对象的m_hWnd属性来得到句柄。 (2)
- 【LibUIDK界面库系列文章】得到菜单的菜单窗口句柄
- 已知IE窗口的句柄,如何由此得到IHTMLdocument2接口?
- CWnd 对象怎么和 HWND 窗口句柄相互转化
- 假如想自己写软件的话,可以先FindWindow找到那个窗口的句柄,然后用GetWindowThreadProcessId就可以得到这个窗口的进程ID和线程ID,有了这些ID就可以找到进程名称了。
- 创建进程后得到该进程的主窗口句柄
- 如何获得窗口句柄(HWND )和改变窗口属性
- 怎样得到窗口句柄
- VB6: 通过窗口句柄得到窗口所在程序的名称和路径(实例)
- CWnd 对象怎么和 HWND 窗口句柄相互转化?
- 如何获取控制台窗口句柄 (HWND)
- 如何从窗口句柄得到窗口的指针
- 得到控制台窗口句柄
- [VC++]如何得到桌面窗口的句柄(桌面图标)
- 获取已知窗口名称即Caption的句柄-获取窗口句柄. HWND句柄和HANDLE这两者的区别是什么?
- dll中如何获得调用者的窗口?得到窗口句柄那么DC也就可以得到了!
- 得到窗口句柄的几种方法
- 怎么得到一个分割后的窗口指针或句柄???
- 进程句柄HANDLE获得进程主窗口的句柄HWND