`
wo_deqing
  • 浏览: 64225 次
文章分类
社区版块
存档分类
最新评论

VC中自定义消息实现

 
阅读更多

在VC项目开发中,很多时候需要自己定义消息进行事务处理。上次也刚好有同学问及,这里综合网络上的一些资料,集中起来供参考。

u 自定义消息

我们可以通过一下两种方法来自定义一个消息:

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。

LPESULTCMainFrame::OnMyMessage(WPARAMwParam,LPARAMlParam)
{
//TODO:处理用户自定义消息
...
return0;
}
第三步:在类头文件的AFX_MSG块中说明消息处理函数:

classCMainFrame:publicCMDIFrameWnd
{
...
//一般消息映射函数
protected:
//{{AFX_MSG(CMainFrame)
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msgvoidOnTimer(UINTnIDEvent);
afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);
//}}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中自定义消息的传递

    本篇文章将详细探讨如何在VC中实现自定义消息的传递,以及相关的知识点。 首先,理解消息系统在MFC(Microsoft Foundation Classes)框架中的作用至关重要。MFC是基于Windows的消息驱动模型构建的,每个窗口对象都...

    VC6自定义消息WM_USER

    当标准的消息(如WM_PAINT、WM_MOUSEMOVE等)无法满足特定需求时,开发者可以通过注册并发送自定义消息来实现特定功能。本文将深入探讨在Visual C++ 6.0(简称VC6)环境下如何创建和处理自定义消息,尤其是与WM_USER...

    VC发送自定义消息

    自定义消息是Windows消息机制的一部分,允许开发者扩展系统消息机制,实现特定的功能需求。本篇将详细介绍如何在VC++与MFC中发送和处理自定义消息,以及提供的UserMessageDemo示例。 自定义消息的概念: 在Windows ...

    自定义消息,VC里面 自定义消息的实现,已经运行调式成功

    在Visual C++(VC++)环境中,自定义消息的实现通常涉及到Windows消息队列、消息映射以及消息处理函数等关键概念。 首先,我们来理解一下自定义消息的基本概念。在Windows API中,消息是应用程序之间或应用程序内部...

    vc自定义消息实例

    在这个“vc自定义消息实例”中,我们将探讨如何在VC++环境下创建和处理自定义消息,这对于扩展Windows API功能和实现特定功能是非常有用的。 自定义消息是在Windows消息系统中,程序员为应用程序定义的非标准消息...

    VC一个自定义消息的实例:从一个对话框向另一个对话框发送消息

    这个实例展示了如何在两个对话框之间使用自定义消息进行通信,这对于在复杂的用户界面设计中实现灵活的控制流和数据交换非常有用。在实际开发中,自定义消息可以用于实现更复杂的功能,如组件间的协作、状态同步等。...

    VC中实现自定义消息(源码+文档说明)

    本资源主要关注的是如何在MFC中实现自定义消息,并提供了源代码示例和文档说明。自定义消息是扩展Windows消息系统的一种方式,它允许程序员在应用程序内部或者不同组件之间传递特定的信息。 首先,自定义消息的创建...

    VC中添加响应自定义的消息的代码步骤

    在VC(Visual C++)开发环境中,自定义消息的处理是一项常见且实用的功能,它允许开发者为应用程序添加特定的行为响应,以实现更为复杂和灵活的交互逻辑。下面将详细解析如何在VC中添加并响应自定义消息的具体步骤,...

    VC_自定义消息说明

    以下是对标题"VC_自定义消息说明"及描述中的知识点的详细解释: 1. **定义自定义消息ID**: 自定义消息通常通过预处理器宏定义,如`#define UM_ONDRAWUSER +12`,这里的`UM_ONDRAWUSER`是自定义消息的名称,`+12`...

    从零开始学VC系列教程五.消息机制与自定义消息.rar

    总的来说,理解和掌握VC++中的消息机制与自定义消息是构建高效、用户友好的Windows应用程序的关键。本教程通过实例和详细讲解,将帮助你从零基础开始逐步掌握这一核心技能。Eg5文件可能包含了一系列的示例代码和步骤...

    vc中自定义消息 MFC

    mfc中自定义消息的实现,在vs2005环境下

    从零开始学VC系列教程三.串口通信及自定义消息.rar

    在VC中,自定义消息通常通过`RegisterWindowMessage`函数注册,该函数返回一个唯一的整数值,即自定义消息的ID。然后,可以在窗口过程函数(`WndProc`)中处理这个自定义消息,通过`switch`语句或者`if`判断来区分...

    VC自定义消息进行线程间的通信

    在Visual C++(VC)环境中,我们可以利用自定义消息来实现线程间的通信。本篇文章将详细讲解如何在VC中使用自定义消息来实现在主线程与子线程之间的数据传递。 首先,我们需要了解Windows消息系统的基础。在Windows...

    VC-DEFINE-MESSAGE.rar_vc自定义消息

    文档"VC中自定义消息的方法.doc"可能提供了更详细的步骤和示例代码,而"zzzhes.txt"和"zguso.txt"可能是开发者在实现过程中的一些笔记或临时文件,这些文件名没有直接关联到自定义消息的知识点,但可能包含了一些...

    visual c++ vc自定义消息弹出框MessageBox上有图片,自定义文字大小和颜色,超链接

    总的来说,通过自定义对话框和巧妙使用MFC控件,开发者可以在VC++环境中创建出功能更加强大的消息弹出框,不仅限于基本的文字提示,还可以包含图片、定制的文字样式和超链接,从而提升用户体验。深入理解和熟练运用...

    VC中怎样使用sendmessage自定义消息函数

    ### VC中如何使用`SendMessage`自定义消息函数 在Visual C++ (VC) 的MFC框架中,`SendMessage`函数是一种非常重要的通信机制,用于在不同的窗口之间传递信息。通过自定义消息,开发者能够实现更加灵活和高效的功能...

    VC调用自定义工具条按钮窗口的实现

    在你的自定义按钮类中,你需要定义消息处理函数,这些函数会响应用户的交互。例如,你可以这样定义: ```cpp ON_BN_CLICKED(IDC_MY_BUTTON, OnMyButtonClick) ``` 然后实现这个函数: ```cpp void CMyToolBar::...

    VC++6.0下强大的自定义消息程序的编写

    在Windows编程中,使用Visual C++ 6.0(简称VC++6.0)进行开发时,自定义消息是一种非常实用的技术。它能够帮助程序员更加灵活地控制程序的行为、状态更新以及线程间的通信等。本文将详细介绍如何在VC++6.0环境下...

    VC实现自定义绘图风格代码

    在VC++中,你可以通过继承`CWnd`或`CDC`类来创建自己的绘图类,从而实现自定义的绘图功能。 为了实现绘图风格选择窗口,你需要创建一个新的对话框类,该类包含各种绘图样式的预览区域。这可以通过在资源编辑器中...

    vc2008 自定义表格类

    6. **性能优化**:自定义表格类可能针对大数据量和响应速度进行了优化,例如,可能实现了虚拟化技术,仅加载可见行的数据,从而减少内存消耗和提高性能。 7. **UI设计**:"漂亮"这一标签表明这个表格类在视觉效果上...

Global site tag (gtag.js) - Google Analytics