和其它消息通信的区别:
WM_* 只用于windows预定义的消息,都有特定的含义;
WM_USER+* 只能用于窗口过程(即通信目标必须是窗口类注册的窗口),否则无效;
WM_COPYDATA 是一个特殊的WM_*消息,但只用于同步通信,必须使用SendMessage。
注册消息:比WM_USER+*更灵活,常用于多个进程同时处理统一个消息(注意是进程而不只是窗口)。
发送方和接收方都需要做的:
// 1、定义注册消息:参数字符串必须在系统内保证唯一
static const UINT WM_CHECK_ITS_ME = RegisterWindowMessage(_T("##DUIVISION_APPLICATION##"));
// 2、定义消息数据结构
// 进程间消息内容的结构定义
struct DUI_INTERPROCESS_MSG
{
TCHAR wAppName[128]; // 应用名
UINT uControlID; // 控件ID
TCHAR wControlName[64]; // 控件名字
UINT uMsg; // 消息
WPARAM wParam; // 参数1
LPARAM lParam; // 参数2
TCHAR wInfo[10240]; // 信息字符串
UINT uDataLen; // 扩展部分长度
};
1、发送方:
BOOL SendInterprocessMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, CString strAppName, CString strInfo)
{
// number of characters in memory-mapped file
const DWORD dwMemoryFileSize = sizeof(DUI_INTERPROCESS_MSG);
// memory-map

&spm=1001.2101.3001.5002&articleId=105284900&d=1&t=3&u=8be1a19a2e3647b288034e4f7583b875)
2280

被折叠的 条评论
为什么被折叠?



