打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC线程通过PostMessage发送消息(自定义消息)
userphoto

2022.12.07 湖北

关注

我们举一个例子:

点击按钮创建线程,并把字符串显示在编辑框中

按钮ID:IDC_BUT_CreateThread

Edit编辑框ID:IDC_ShowStr

首先第一步:(第一步都是在xxxxDlg.h文件中)

1.在 xxxxDlg.h文件中定义消息(xxxxDlg.h中xxxx是创建时自己起的名字)

添加:#define WM_MY_MESSAGE (WM_USER+100)  

  1. #if _MSC_VER > 1000
  2. #pragma once
  3. #endif // _MSC_VER > 1000
  4. #define WM_MY_MESSAGE (WM_USER+100)

2.定义消息处理函数

添加:afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

  1. // Implementation
  2. protected:
  3. HICON m_hIcon;
  4. // Generated message map functions
  5. //{{AFX_MSG(CTestPostMessage_3Dlg)
  6. //在此处加入
  7. afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam)
  8. //}}AFX_MSG
  9. DECLARE_MESSAGE_MAP()

第二步:在xxxxDlg.cpp中

1.添加消息映射

在BEGIN_MESSAGE_MAP(xxxxDlg, CDialog)   和     END_MESSAGE_MAP()  中间

添加:ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)

  1. BEGIN_MESSAGE_MAP(xxxxDlg, CDialog)
  2. //{{AFX_MSG_MAP(xxxxDlg)
  3. ON_WM_SYSCOMMAND()
  4. ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) 
  5. ON_WM_PAINT()
  6. ON_WM_QUERYDRAGICON()
  7. ON_BN_CLICKED(IDC_BUT_CreateThread, OnButtonSendMsg)
  8. //}}AFX_MSG_MAP
  9. END_MESSAGE_MAP()

2.实现消息处理函数

要实现你消息映射对应的函数这里叫OnMyMessage

  1. LRESULT   你的类名::OnMyMessage(WPARAM wParam, LPARAM lParam)
  2. // TODO: 处理用户自定义消息 
  3. //... 
  4. CString str = (LPCTSTR)lParam;
  5. SetWindowText(IDC_ShowStr,str);
  6.  delete str;
  7. return 0
  8. }

这样在创建线程的时候将主窗口句柄作为参数传入线程,就可以用 PostMessage传递消息了。

鼠标事件:

在刚才的Button添加响应事件,写入如下代码

  1. void xxxxDlg::OnButtonSendMsg() 
  2. {
  3. CString *p_str=new CString("Hello EveryBody");
  4. CWnd *pWnd=CWnd::FindWindow(NULL,"xxxx(你的文件名字)");//获取目的窗口对象
  5.          ::PostMessage(*pWnd,WM_MY_MESSAGE,0,(LPARAM)(LPCTSTR)p_str);
  6. }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Vc/MFC中自定义消息及其PostMessage触发使用
MFC消息
VS环境下MFC程序出现的问题
vc6.0添加自定义用户消息的基本过程
使用MFC自定义消息
VC自定义消息 传参字符串
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服