系统相关功能开发(八)-消息
2017-08-25 17:03
357 查看
1.自定义消息
// 21.8.1(OK) #define WM_MY_MESSAGE WM_USER + 66 // 自定义消息 void CMessageSendSampleDlg::OnButtonSendMymessage() // 发送自定义消息函数 { SendMessage(WM_MY_MESSAGE, NULL, NULL); // 发送自定义消息 } LRESULT CMessageSendSampleDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) // 程序处理函数 { switch (message) // 判断消息类型 { case WM_MY_MESSAGE: WriteLog("接收到WM_MY_MESSAGE消息"); // 接收到用户自定义消息,输出 break; default: break; } return CDialog::WindowProc(message, wParam, lParam); }
2.注册消息
发送void CMessageSendSampleDlg::OnButtonRegmessage() // 注册消息函数 { UINT myMsg = RegisterWindowMessage("LLN's Message Test"); // 注册消息 ::SendMessage(HWND_BROADCAST, myMsg, NULL, NULL); // 发送广播消息 }
接收
BOOL CMessageReceiveSampleDlg::OnInitDialog() { ... myMsg = RegisterWindowMessage("LLN's Message Test"); ... } LRESULT CMessageReceiveSampleDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { if (message == myMsg) WriteLog("接收到使用RegisterWindowMessage函数注册的消息"); return CDialog::WindowProc(message, wParam, lParam); }
3.PostMessage()函数与SendMessage()函数的区别
LRESULT SendMessage/PostMessage(HWND hWnd,//指定接收消息的对话框的句柄
UINT Msg,//指定发送的消息类型
WPARAM wParam,//消息参数
LPARAM lParam);//消息参数
wParam=(WPARAM) (HWND)hwnd;//发送对话框句柄
lParam=(LPARAM) (PCOPYDATASTRUCT) pcds;//结构数据指针
typedef struct tagCOPYDATASTRUCT{
DWORD dwData;//指定发送给接收程序的32位数据
DWORD cbData;//指定lpData参数中指定的数据的长度
PVOID lpData;//指向要传递的数据的指针
}PCOPYDATASTRUCT;
发送
struct MESCONTENT // 消息内容结构 { char sender[50]; // 消息发送者 char content[500]; // 消息内容 }; void CMessageSendSampleDlg::OnButtonSendCopydata() // 通过WM_COPYDATA消息发送数据 { UpdateData(TRUE); // 获取发送数据 CWnd *pWnd=CWnd::FindWindow(NULL, _T("接收WM_COPYDATA消息测试")); // 获取接收对话框 if(pWnd==NULL) // 如果没有检索到接收对话框,则 { WriteLog("接收消息数据的进程未运行"); // 输出错误信息,并 return; // 返回 } MESCONTENT msData={0}; // 定义消息结构变量 strcpy(msData.sender, m_sender.GetBuffer(50)); // 赋值消息发送者 strcpy(msData.content,m_content.GetBuffer(500)); // 赋值消息内容 COPYDATASTRUCT cpd; // 定义发送结构变量 cpd.dwData = 0; 4000 // 发送整数值为0 cpd.cbData = sizeof(msData); // 发送数据的长度 cpd.lpData = &msData; // 发送数据内容 pWnd->SendMessage(WM_COPYDATA, NULL, (LPARAM)&cpd); // 发送WM_COPYDATA消息 }
接收
struct MESCONTENT // 消息内容结构 { char sender[50]; // 消息发送者 char content[500]; // 消息内容 }; BOOL CMessageReceiveSampleDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) // WM_COPYDATA消息处理函数 { MESCONTENT* msData = (MESCONTENT*)pCopyDataStruct->lpData; // 获取消息数据 // 输出消息数据 WriteLog("接收到WM_COPYDATA消息。\r\n发送者=%s;\r\n内容=%s", msData->sender, msData->content); return CDialog::OnCopyData(pWnd, pCopyDataStruct); // 调用基类处理函数 }
相关文章推荐
- 系统相关功能开发(九)-剪贴板
- 系统相关功能开发(二)-磁盘操作
- 系统相关功能开发(四)-应用程序操作
- Smobiler基于.NET框架开发移动应用内部系统—消息列表功能(开发日志六)
- 系统相关功能开发(三)-系统控制与调用
- 系统相关功能开发(五)-系统工具
- 系统相关功能开发(六)-桌面相关
- 系统相关功能开发(七)-系统信息
- iOS开发:手机QQ拖拽消除未读消息特效("一键下班"功能)相关资源汇总
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 即时消息提醒功能改进
- Smobiler基于.NET框架开发移动应用内部系统—消息列表功能(开发日志五)
- 系统相关功能开发(十)-鼠标键盘
- Android开发之深入理解Android 7.0系统权限更改相关文档
- 离线编程系统的功能..记下,开发备用
- 【实战】5-2 用户登录相关功能开发
- Dota2 AI 简易开发教程(二)——英雄出装及其相关功能
- 关于基于sharepoint开发文档管理系统的功能规划
- 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(4)----CSV、Excel、INI文件、独立存储等文件相关
- 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(11)---各种线程相关操作类
- PHP文件系统相关函数的功能详解