我有一个dialog宣言在一个view(CMyview)里面,我用(CMyview*)GetParent(), 从此dialog里面取得Myview的指针。
可是我发现我这里取得的只是一个Myview类型的指针,并没有得到指向当前parent view类的对象指针,其中的成员变量的值都不对,请问如何才能够取得指向当前parent view类的对象指针。
可是我发现我这里取得的只是一个Myview类型的指针,并没有得到指向当前parent view类的对象指针,其中的成员变量的值都不对,请问如何才能够取得指向当前parent view类的对象指针。
解决方案 »
- 不带文档和框架类的视图如何进行分割
- 救命啊~~~release配置被我删了啊,怎么弄回来...
- SOS!!! 如何把char、int、long等类型转化成 BYTE 的格式?谢谢!
- 怎样用程序实现一个文件的复制
- 简单问题,如何将CString类型的值转换为void *?
- 土土的问一句,桌面右下角的那堆东西叫什么名字?(专业名称)
- 关于CListBox控件的问题
- vb报错 实时错误‘3001’ 参数类型不正确,或不在可接受的范围之内,或与其他参数冲突
- 关于算法的学习,大大谈谈自已的看法吧。。。
- 请教各位高人,如何在程序执行前,显示一个开机画面
- 奇怪的问题:在vc编辑环境中运行成功,直接运行生成的可执行程序却失败。(注:使用了dll)
- 一个仿MSN及QQ消息提示框显示的问题
在显示对话框 这前设置进去: dlg.m_pView = this;然后在对话框内就可以用了,一般都这样实现, 因为对话框并不是 VIEW 子窗口,所以GetParent出来的不对
BOOL Create(
LPCTSTR lpszTemplateName,
CWnd* pParentWnd = NULL );
方法生成的用(CMyview*)GetParent()才能得到你想得到的view父窗口;
如果只是DoModal,其父窗口并不是CMyview,你得到的只是CMyview强制转换的类型而已;
如果在你dlg中想得到上层父窗口的指针,必须在创建对话框中记录父窗口的指针
然后在你的view中调用这个对话框时候,将父窗口指针付给这个变量CMyDialog类中声明指针变量----------〉
CMyView* m_pView;
CMyView类中-------------------------〉
CMyDialog dlg;
dlg.DoModal;
dlg.m_pView=this;
BOOL CTargetSetDlg::Create()
{
return CDialog::Create(CTargetSetDlg::IDD);
}
可是用(CMyview*)GetParent()并没有得到的view父窗口的对象指针
强制转换:
parent view* pView = (parent view*)GetParent();