VC中自定义消息实现

原创 2007年09月19日 15:29:00
 
1.方法一
Step 1:使用WM_TASKBARCREATED来确定一个没有被windows本身抢占
的消息值,在想添加消息文件中添加代码:
const UINT WM_USERDEFMSG = ::RegisterWindowMessage(_T("UserDefMsg"));
Step 2:定义消息的处理过程:在处理消息的类(如Dlg类或者MainFrame等)
添加消息处理函数声明:
afx_msg LRESULT OnUserDefMsg(WPARAM wParam,LPARAM lParam);
       在实现文件中添加消息处理实现,这里给出一个实现例子:
LRESULT ××××::OnUserDefMsg(WPARAM wParam,LPARAM lParam)
//××××代表处理该消息的类名
{
       MessageBox("响应了自定义的消息,^_^","自定义消息响应",MB_ICONQUESTION | MB_OK);
       return 0;
}
       Step 3:添加消息处理宏,在处理该消息的类的消息宏中添加自定义消息的宏,即在BEGIN_MESSAGE_MAP代码块中添加代码:
ON_REGISTERED_MESSAGE(WM_USERDEFMSG, OnUserDefMsg)
       自定义消息完毕。
2)  方法二
Step 1:定义消息值,这里不通过RegisterWindowMessage获取,而是自定义方式实现,
在想添加消息文件中添加代码:
#define WM_USERDEFMSG (WM_USER + 101)
       Microsoft推荐自定义消息值至少为WM_USER + 100
       Step 2:同方法一中实现;
       Step 3:同方法一中,但是宏名称改为ON_MESSAGE。
u       发送消息
按照上面方式我们已经自定义了消息,并为该消息实现了简单的处理过程,这里就通过
发送消息获得自定义消息的响应。在要触发自定义消息地方添加代码:
::SendMessage(GetSafeHwnd(),WM_USERDEFMSG,0L,0L);
       这样你就触发了该自定义消息,并将得到提示对话框显示。
下面是第二种增加自定义消息方法的步骤:

第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。

第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。

LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
// TODO: 处理用户自定义消息
...
return 0;
}
第三步:在类头文件的AFX_MSG块中说明消息处理函数:

class CMainFrame:public CMDIFrameWnd
{
...
// 一般消息映射函数
protected:
// {{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
}
第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中。

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

如果用户需要一个整个系统唯一的消息,可以调用SDK函数RegisterWindowMessage并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤同上。

Vc/MFC中自定义消息及其PostMessage触发使用

http://blog.csdn.net/ztz0223/article/details/2058402 http://blog.csdn.net/a8082649/article/details/...
  • lizhenmingdirk
  • lizhenmingdirk
  • 2015年05月26日 18:17
  • 5262

VS2013如何在MFC工程中定义自己的消息映射函数

VS2013环境下,在创建的MFC工程ThreadSendMSG中自定义消息映射函数
  • sharponeyk
  • sharponeyk
  • 2016年04月24日 21:45
  • 1371

利用自定义消息处理函数的WPARAM或LPARAM参数传递指针

原文地址::http://blog.csdn.net/dongfangyu/article/details/4372602 相关网帖 1、VC++的SendMessage函数如何利用wParam ...
  • xqhrs232
  • xqhrs232
  • 2014年02月09日 16:47
  • 1881

VC编程DLL通知应用程序exe通信(使用自定义消息实现)

源文件下载: 1. 用VC创建两个工程,一个工程是DLL的(基于使用MFC的动态链接库的),假设名字为MFC_DLL;另一个是EXE的(基于MFC的应用程序),设工程名为MFC_EXE; 2. MFC...
  • dijkstar
  • dijkstar
  • 2015年09月27日 12:36
  • 1782

vc 自定义消息实现

本案例是根据两个dialog 相互通信总结而来,在两个dialog都设置好后,分为四步实现消息传递: 项目名称为:MFCmiltiWin 主dialog:CMFCmiltiWinDlg 从dia...
  • BlueCY
  • BlueCY
  • 2017年04月13日 11:12
  • 357

vc自定义消息的发送与接收的方法实现

vc自定义消息的发送与接收的方法实现 以下用一个自创的对话框类(MyMessageDlg)向视图类(MessageTestView)发送自定义消息为例,说明这两种不同方法的自定义消息的消息传递的方法一...
  • jyc1228
  • jyc1228
  • 2011年07月28日 22:30
  • 501

VC++自定义消息的发送与接收的方法实现

消息传递的方法一:使用ON_MESSAGE 使用ON_MESSAGE响应消息,必须配合定义消息#define WM_MY_MESSAGE (WM_USER+100) 对于发送消息者-MyMessa...
  • legionmation
  • legionmation
  • 2014年09月01日 19:11
  • 359

利用自定义消息在VC内进行线程间通讯的例子代码

  • 2009年07月15日 22:42
  • 168KB
  • 下载

vc中自定义消息 MFC

  • 2010年04月06日 23:03
  • 167KB
  • 下载

VC6自定义消息WM_USER

  • 2009年10月31日 17:00
  • 4.79MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC中自定义消息实现
举报原因:
原因补充:

(最多只允许输入30个字)