MFC 在自定义类中向MFC窗口发送消息

  1. 在MSGDlg.h或者其他头文件中增加自定义自定义消息:#define WM_COUNT_MSG WM_USER+100

  2. 在MSGDlg.h头文件中添加消息处理函数的声明 afx_msg LRESULT OnCountMsg(WPARAM,LPARAM);

  3. 在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);
	}
}

MFC 在自定义类中向MFC窗口发送消息

6,利用findWindow() 来获取MFC窗口的句柄,这里用窗口标题的方式
MFC 在自定义类中向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()也只能发给父亲窗口,然后再通过父亲发送给子窗口

上一篇:在MFC对话框中显示当前时间


下一篇:WM_MOUSELEAVE消息