vc中怎么使用SendMessage自定义消息函数:
SendMessage的基本结构如下:
SendMessage(
HWND hWnd, //消息传递的目标窗口或线程的句柄。
UINT Msg,//消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,)
WPARAM wParam, //参数1 (WPARAM 其实是与UINT是同种类型的,
//在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。
LPARAM lParam); //参数2
其中一些参数的由来如下:
//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;
例如可以用以下语句:
::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);
这里我发送的消息是本窗体接收的,所以句柄用:this->m_hWnd
这里的消息类别WM_MY_DOSOME就是我自定义的,
在接收消息的窗体或线程所在的头文件里:
#define WM_MY_DOSOMEWM_USER+1// do something
当然你还可以定义更多如:
#define WM_DOOTHERWM_USER+2// do other表示要做一些事情。
到这里,可能大家还是对消息类别有点模糊,不要担心,我下面很快就讲到。
我们发了一个消息出去,那么接收方要能识别这个消息是干什么,就是通过消息类别来区分,
并且开始去做这个消息对应要处理的事情。如下:
一:编写一个事情:
我们在接收窗体里定义一个这样的事情(过程),
afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
{
MessageBox("收到消息了,我要开始做一些事情了。","收到",MB_OK);
//可以运用iParam1,iParam2 来做一些事情。
return 0;
}
这个事情有3点大家要注意,非常重要:
1:使用了afx_msg,并且要将afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
改写到头文件的
//{{AFX_MSG
//。。。改写到这里,颜色会变成灰的。这一点非常重要。
//}}AFX_MSG
2:参数有2个,WPARAM iParam1,LPARAM iParam2,哪怕没有东西传进来也要写,不然会吃苦头的,vc里不会提醒你少写了一个,
但一些莫名奇妙的事情会发生。
3:类型用 LRESULT,完了要return 0;
二:让接收方知道什么时候做这个事情:
我们在
//{{AFX_MSG_MAP
//。。。这里写上
ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)
//如果还有其他消息就再写一个
ON_MESSAGE(WM_DOOTHER,DoOther)
//}}AFX_MSG_MAP
到这里,当你用SendMessage,发了一个WM_MY_DOSOME类型的消息过来的时候,
接收方就会去做DoSomeThing(WPARAM iParam1,LPARAM iParam2)
发了一个WM_DOOTHER类型的消息过来的时候,
接收方就会去做DoOther(WPARAM iParam1,LPARAM iParam2)当然,这里DoOther我还没有定义,
这样就是一个完整的消息发送与接受过程,我没有详细讲参数,iParam1,因为还没有用到很复杂的情况,
大家要是有心得我们可以一起提高。
分享到:
相关推荐
### VC中如何使用`SendMessage`自定义消息函数 在Visual C++ (VC) 的MFC框架中,`SendMessage`函数是一种非常重要的通信机制,用于在不同的窗口之间传递信息。通过自定义消息,开发者能够实现更加灵活和高效的功能...
在代码中,我们可以通过`PostMessage`或`SendMessage`函数向窗口发送自定义消息。例如: ```c++ PostMessage(hwnd, WM_MYCUSTOMMSG, wParam, lParam); ``` 其中,`hwnd`是接收消息的窗口句柄,`wParam`和`...
本文将深入探讨`SendMessage`函数的用法,以及如何在VC++环境中自定义消息并处理它们。 首先,`SendMessage`函数的基本结构如下: ```cpp SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); ``` ...
2. 发送自定义消息:在C++代码中,你可以使用`SendMessage`函数发送自定义消息,如: ```cpp WPARAM wParam = 0; // 可选参数 LPARAM lParam = 0; // 可选参数 SendMessage(hWndRecipient, MY_CUSTOM_MESSAGE, ...
本篇文章将详细探讨如何在VC中实现自定义消息的传递,以及相关的知识点。 首先,理解消息系统在MFC(Microsoft Foundation Classes)框架中的作用至关重要。MFC是基于Windows的消息驱动模型构建的,每个窗口对象都...
在`Dialog1`中,当用户触发某种操作时(比如点击一个按钮),`Dialog1`会使用`SendMessage`函数发送自定义消息`WM_MY_CUSTOM_MSG`给`Dialog2`。`Dialog2`的窗口过程或消息映射需要能识别并处理这个消息。 例如,在`...
在这个“vc自定义消息实例”中,我们将探讨如何在VC++环境下创建和处理自定义消息,这对于扩展Windows API功能和实现特定功能是非常有用的。 自定义消息是在Windows消息系统中,程序员为应用程序定义的非标准消息...
SendMessage的基本结构如下... //在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。 LPARAM lParam); //参数2 其中一些参数的由来如下: //typedef unsigned int UINT; //typedef UINT WPARAM; //typedef L
以下是对标题"VC_自定义消息说明"及描述中的知识点的详细解释: 1. **定义自定义消息ID**: 自定义消息通常通过预处理器宏定义,如`#define UM_ONDRAWUSER +12`,这里的`UM_ONDRAWUSER`是自定义消息的名称,`+12`...
3. **发送自定义消息**:在需要发送自定义消息的地方,可以使用`PostMessage`或`SendMessage`函数。例如: ```cpp PostMessage(hWnd, myCustomMessage, wParam, lParam); ``` 或者 ```cpp SendMessage(hWnd, ...
在VC(Visual C++)开发环境中,自定义消息的处理是一项常见且实用的功能,它允许开发者为应用程序添加特定的行为响应,以实现更为复杂和灵活的交互逻辑。下面将详细解析如何在VC中添加并响应自定义消息的具体步骤,...
"VC-DEFINE-MESSAGE.rar_vc自定义消息"这个压缩包文件,显然包含了关于如何在Visual C++(简称VC)环境中创建和使用自定义消息的教程或参考资料。下面我们将深入探讨这一主题。 首先,让我们了解什么是自定义消息。...
自定义消息的发送通常使用`PostMessage`或`SendMessage`函数。`PostMessage`是非同步的,消息会被放入队列等待处理,而`SendMessage`是同步的,它会等到消息被处理完毕后再返回。 最后,多线程应用程序中,消息处理...
在VC(Visual C++)中实现自定义事件的编程是一个重要的技能,特别是在开发Windows应用程序时。自定义事件允许程序员扩展标准事件处理机制,创建特定于应用的交互逻辑。本实例将探讨如何在C++中利用MFC(Microsoft ...
接下来,你可以使用`SendMessage`函数在应用程序的不同组件间发送自定义消息。例如: ```cpp // 假设hWnd是接收方窗口的句柄 SendMessage(hWnd, MY_CUSTOM_MESSAGE, wParam, lParam); ``` 在这个过程中,`wParam`...
### VC++6.0下强大的自定义消息程序的编写 #### 概述 在Windows编程中,使用Visual C++ 6.0(简称VC++6.0)进行开发时,自定义消息是一种非常实用的技术。它能够帮助程序员更加灵活地控制程序的行为、状态更新以及...
下面将详细讲解如何在VC++中使用自定义消息响应函数`PostMessage`,以及与`SendMessage`的区别。 首先,自定义消息通常是在`resource.h`文件中定义的,例如: ```cpp #define WM_MY_MESSAGE WM_USER + 100 // 定义...