VC中的自定义消息(收藏)

原创 2004年12月29日 16:19:00
Windows 应用程序所要做的每项工作几乎都是基于消息处理的, Windows 系统消息分为常用 Windows 消息,控件通知消息和命令。然而,有时我们需要定义自己的消息来通知程序什么事情发生了,这就是用户自定义消息。 ClassWizard 并没有提供增加用户自定义消息的功能,所以要使用用户自定义消息,必须手工编写代码。然后 ClassWizard 才可以象处理其它消息一样处理你自定义的消息。具体做法如下详解: 

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

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

   LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam){// TODO: 处理用户自定义消息 AfxMessageBox(" 处理用户自定义消息 "); 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_MAPEND_MESSAGE_MAP()


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

   VC++ 为程序员提供了一套功能强大、方便快捷的编程工具,它可以帮你方便的生成窗口、菜单等用户界面,可惜就是做出来的东西都一样,没有一点个性。下面,就介绍一些方法,让我们可以按照自己的设计定制出更加符合自己程序风格的窗口。

VC++ 自定义消息学习总结

VC添加自定义消息 http://blog.csdn.net/jinnee_cumtb/article/details/4524375     VC的ClassWizard不允许增加用户自定义消息,所...
  • bcbobo21cn
  • bcbobo21cn
  • 2017年03月31日 21:09
  • 335

VC++如何处理自定义消息

ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。 下面是增加自定义消息的步骤: 第一步:定义...
  • cytj129
  • cytj129
  • 2015年04月24日 17:45
  • 420

vc中用SendMessage自定义消息传递

SendMessage的函数原型为LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); 第一个参数hWnd,...
  • chocolate001
  • chocolate001
  • 2011年07月24日 17:08
  • 5241

添加自定义消息处理

1.PreTranslateMessage PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的。 头文件中重载该函数 virtual BOOL Pre...
  • u014568921
  • u014568921
  • 2015年03月15日 01:02
  • 681

关于自定义消息(注:VS2010与VC6.0是有区别的)

自己定义了消息#define UM_PROGRESS WM_USER+1 响应函数void OnProgress(); 消息映射表这样写ON_MESSAGE(UM_PROGRESS,OnPro...
  • sky_lily_1985
  • sky_lily_1985
  • 2012年05月10日 16:16
  • 1916

VC中的自定义消息

消息映射、循环机制是Windows程序运行的基本方式。VC++ MFC 中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,就遇到了一些困难。在MFC ClassWizard中不允许添...
  • XQGbearingob
  • XQGbearingob
  • 2009年09月03日 12:50
  • 397

VC中自定义消息ON_MESSAGE的用法

在一个对话框mark.cpp中,自定义一个消息, 首先在mark.cpp中添加 #define WM_DATA   WM_USER+100   之后再mark.h里 protected: ...
  • zhang337337
  • zhang337337
  • 2012年07月16日 20:58
  • 3226

VC中的自定义消息

Windows 应用程序所要做的每项工作几乎都是基于消息处理的, Windows 系统消息分为常用 Windows 消息,控件通知消息和命令。然而,有时我们需要定义自己的消息来通知程序什么事情发生了,...
  • goingup
  • goingup
  • 2005年08月17日 23:36
  • 769

VC 向其他进程窗口发送自定义消息

发送端:
  • w839687571
  • w839687571
  • 2014年07月08日 12:34
  • 2837

【VC】中自定义消息实现

在VC项目开发中,很多时候需要自己定义消息进行事务处理。上次也刚好有同学问及,这里综合网络上的一些资料,集中起来供参考。     自定义消息 我们可以通过一下两种方法来自定义一个消息: 1)  ...
  • zhongguoren666
  • zhongguoren666
  • 2011年08月30日 14:39
  • 1394
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC中的自定义消息(收藏)
举报原因:
原因补充:

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