MFC中非模态对话框问题
在主窗口的view类成员函数里面定义一个非模态对话框,CSearchBugDlg*pDlg=newCSearchBugDlg;//局部变量pDlg->Create(IDD...
在主窗口的view类成员函数里面定义一个非模态对话框,
CSearchBugDlg *pDlg=new CSearchBugDlg; //局部变量
pDlg->Create(IDD_SEARCH_BUGDIALOG,this);
为什么(::AfxGetMainWnd()==pDlg->GetParent());这个是true
(this==pDlg->GetParent());这个是false?
pDlg->GetParent()->IsChild(pDlg);这个为什么是false?
pDlg到底是谁的子窗口啊?
而且在其他view类的其它成员函数里面如何获得这个对话框的CWnd指针呢? 展开
CSearchBugDlg *pDlg=new CSearchBugDlg; //局部变量
pDlg->Create(IDD_SEARCH_BUGDIALOG,this);
为什么(::AfxGetMainWnd()==pDlg->GetParent());这个是true
(this==pDlg->GetParent());这个是false?
pDlg->GetParent()->IsChild(pDlg);这个为什么是false?
pDlg到底是谁的子窗口啊?
而且在其他view类的其它成员函数里面如何获得这个对话框的CWnd指针呢? 展开
展开全部
(this==pDlg->GetParent());这个是false?这里这个是true的。
但是pDlg->GetParent()->IsChild(pDlg);确实是false
看这句
A child window is the direct descendant of CWnd if the CWnd object is in the chain of parent windows that leads from the original pop-up window to the child window.
由于dialog是弹出窗口,没有WS_CHILD风格,感觉这里得到的parent应该算是owner,而没有直接的父子关系的。
不知道这么理解对不对。
但是pDlg->GetParent()->IsChild(pDlg);确实是false
看这句
A child window is the direct descendant of CWnd if the CWnd object is in the chain of parent windows that leads from the original pop-up window to the child window.
由于dialog是弹出窗口,没有WS_CHILD风格,感觉这里得到的parent应该算是owner,而没有直接的父子关系的。
不知道这么理解对不对。
更多追问追答
追问
this==pDlg->GetParent()这个确实是false ;:AfxGetMainWnd()==pDlg->GetParent()这个是true;
还有一个问题就是最终目的我要在view类的其它成员函数得到这个dialog的cwnd指针,也就是说在主窗口对子窗口进行操作,这个怎么能做到呢,不考虑把这个指针作为成员变量这个办法。求教
追答
嗯?我还专门在vc里看了,this==pDlg->GetParent()是一样的。哦,你是单文档的可能。
可以用这个dialog的handle,来sendmessage,或者postmessage来。
展开全部
第一个 ::AfxGetMainWnd()==pDlg->GetParent() 为true 证明 该 对话框的创建 是在程序主对话框下创建的
this==pDlg->GetParent() 这里 是false 因为这里是在view 下 返回的view 指针 不是cwnd 指针
只是我个人看法 希望对你有帮助
this==pDlg->GetParent() 这里 是false 因为这里是在view 下 返回的view 指针 不是cwnd 指针
只是我个人看法 希望对你有帮助
追问
可是为什么我明明是用pDlg->Create(IDD_SEARCH_BUGDIALOG,this)创建的窗口pDlg的父窗口不就是this么?而且即便pDlg的父窗口是主窗口::AfxGetMainWnd()->IsChild(pDlg)这个为什么还是false呢?不理解
追答
如果你不放心 还不如 在CSearchBugDlg这个类中 存放一个父窗口指针好
在初始化的时候 将父窗口指针传进去。这样自己心里就有底了。没必要调用mfc的 毕竟微软封装了的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询