Mfc 从子窗口获取消息

Mfc 从子窗口获取消息,mfc,Mfc,我想从子窗口获取消息。我做不到。请帮帮我。 我想要检索另一个子窗口发送的消息。 这里,用户定义的消息是常量510,我在OnGirish()中处理它 //WndSecond.cpp:实现文件 // 您应该使用来定义消息。并且,使用ON_REGISTERED_MESSAGE宏来处理它。仅当您需要发送进程间消息时才需要RegisterWindowMessage,否则值高于WM_USER/WM_APP的常量就可以了。在MFC应用程序UI线程中,直接调用GetMessage()是“永远”正确的。MFC框架

我想从子窗口获取消息。我做不到。请帮帮我。 我想要检索另一个子窗口发送的消息。 这里,用户定义的消息是常量510,我在OnGirish()中处理它

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


您应该使用来定义消息。并且,使用ON_REGISTERED_MESSAGE宏来处理它。

仅当您需要发送进程间消息时才需要RegisterWindowMessage,否则值高于WM_USER/WM_APP的常量就可以了。在MFC应用程序UI线程中,直接调用GetMessage()是“永远”正确的。MFC框架处理消息队列本身,并将消息分派到windows。要将消息发送到特定窗口,请使用::SendMessage或::PostMessage(视情况而定),并将receivers窗口句柄作为第一个参数,然后在消息映射中使用ON_message。处理程序
LRESULT func(WPARAM,LPARAM)的原型

@rrirower-非常感谢您的帮助。我希望您以后能再次帮助我。我们可以使用ON_消息处理程序来定义用户定义的消息,并使用函数afx_msg LRESULT function_name(WPARAM,LPARAM)来处理;WPARAM和LPRAM将由用户定义。-1
RegisterWindowMessage
是错误的工具。如果您同时控制代码发送和接收消息,请在
WM_APP+x
范围内使用静态定义的消息标识符。如果您是接收窗口窗口类的实现者,请使用
WM_USER+x
范围内的消息。
#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); 
}