windows学习记录之MFC编程之自定义消息映射

windows编程离不开的肯定是消息映射机制,当我们需要窗口呈现一些东西就需要向窗口发送一个消息,然后为该消息绑定自定义函数来处理请求。

为自定义消息绑定一个函数有以下步骤:

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值