m_pParentWnd和pWndParent有何区别?
没什么区别,一个是形参,一个是成员变量为什么同样的类型我直接用m_pParentWnd就不行,一定要pWndParent赋给他才行?
直接用m_pParentWnd,没被赋值,当然不行SetParentWnd函数又是如何获得父指针的?
在创建Dlg1出来的时候,调用dlg1.SetParentWnd(this);
没什么区别,一个是形参,一个是成员变量为什么同样的类型我直接用m_pParentWnd就不行,一定要pWndParent赋给他才行?
直接用m_pParentWnd,没被赋值,当然不行SetParentWnd函数又是如何获得父指针的?
在创建Dlg1出来的时候,调用dlg1.SetParentWnd(this);
{
m_Dlg1.Create(IDD_DLG1);
m_Dlg1.SetParentWnd(this);
m_Dlg1.ShowWindow(SW_SHOW);
}
bool SetParentWnd(CWnd* pWndParent);
CWnd* m_pParentWnd;
然后在cpp里实现函数:
bool CDlg1::SetParentWnd(CWnd* pWndParent)
{
ASSERT(IsWindow(pWndParent->GetSafeHwnd()));
m_pParentWnd = pWndParent;
return true;
}
再通过按钮触发:
void CDlg1::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_pParentWnd->SendMessage(WM_DEF_OVER,m_Val3,1);
m_pParentWnd->SendMessage(WM_DEF_OVER,m_Val4,2);
}这些都是在CDlg1里面写的。我就是不明白自定义的bool CDlg1::SetParentWnd(CWnd* pWndParent)函数为什么可以得到CMain的指针你有Q吗 ?加我好吗?53035625
在Dlg1.cpp中
extern CMain* g_pMainDlg;
发消息时 ::SendMessage(g_pMainDlg->m_hWnd, WM_DEF_OVER, m_Val3,1);即可,试试看消息函数在CMain中写
这个是CMainDlg的成员变量。。声明为局部变量的话肯定会 点击后子窗口一晃就没了,瞬间显示瞬间消失!局部变量的作用域仅限声明该变量的函数内部。。
你的思路很好,不过你试一下就知道了,两个对话框互传包含头文件是会出错,而且你的那句话“发消息时 ::SendMessage(g_pMainDlg->m_hWnd, WM_DEF_OVER, m_Val3,1);即可”会报错,error C2660: 'CWnd::SendMessageW' : function does not take 4 arguments不让有四个参数