C++学习过程中的点点滴滴

C++编程过程中常见问题及错误

常用链接

统计

联想5G免费网络硬盘

最新评论

如何在程序运行过程中动态加载不同菜单

在网上找了很久都没有找到如何在程序的运行过程中根据用户的操作加载不同菜单的方法。

经过长时间的偿试,终于让我给找到了一种实现方式:
                                                                          使用自定义消息!

在自定义消息的响应函数中实现加载并直接显示菜单。

自定义消息的使用方式如下:

第一步:定义一个消息常量,格式如下:(在头文件中)
#define WM_MY_MESSAGE (WM_USER+123)   //123这个常数可以用大于0的任何数替代

第二步:声明消息处理函数:(在头文件中)
// Generated message map functions
//{{AFX_MSG(CChatDlg)
//}}AFX_MSG
 afx_msg void OnMyMessage(WPARAM wParam,LPARAM lParam);
 DECLARE_MESSAGE_MAP()

第三步:设置消息映射路径(也许这样说不是很恰当):(在源文件中)
BEGIN_MESSAGE_MAP(CChatDlg, CDialog)
 //{{AFX_MSG_MAP(CChatDlg)
 //}}AFX_MSG_MAP
 ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
END_MESSAGE_MAP()

第四步:定义处理自定义消息的函数:(当然也是在源文件中)
void CXXX::OnMyMessage(WPARAM wParam,LPARAM lParam)
{
   ...................
}


第五步:也是最后一步——使用自定义消息
PostMessage(), SendMessage()等函数都可以用来发送消息。

顺便说一下:如果使用消息和定义的消息不在同一个类中,这时就要将消息的定义(也就是第一步的声明)加到你使用的那个地方,以便编译器能够识别。

posted on 2008-09-10 12:31 何靖 阅读(1507) 评论(7)  编辑 收藏 引用

评论

# re: 如何在程序运行过程中动态加载不同菜单 2008-09-10 13:55 大众

如此傻X的结论竟然发表了.....汗颜  回复  更多评论   

# re: 如何在程序运行过程中动态加载不同菜单 2008-09-10 18:16 Z_song

@大众
博主不要理睬ls这种人,学习的过程总是从易到难的  回复  更多评论   

# re: 如何在程序运行过程中动态加载不同菜单 2008-09-10 23:55 陈梓瀚(vczh)

菜单有menu handle和sub item index,很容易辨认。  回复  更多评论   

# re: 如何在程序运行过程中动态加载不同菜单[未登录] 2008-09-11 15:19 feeling

这篇文章有些偏离题意吧,在我看来,楼主应该把如何实现菜单动态加载的部分作为精华展示出来,而不是教大家怎么去做消息映射  回复  更多评论   

# re: 如何在程序运行过程中动态加载不同菜单 2008-09-11 18:50 何靖

@feeling
实现动态菜单的最重要的就是设置其消息映射,这之前要先准备好你要使用的菜单资源。
随便说一下,我写这些不是为了“教”别人怎么做,而仅仅是为了给自己的学习过程留下一些可供参考的东西,当然,也给那些需要的人参考,对于那些高手,可以略过。  回复  更多评论   

# re: 如何在程序运行过程中动态加载不同菜单 2008-09-13 14:27 空明流转

楼主是Title Party?  回复  更多评论   

# re: 如何在程序运行过程中动态加载不同菜单 2009-08-19 10:25 寻开心

不是我想要的东西,是标题把我引来的.  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理