一个基于DOC/VIEW框架的程序中有一个aa对话框,
在aa对话框的OnInitDialog()中,又创建一个无模式对话框BB
m_Dlg_TrigMenu.Create(IDD_DIG_TRIGMENU,this);//m_Dlg_TrigMenu 为已定义 的 bb对话框的类。
在该语句执行后中断,发现m_Dlg_TrigMenu的m_pParentWnd参数为空。
用 m_Dlg_TrigMenu.GetParent()得到的值也不为this的值。
难道m_Dlg_TrigMenu 不是aa 的子对话框吗?
m_Dlg_TrigMenu 的父对话框又是谁呢?如何在bb 对话框中向
aa对话框发消息?
在aa对话框的OnInitDialog()中,又创建一个无模式对话框BB
m_Dlg_TrigMenu.Create(IDD_DIG_TRIGMENU,this);//m_Dlg_TrigMenu 为已定义 的 bb对话框的类。
在该语句执行后中断,发现m_Dlg_TrigMenu的m_pParentWnd参数为空。
用 m_Dlg_TrigMenu.GetParent()得到的值也不为this的值。
难道m_Dlg_TrigMenu 不是aa 的子对话框吗?
m_Dlg_TrigMenu 的父对话框又是谁呢?如何在bb 对话框中向
aa对话框发消息?
或 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();
}
后用TRACE观察this和m_Dlg_TrigMenu.GetParent()的值都是相等
没错啊