请问如何在对话框类里调用视图类的变量?

hpsun23 2006-05-31 10:36:59
我想在自定义的对话框类里比如ClistBoxDlg调用视图类里的(public:CSeMapWnd m_MapWnd)m_MapWnd变量,如果我用下面的方法
ClistBoxDlg::ClistBoxDlg(CWnd* pParent /*=NULL*/)
: CDialog(ClistBoxDlg::IDD, pParent)//对话框类的构造函数
{
CMainFrame* pMainWnd=(CMainFrame*)((CCarNaviApp*)AfxGetApp())->m_pMainwnd;//获得视图类的指针
CCarNaviView* pDoc = (CCarNaviView*)pMainWnd->GetActiveView();}//指针类型转换

但是报错:carnaviview.h(22) : error C2143: syntax error : missing ';' before '*'
carnaviview.h(22) : error C2501: 'CCarNaviDoc' : missing storage-class or type specifiers
carnaviview.h(22) : error C2501: 'GetDocument' : missing storage-class or typespecifiers listboxdlg.cpp(25) : error C2039: 'm_pMainwnd' : is not a member of 'CCarNaviApp'

carnaviview.h 第22行的内容是public:CCarNaviDoc* GetDocument();

请问我这样的方法可以吗,如果不可以有什么其他的方法,如果可以,请问错在哪里了呢?
...全文
119 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
soaroc 2006-05-31
  • 打赏
  • 举报
回复
我觉得你的方法应该可行,
另一种方法: 在自定义的对话框中定义一个窗口句并m_hWnd(有了句柄什么都好办,通过FromHandle获取对应指针),用来存储视类的窗口句柄,然后在视类中使用自定义对话框时,将视类的句柄传给他就可以了.比如说:
在视类中点击按钮弹出自定义对话框,在响应函数中
{
ClistBoxDlg listBoxDlg;
listBoxDlg.m_hWnd=m_hWnd;
listBoxDlg.DoModal();
}
快乐鹦鹉 2006-05-31
  • 打赏
  • 举报
回复
只需要在carnaviview.h文件中增加: #include "carnavidoc.h"即可。
m_pMainwnd改为m_pMainWnd
NJHS 2006-05-31
  • 打赏
  • 举报
回复
listboxdlg.cpp(25) : error C2039: 'm_pMainwnd' : is not a member of 'CCarNaviApp'
改为
CMainFrame* pMainWnd=(CMainFrame*)AfxGetApp()->m_pMainwnd;//获得视图类的指针

carnaviview.h(22) : error C2143: syntax error : missing ';' before '*'
是要加上DOC的头文件

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧