消息的发送可分为 4 种方式。
①同一窗口内收发:消息用宏定义,使用成员函数 PostMessage() 或 SendMessage()
或 SendNotifyMessage() 发送。
②应用程序之间收发:消息用 const int WM_... = RegisterWindowMessage(_T( "... "));
定义,使用 API 函数 ::Postmessage() 或 ::SendMessage() 或 ::SendNotifyMessage()
发送。第一个参数使用HWND_BROADCAST,向其它程序发;使用 NULL,向自己发。
③主窗口向子窗口发:消息用宏定义,使用成员函数 SendMessageToDescendants() 发送。
④子窗口向主窗口发、同一应用程序的窗口之间互发:要使用②的方法。
在发送窗口类中添加成员变量 m_SendToHwnd,想办法将接受窗口成员函数 GetSafeHwnd()
的返回值赋给 m_SendToHwnd。使用②中函数,第一个参数传入 m_SendToHwnd 即可。
如:
C*Dlg dlg1;
C#Dlg dlg2;
dlg1.m_SendtoHwnd = dlg2.GetSafehwnd();
或:
void C*Dlg::***()
{
C#Dlg dlg;
dlg.m_SendtoHwnd = this-> GetSafehwnd();
}