我想从子窗口获取消息。我无法做到。请帮助我。 我想要检索另一个子窗口发送的消息。 这里用户定义的消息是常量510,我在OnGirish()
中处理它// WndSecond.cpp:实现文件 //
#include "stdafx.h"
#include "DemoB.h"
#include "WndSecond.h"
// #define ID_GIRISH 500
// CWndSecond
IMPLEMENT_DYNAMIC(CWndSecond, CWnd)
//Constructor
CWndSecond::CWndSecond()
{
}
//Destructor
CWndSecond::~CWndSecond()
{
}
//Message map for this window
BEGIN_MESSAGE_MAP(CWndSecond, CWnd)
ON_WM_PAINT()
ON_COMMAND(510,OnGirish)
END_MESSAGE_MAP()
// CWndSecond message handlers
BOOL CWndSecond::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), CreateSolidBrush(RGB(0,255,0)), NULL);
return TRUE;
}
void CWndSecond::OnPaint()
{
CClientDC dc(this);
}
//Handler for retrieving user defined message sent by another window
void CWndSecond::OnGirish()
{
//Here I want to retrieve the message sent by another child window
GetMessae(510,0,0);
MessageBox(_T("Message"), _T("Hello World"),MB_ICONASTERISK|MB_OK);
}
答案 0 :(得分:0)
您应该使用RegisterWindowMessage来定义消息。并且,ON_REGISTERED_MESSAGE宏来处理它。
答案 1 :(得分:0)
只有在需要发送进程间消息时才需要RegisterWindowMessage,否则值大于WM_USER / WM_APP的常量就可以了。在MFC应用程序UI线程中,直接调用GetMessage()是“永远”权利。 MFC框架处理消息队列本身并将消息分派给您的窗口。要将消息发送到特定窗口,请使用:: SendMessage或:: PostMessage,并将接收器窗口句柄作为第一个参数,并在消息映射中使用ON_MESSAGE。处理程序LRESULT func(WPARAM,LPARAM);