-
在MSGDlg.h或者其他头文件中增加自定义自定义消息:#define WM_COUNT_MSG WM_USER+100
-
在MSGDlg.h头文件中添加消息处理函数的声明 afx_msg LRESULT OnCountMsg(WPARAM,LPARAM);
-
在CMSGDlg类实现文件MSGDlg.cpp中的消息映射表中加入自定义消息映射:
BEGIN_MESSAGE_MAP(CMSGDlg, CDialog)
ON_WM_PAINT()
ON_MESSAGE(WM_COUNT_MSG,&CMSGDlg::OnCountMsg) // OnCountMsg是自定义的消息处理函数,可以在这个函数里面进行自定义的消息处理代码
END_MESSAGE_MAP()
4,在MSGDlg.cpp添加函数,用来接受sendmessage传过来的消息
LRESULT CMFCTestDlg::OnCountMsg(WPARAM wParam, LPARAM lParam)
{
CString cs(to_string(wParam).c_str());
MessageBox(cs);
return 0;
}
5,在自定义函数中TestSendMessage.cpp中添加#define WM_COUNT_MSG WM_USER+100
6,利用findWindow() 来获取MFC窗口的句柄,这里用类名的方式,这个类名的获取方式,可以VS2019——工具-Spy++ ——#32770 是主窗口的类名。
#include "pch.h"
#include "TestSendMessage.h"
#include<windows.h>
#define WM_COUNT_MSG WM_USER+100
void TestSendMessage::tt()
{
HWND hWnd =::FindWindow("#32770", NULL);
int i = 0;
while (i<100)
{
if (hWnd != NULL)
{
::SendMessage(hWnd, WM_COUNT_MSG, i, 0);
}
i++;
Sleep(10);
}
}
6,利用findWindow() 来获取MFC窗口的句柄,这里用窗口标题的方式
#include "pch.h"
#include "TestSendMessage.h"
#include<windows.h>
#define WM_COUNT_MSG WM_USER+100
void TestSendMessage::tt()
{
HWND hWnd =::FindWindow(NULL, "wqcc");
int i = 0;
while (i<100)
{
if (hWnd != NULL)
{
::SendMessage(hWnd, WM_COUNT_MSG, i, 0);
}
i++;
Sleep(10);
}
}
说明:如果是TabPage控件的子窗口,就没有窗口标题,这时候需要先获得子窗口的父亲,再去访问子窗口,包括SendMessage()也只能发给父亲窗口,然后再通过父亲发送给子窗口