发送消息到自定义窗体类

在控件项目中经常要发送一些信息给某个对象,这时就想到了使用窗体消息来传递。虽然有时候传递对象的指针也是可行的,但他往往没有传递句柄来的更方便,因为传递指针需要引入头文件,头文件相互引入比较多时,管理上会比较混乱。

1.创建一个对话框工程,工程名称“发送消息”

2.添加一个“MFC类”,类名称为CRevMessage,基类选择CWnd

3.在RevMessage.h中添加自定义消息

#define WM_MY_EVENT WM_USER+1

4.在CRevMessage类中添加消息映射函数afx_msg LRESULT DispatchMsg(WPARAM wParam,LPARAM lParam);

头文件:

#pragma once

#define WM_MY_EVENT WM_USER+1
// CRevMessage

class CRevMessage : public CWnd
{
	DECLARE_DYNAMIC(CRevMessage)

public:
	CRevMessage();
	virtual ~CRevMessage();

protected:
	DECLARE_MESSAGE_MAP()

public:
	afx_msg LRESULT DispatchMsg(WPARAM wParam,LPARAM lParam);
};

源文件:

// RevMessage.cpp : 实现文件
//

#include "stdafx.h"
#include "发送消息.h"
#include "RevMessage.h"


// CRevMessage

IMPLEMENT_DYNAMIC(CRevMessage, CWnd)

CRevMessage::CRevMessage()
{

}

CRevMessage::~CRevMessage()
{
}


BEGIN_MESSAGE_MAP(CRevMessage, CWnd)
	ON_MESSAGE(WM_MY_EVENT, &CRevMessage::DispatchMsg)
END_MESSAGE_MAP()



// CRevMessage 消息处理程序

LRESULT CRevMessage::DispatchMsg(WPARAM wParam,LPARAM lParam)
{
	char *str = (char*)lParam;
	int iEvent = (int)wParam;
	return 0;
}

5.在对话框工程中发送消息:

void C发送消息Dlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	CRevMessage msg;
	CRect rect;
	msg.Create(NULL, NULL, 0, rect, this, 111);
	if (NULL != msg.m_hWnd)
	{
		
		char str[100] = "Hello,world!";
		int iEvent = 100;
		//msg.SendMessage(WM_MY_EVENT, (WPARAM)iEvent, (LPARAM)(str));
		::SendMessage(msg.m_hWnd, WM_MY_EVENT, (WPARAM)iEvent, (LPARAM)(str));
	}
}




 

你可能感兴趣的:(自定义消息,自定义窗体类)