windows学习记录之MFC编程之自定义消息映射
2015-11-11 16:29
597 查看
windows编程离不开的肯定是消息映射机制,当我们需要窗口呈现一些东西就需要向窗口发送一个消息,然后为该消息绑定自定义函数来处理请求。
为自定义消息绑定一个函数有以下步骤:
1、声明和实现消息映射
2、声明一个固定格式的函数
3、在消息映射语句里面将自定义消息和自定义函数进行绑定
4、实现自定义函数
也可以不用绑定函数,可以继承CWnd的WindowProc函数,这个函数会接受窗口的消息
函数原型为:
向窗口发送消息有两个函数SendMessage和PostMessage,这两个函数网上有很多说明,大概意思就是
SendMessage会等待窗口处理完消息以后才会返回,而PostMessage不关心投递的消息是否被处理就直接返回
为自定义消息绑定一个函数有以下步骤:
1、声明和实现消息映射
public: DECLARE_MESSAGE_MAP()//在头文件中声明消息映射 BEGIN_MESSAGE_MAP(CMDMPlatformDlg, CDialogEx)//在cpp文件中实现消息映射 END_MESSAGE_MAP()
2、声明一个固定格式的函数
afx_msg LRESULT OnStartServer(WPARAM wParam, LPARAM lParam);
3、在消息映射语句里面将自定义消息和自定义函数进行绑定
BEGIN_MESSAGE_MAP(CMDMPlatformDlg, CDialogEx) ON_MESSAGE(WND_SERVER_START,OnStartServer) END_MESSAGE_MAP()
4、实现自定义函数
LRESULT CMDMPlatformDlg::OnStartServer(WPARAM wParam, LPARAM lParam) { return 1; }
也可以不用绑定函数,可以继承CWnd的WindowProc函数,这个函数会接受窗口的消息
函数原型为:
protected: //接收窗口消息(.h文件中声明窗口消息函数) virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); //实现窗口消息 LRESULT CMDMPlatformDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WND_SERVER_START: { break; } } }
向窗口发送消息有两个函数SendMessage和PostMessage,这两个函数网上有很多说明,大概意思就是
SendMessage会等待窗口处理完消息以后才会返回,而PostMessage不关心投递的消息是否被处理就直接返回
TWnd_ReceiveData tWndData; tWndData.iThreadID=GetCurrentThreadId(); pTCPSocket->OnRecvCompleted(&tWndData); //向指定窗口发送消息 SendMessage(pSocketManage->m_Hwnd,WND_RECEIVE_DATA,WPARAM(&tWndData),0);
相关文章推荐
- Spring事务配置的五种方式
- 第三章 DispatcherServlet详解 ——跟开涛学SpringMVC
- 下载页面的flash代码
- 获取客户端ip代码
- win编程实践(1)【c++】
- 为什么Java byte 类型的取值范围是-128~127
- Spring 定时任务配置
- Java学习笔记(七)反射及内部类
- 第二章 Spring MVC入门 —— 跟开涛学SpringMVC
- 哈希表的应用(C++实现)
- 朴素法实现矩阵乘法
- groovy中List集合的使用
- 一行代码,打造一个在线编辑器,方便好用
- 用matlab 将图片序列导出视频
- PHP - 文件上传
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC
- python 3 urllib Proxy Authentication Required
- Spring MVC基础
- PHP - 会话控制
- PHP - 表单与验证