MFC总结(4)---MFC中如何使用子控件向父控件发送自定义消息
2015-10-24 20:17
671 查看
准备工作:
需求:
我们现在想右键点击ListConsole 上的item,弹出Memu菜单,当选中Menu菜单后,对选中的进程进行处理。
我这里使用的是,子控件向父控件发送自定义消息解决。
子控件---ListConsole
父控件---TabConsole
步骤:
1、在工程中的stdafx.h文件中定义一些用于判断是何种消息宏
2、在子控件中给各个Munu添加事件,下面以刷新按钮作为介绍,添加COMMAND 事件
然后添加发送到父控件的消息 ,代码 如下:
这里有两种做法;
a、使用API方式
b、使用MFC方式
GetParent()->SendMessage( WM_USER_PROC_FLUSH, 0, (LPARAM)WM_USER_PROC_FLUSH);
3、在父控件中添加 虚函数 WindowProc,在这里就可以接受到子控件发送过来的消息,并进行处理
相关代码
http://download.csdn.net/detail/obuyiseng/9209957
需求:
我们现在想右键点击ListConsole 上的item,弹出Memu菜单,当选中Menu菜单后,对选中的进程进行处理。
我这里使用的是,子控件向父控件发送自定义消息解决。
子控件---ListConsole
父控件---TabConsole
步骤:
1、在工程中的stdafx.h文件中定义一些用于判断是何种消息宏
//进程菜单操作 #define WM_USER_PROC_FLUSH (WM_USER + 4) //刷新 #define WM_USER_PROC_THREAD (WM_USER + 5) //线程 #define WM_USER_PROC_MODULE (WM_USER + 6) //模块 #define WM_USER_PROC_KILL (WM_USER + 7) //杀死进程 #define WM_USER_PROC_OUTFILE (WM_USER + 8) //导入文件
2、在子控件中给各个Munu添加事件,下面以刷新按钮作为介绍,添加COMMAND 事件
然后添加发送到父控件的消息 ,代码 如下:
这里有两种做法;
a、使用API方式
::SendMessage(GetParent()->m_hWnd, WM_USER_PROC_FLUSH, 0, (LPARAM)WM_USER_PROC_FLUSH);
b、使用MFC方式
GetParent()->SendMessage( WM_USER_PROC_FLUSH, 0, (LPARAM)WM_USER_PROC_FLUSH);
void CMyListCtrl::MyProcessFlush() { // TODO: 在此添加命令处理程序代码 //使用的window //::SendMessage(GetParent()->m_hWnd, WM_USER_PROC_FLUSH, 0, (LPARAM)WM_USER_PROC_FLUSH); //使用的是mfc GetParent()->SendMessage( WM_USER_PROC_FLUSH, 0, (LPARAM)WM_USER_PROC_FLUSH); } void CMyListCtrl::MyProcessModule() { // TODO: 在此添加命令处理程序代码 GetParent()->SendMessage(WM_USER_PROC_MODULE, 0, (LPARAM)WM_USER_PROC_MODULE); } void CMyListCtrl::MyProcessThread() { // TODO: 在此添加命令处理程序代码 ::SendMessage(GetParent()->m_hWnd, WM_USER_PROC_THREAD, 0, (LPARAM)WM_USER_PROC_THREAD); } void CMyListCtrl::MyProcessKill() { // TODO: 在此添加命令处理程序代码 ::SendMessage(GetParent()->m_hWnd, WM_USER_PROC_KILL, 0, (LPARAM)WM_USER_PROC_KILL); } void CMyListCtrl::MyProcessOutFile() { // TODO: 在此添加命令处理程序代码 ::SendMessage(GetParent()->m_hWnd, WM_USER_PROC_OUTFILE, 0, (LPARAM)WM_USER_PROC_OUTFILE); }
3、在父控件中添加 虚函数 WindowProc,在这里就可以接受到子控件发送过来的消息,并进行处理
LRESULT CProcessDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: 在此添加专用代码和/或调用基类 switch (message) { case WM_USER_PROC_FLUSH: MessageBox(_T("WM_USER_PROC_FLUSH"), 0, 0); break; case WM_USER_PROC_THREAD: MessageBox(_T("WM_USER_PROC_THREAD"), 0, 0); break; case WM_USER_PROC_MODULE: MessageBox(_T("WM_USER_PROC_MODULE "), 0, 0); break; case WM_USER_PROC_KILL: MessageBox(_T("WM_USER_PROC_KILL "), 0, 0); break; case WM_USER_PROC_OUTFILE: MessageBox(_T("WM_USER_PROC_OUTFILE "), 0, 0); break; } return CDialogEx::WindowProc(message, wParam, lParam); }
相关代码
http://download.csdn.net/detail/obuyiseng/9209957
相关文章推荐
- #在蓝懿学习iOS的日子#第一个练习日
- 1590 - IP Networks
- #include指令
- Cocos2d-JS屏幕适配
- PhoneGap小窥(1)
- 安卓编程问题及解决方法汇总
- BZOJ1021-1030
- 【设计模式】合成复用原则
- php数据库编程:mysql扩展库操作数据库。
- Android四大图片缓存框架之-Fresco之initialize(二)
- 喷水装置-1
- 利用 GregorianCalendar 制作当前月的月历
- Leetcode -- Longest Valid Parentheses
- Light OJ 1148
- (这是水题)pat-1013
- 不是每次做坏事都会被发现之——嵌入式编程中的内存管理
- Raspberry Pi 初始化
- kettle6.0linux安装配置
- pentaho bi server5.4MySQL部署
- C#中部分方法使用的一个细节