MFC中自定义消息的一般流程
2011-11-10 18:05
399 查看
1. 定义自己的消息值。一般形式为
2. 定义该消息的响应函数。形式应该为:
其中完成自己想要完成的功能。
3. 将两者绑定起来。BEGIN_MESSAGE 与 END_MESSAGE 宏之间,加入:
4. 在合适的地方发出该消息:
a.如托盘程序,是将xxxx与消息绑定
b.如监听目录程序,在有新文件加入时,调用PostMessage()方法
#define WM_MYMESSAGE (WM_USER + 100)
2. 定义该消息的响应函数。形式应该为:
LRESULT CYourClass::OnMyMessage(WPARAM wParam, LPARAM lParam){}
其中完成自己想要完成的功能。
3. 将两者绑定起来。BEGIN_MESSAGE 与 END_MESSAGE 宏之间,加入:
BEGIN_MESSAGE_MAP(CMainFrame, CBCGPMDIFrameWnd) ..... ON_MESSAGE(WM_MYMESSAGE, OnMyMessage) .... END_MESSAGE_MAP()
4. 在合适的地方发出该消息:
a.如托盘程序,是将xxxx与消息绑定
b.如监听目录程序,在有新文件加入时,调用PostMessage()方法
//托盘程序 //设定托盘通知数据结构 NOTIFYICONDATA tnd; tnd.uCallbackMessage=WM_TRAY; tnd.cbSize=sizeof(NOTIFYICONDATA); tnd.hWnd=this->m_hWnd; tnd.uID=IDR_MAINFRAME;//IDR_MSPMfrdasTYPE; tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP|NIF_INFO; ...
//监听程序 void CMonitorDirFiles::getCurrentFileList() { //---------------判断有无新文件-------------------// vector<string> fileList; getCurrentFileList(fileList); string fname; BOOL foundFlag = FALSE; int count = 0; //----------判断有无新文件------------// EnterCriticalSection(&MsgCriticalSection); for (int i = 0; i < (int)fileList.size(); i++) { fname = fileList[i]; foundFlag = FALSE; for (int j = 0; j < (int)m_listExistFile.size(); j++) { if (fname == m_listExistFile[j]) { foundFlag = TRUE; break; } } if (foundFlag) continue; m_listNewFile.push(fname); m_listExistFile.push_back(fname); count++; } LeaveCriticalSection(&MsgCriticalSection); //----------判断有无新文件------------// //---------------判断有无新文件-------------------// if (count > 0 && m_hWnd != NULL) { //发送消息 PostMessage(m_hWnd, m_nMsg, NULL, NULL); } }
相关文章推荐
- MFC 自定义消息的一般过程
- MFC 自定义消息的一般过程
- MFC 自定义消息的一般过程
- MFC自定义消息 消息映射的编写流程
- MFC模态对话框和非模态对话框及副窗口调用主窗口控件 自定义消息发送
- MFC中在工作线程下画图(自定义消息的发送)
- MFC自定义消息
- MFC对话框应用程序添加自定义消息
- MFC对话框自定义消息映射的方法
- 在MFC中使用自定义的消息
- 如何在MFC对话框之间自定义消息传递
- MFC自定义消息
- MFC 自定义消息 和 子对话框 父对话框 发送消息
- MFC消息处理流程概述 .
- VC/MFC中如何自定义消息
- MFC中自定义消息
- MFC中让自定义的类能响应消息
- 再探MFC(七)用户自定义消息
- MFC中用户自定义类响应自定义消息
- MFC自定义消息没有驱动消息响应函数的问题