利用VC从DLL传递消息到EXE(2)
消息至此就已经定义完毕,接下来我们就可以激活消息了,就可以用我们前面所说的PostMessage/SendMessage来发送消息了。
如:::PostMessage(hwnd,WM_MSG,0,1);
PostMessage:不用等消息返回。
SendMessage:需要等消息返回。
二、从DLL中传递消息到EXE
在DLL中定义消息和上面的方法很相似,有两点不同的地方:
1、 在DLL和应用程序中两个地方定义相同的消息。
2、 应用程序调用DLL程序之后,需要将应用程序的窗口句柄传递给DLL,以便DLL中的消息返回。
在DLL工程中:
(1) 在stdafx.h头文件中添加消息定义:
#define WM_MSG WM_USER + 102
(2) 添加启动消息的输出函数:
CMessageDLLApp theApp;
//发送消息
extern "C" _declspec(dllexport) void StartSendMessage(HWND hwnd)
{
theApp.SendMessage(hwnd);
}
其中hwnd是接收消息的窗口句柄。
(3) 添加启动消息的实现函数:
在头文件中添加函数声明:
void SendMessage(HWND hwnd);
在CPP文件中添加函数实现
//启动发送消息
void CMessageDLLApp::SendMessage(HWND hwnd)
{
::PostMessage(hwnd,WM_MSG,0,1);
}
在应