请教一个问题,在文档-视图结构中,怎样使一个弹出对话框得到Doc类的成员变量?

hdate 2001-12-20 01:48:21
...全文
179 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangby 2001-12-25
  • 打赏
  • 举报
回复
g~~~~~z
hdate 2001-12-21
  • 打赏
  • 举报
回复
很感谢大家,我做好了。是用的use_id(use_id)的方法。改了一些。
大家的方法我都试过了,感谢大家的热心帮助。
sgr0426 2001-12-20
  • 打赏
  • 举报
回复
方法太多了
我就不说了

kingzai 2001-12-20
  • 打赏
  • 举报
回复
我这种方法是可以的,
在CWinApp定义这样一个成员变量:CMyDoc*pMyDoc;
AfxGetApp返回的是CWinApp*,AfxGetApp()->pMyDoc不就可以吗。
要不然用另外一种方法:http://www.csdn.net/expert/Topic/182/182592.shtm
hdate 2001-12-20
  • 打赏
  • 举报
回复
to:kingzai()
AfxGetApp返回的是CWinApp*,但是定义的Doc指针不是它的成员变量,可以这么用吗?不明白。
use_id 2001-12-20
  • 打赏
  • 举报
回复
在其它类中访问Doc用:
(CMainFrm *) pMain = AfxGetMainWnd();
(CMyDoc *) pDoc = (CMyDoc *)pMain->GetActiveDocument();

不能用来找我~~~~ 呵呵~~~ 可难找哟~~~ 我马上辞职了~~~~
kingzai 2001-12-20
  • 打赏
  • 举报
回复
getactivedocument();是你自己写的函数把,如果你不把文档指针赋初值,系统如何知道当前指针指向的内存地址呢
xiaoxiaohan 2001-12-20
  • 打赏
  • 举报
回复
在对话框中定义一个doc指针:

对话框的头文件:
class CMyDoc;
Class CMyDlg : Public CDialog
{
public:
CMyDoc* pDoc;
}
对话框的cpp文件:
#indlude "MyDoc.h"

.......

其它处:

#include "MyDlg.h"

CMyDoc::OnMyDlg()
{
CMyDlg dlg;
dlg.pDoc = getactivedocument();
dlg.DoModel();
}
这样看一看吧,我以前就是这样用的,具体的记不太清楚了。
kingzai 2001-12-20
  • 打赏
  • 举报
回复
在CWinApp定义这样一个成员变量:CMyDoc*pMyDoc;//你的文档类
然后在CMyDoc的构造函数中:AfxGetApp()->pMyDoc=this;
然后在析构函数中: delete AfxGetApp()->pMyDoc;
在对话框中就可以这样用;
AfxGetApp()->pMyDoc->m_Member;
...
hdate 2001-12-20
  • 打赏
  • 举报
回复
请大家帮我看一下好吗?真的很急!!
hdate 2001-12-20
  • 打赏
  • 举报
回复
to:kingzai()
在CWinApp里定义一个指针成员变量,然后在CDocument的构造函数里直接写就可以得到吗?
还有,直接赋值吗?
pDoc->m = XXX?
请说的详细一些,谢谢!
georgehuang 2001-12-20
  • 打赏
  • 举报
回复
要看你是但稳当的还是多稳当的。很容易得到的
hdate 2001-12-20
  • 打赏
  • 举报
回复
我在Dialog的子类里这么写int c = GetActiveDocument()->n;
但是报错说GetActiveDocument没有定义。
请问要包含什么头文件吗?还是其他什么。
用msdn查包含头文件怎么查啊?
hdate 2001-12-20
  • 打赏
  • 举报
回复
to:xcopy(xcopy)
afxgetmainwnd没有getactivedocument这个方法吧。
hdate 2001-12-20
  • 打赏
  • 举报
回复
to:xiaoxiaohan(萧晓寒)
你的方法好像不行。编译是可以通过,但是这样的指针好像没有赋值。
还有,CMyDoc::OnMyDlg()?好像应该是一个CView子类的方法,而不是CMyDoc。
我才疏学浅,请大家多指教。说的不对的请指正。
xcopy 2001-12-20
  • 打赏
  • 举报
回复
大小写忘了
afxgetmainwnd()->getactivedocument()->m;
kingzai 2001-12-20
  • 打赏
  • 举报
回复
只要在CWinApp类里定义一个CDocument的指针(public),然后在CDocument的构造函数中对它赴值就可以了,以后在任何想得到的地方,先调用afxgetapp得到cWinapp的指针,接着访他的cdocument指针就可以了
xcopy 2001-12-20
  • 打赏
  • 举报
回复
这样子试试。
(afxgetmainwnd)->getactivedocument()->m;
m必须是public的。
xiaoxiaohan 2001-12-20
  • 打赏
  • 举报
回复
在对话框中定义一个doc指针:

对话框的头文件:
class CMyDoc;
Class CMyDlg : Public CDialog
{
public:
CMyDoc* pDoc;
}
对话框的cpp文件:
#indlude "MyDoc.h"

.......

其它处:

#include "MyDlg.h"

CMyDoc::OnMyDlg()
{
CMyDlg dlg;
dlg.pDoc = this;
dlg.DoModel();
}

16,551

社区成员

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

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

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