
MFC 单文档
我加了个菜单,在VIEW类添加了该响应,可以调出一个对话框。但是我每次调出该对话框的时候,里面的一个EDIT会根据DOC类的某个变量的值的不同而自动给该EDIT不同默认值...
我加了个菜单,在VIEW类添加了该响应,可以调出一个对话框。但是我每次调出该对话框的时候,里面的一个EDIT会根据DOC类的某个变量的值的不同 而自动给该EDIT不同默认值。
问题:1.我知道如果在DOC里添加响应会更方便一些,我想请问比较规范的方式是我这种吗,即在VIEW里写吗?
2.如果用我这种方式,那我如何在我写的这个DIALOG类的初始化中 获取DOC的指针,我试了一下,用在VIEW获取DOC类中指针的方法CMyDoc * pDoc=GetDocument() 报错?
分不多,请不吝赐教
谢谢大家的热心解答,我用一下代码实现了在自定义DIALOG中调用DOC的数据:
CMainFrame * pMainFrm = (CMainFrame *)AfxGetApp()->m_pMainWnd;
CXXXDoc *pDoc=(CXXXX *)pMainFrm->GetActiveDocument();
另外,我调出DIALOG的事件写在VIEW类中,也实现了。可我想在该DIALOG中添加一个BTN(保存数据)事件,那我应该写在哪个类中?
谢谢您的回答 展开
问题:1.我知道如果在DOC里添加响应会更方便一些,我想请问比较规范的方式是我这种吗,即在VIEW里写吗?
2.如果用我这种方式,那我如何在我写的这个DIALOG类的初始化中 获取DOC的指针,我试了一下,用在VIEW获取DOC类中指针的方法CMyDoc * pDoc=GetDocument() 报错?
分不多,请不吝赐教
谢谢大家的热心解答,我用一下代码实现了在自定义DIALOG中调用DOC的数据:
CMainFrame * pMainFrm = (CMainFrame *)AfxGetApp()->m_pMainWnd;
CXXXDoc *pDoc=(CXXXX *)pMainFrm->GetActiveDocument();
另外,我调出DIALOG的事件写在VIEW类中,也实现了。可我想在该DIALOG中添加一个BTN(保存数据)事件,那我应该写在哪个类中?
谢谢您的回答 展开
4个回答
展开全部
1 对,规范的就是view类里面,doc类是专门处理数据的,应该是作为后台。
2 GetDocument函数是VIEW里面的函数,那么你必须先定义视图指针或者变量,用它调用这个函数。
2 GetDocument函数是VIEW里面的函数,那么你必须先定义视图指针或者变量,用它调用这个函数。
更多追问追答
追问
谢谢您的解答。
1.调出菜单中我自己的DIALOG是在VIEW里写,那这个DIALOG之上如果有BTN的响应 那应该写在哪里,还写在VIEW中?
nRet = ComsetDlg.DoModal();
switch(nRet)
{
case IDOK:
// Do something
break;
……
};
这种方式对吗?
2.我在自己的DIALOG的初始化中CSea_MonitorDoc * pDoc =AfxGetMainWnd()->GetActiveView()->GetDocument();报错'GetActiveView' : is not a member of 'CWnd'
追答
1 可以这样调用模态对话框
2 GetActiveView 是CFrameWnd里面的函数,AfxGetMainWnd返回的是CWnd类函数,需要进行强制类型转换为你项目框架类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
2011-04-22
展开全部
1处理数据的话基本应该在doc里面写,不过在view里面也可以
2CMyDoc * pDoc=GetDocument() 应该是可以的,报错的话看你的错误类型是什么了,如果你的这个类是自动加的话,你看看OnDraw函数里面就有这样调用的
不明白可以Q951019915上问我
2CMyDoc * pDoc=GetDocument() 应该是可以的,报错的话看你的错误类型是什么了,如果你的这个类是自动加的话,你看看OnDraw函数里面就有这样调用的
不明白可以Q951019915上问我
追问
好像不对啊,GetDocument()函数是View类的函数;而我是在自己建的DIALOG的类的构造函数中,无法调用。而且我这样也不行:
CXXXDoc * pDoc =AfxGetMainWnd()->GetActiveView()->GetDocument();则报错:
'GetActiveView' : is not a member of 'CWnd'……
追答
额,在对话框里面调用CMyDoc * pDoc=GetDocument() 肯定不行的啊,你不是在view里面调用对话框的吗,可以这样
CDlgA dlg;
dlg.m_pDoc=GetDocument() ;
m_pDoc
是你在对话框中定义的CMyDoc类型的指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CMyDoc * pDoc=(CMyDoc *)GetDocument();
强制转换一下看看~~~
强制转换一下看看~~~
追问
好像不对啊,GetDocument()函数是View类的函数;而我是在自己建的DIALOG的类的构造函数中,无法调用。而且我这样也不行:
CXXXDoc * pDoc =AfxGetMainWnd()->GetActiveView()->GetDocument();则报错:
'GetActiveView' : is not a member of 'CWnd'……
追答
CMainFrame* pMainFrm = (CMainFrame*)this->GetParentFrame();
CXXXDoc *pDc=(CXXXDoc *)pMainFrm->GetActiveDocument();
这样就可以了~~~刚测试过~~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在DIALOG类设置接收要显示和修改数据的公有变量或函数
在view中读取doc,然后写到dialog中,dialog返回后再读取
在view中读取doc,然后写到dialog中,dialog返回后再读取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询