📄 subject_27852.htm
字号:
<p>
序号:27852 发表者:雪花 发表日期:2003-01-15 21:47:43
<br>主题:请高手指点:)
<br>内容:在对框类中怎样调用文档类中的数据成员<BR><BR>请高手指点!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:晚风也渡 回复日期:2003-01-15 21:59:57
<br>内容:首先获得文档类的指针,如下:<BR>CXXDoc *pDoc = (CXXDoc*)(((CFrameWnd*)AfxGetMainWnd())->GetActiveFrame())->GetActiveDocument();<BR>然后就可以用该指针调用数据成员了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-01-15 22:02:04
<br>内容:可以将文档类指针作为对框类的成员,创建对话框时将要访问的文档对象指针赋给该成员,这样就可以通过该指针成员访问文档中的内容
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:雪花 回复日期:2003-01-16 07:40:19
<br>内容:如能在对话框类的头文件中定义CMyDOC,是可以实现的。<BR><BR>但是在对话框中无法#include "mydoc.h"。<BR><BR>那么CMyDoc *pDoc 如何能定议呢????????????????<BR><BR>希望高手能给予明确指教!!!!!!!!!!!!!!1
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ax 回复日期:2003-01-16 09:04:11
<br>内容:#include "stdafx.h"<BR>#include "ThisApp.h"<BR>#include "TestDlg.h"<BR><BR>#include "ThisDoc.h"<BR>我试了一下可以
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:在水一方 回复日期:2003-01-16 09:11:59
<br>内容: 估计你所说的“在对话框中无法#include <mydoc.h>",是因为这样做以后编译通不过。<BR>倘若如此,建议这样:<BR> 当一个工程中包含许多文件时,文件之间的包含(#include)关系是经常困扰初学者<BR>的一个问题。其实对于这个问题只要按照VC向导所推荐的那样:每个class分成两个文件,<BR>一个是头文件(*.h),只包含这个class的声明;另一个是实现文件(*.cpp),包含这个<BR>class的各个成员的实现。 就可轻易解决,例如:<BR>class CMyDoc 的两个文件:<BR><BR>// mydoc.h, 仅包含CMyDoc的声明<BR>#ifndef _MYDOC_H<BR>#define _MYDOC_H<BR><BR>class CMyDoc : public CDocument<BR>{<BR> void Function();<BR>};<BR><BR>#end if<BR><BR><BR>// mydoc.cpp, 仅包含CMyDoc的实现<BR>#include "stdafx.h"<BR>#include "mydoc.h"<BR><BR>void CMyDoc::Function()<BR>{<BR>}<BR> <BR>又如,class CMyDlg 的两个文件:<BR><BR>// mydlg.h, 仅包含CMyDlg的声明<BR>#ifndef _MYDLG_H<BR>#define _MYDLG_H<BR><BR>class CMyDlg: public CDialog<BR>{<BR> void Function();<BR>};<BR><BR>#end if<BR><BR><BR>// mydlg.cpp, 仅包含CMyDlg的实现<BR>#include "stdafx.h"<BR>#include "mydlg.h"<BR>#include "mydoc.h" // 可能会用到class CMyDoc,故在这儿添加头文件声明<BR><BR>void CMyDlg::Function()<BR>{<BR>}<BR><BR>照上面那样做以后,文件之间的相互包含一般是没问题的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:tjhe 回复日期:2003-01-16 13:06:01
<br>内容:to雪花:<BR>使用指针方式CMyDoc *pDoc,在对话框类头文件中可以使用前向声明,如:<BR><BR>class CMyDoc;<BR>class CMyDlg<BR>{<BR> CMyDlg(CWnd* pParent=NULL,CMyDoc* pDoc=NULL); //增加CMyDoc*参数,构造时传入初始化成员m_pDoc。<BR>.........<BR><BR> CMyDoc* m_pDoc;<BR>};<BR>对话框类cpp文件中:(应包含文档类的头文件)<BR>CMyDlg::CMyDlg(CWnd* pParent,CMyDoc* pDoc): CDialog(CMyDlg::IDD, pParent)<BR>{<BR> m_pDoc = pDoc;<BR>}<BR>建立对话框:<BR><BR>CMyDlg dlg(NULL,pdoc); //pdoc是要访问的文档,需预先取得,然后传入<BR>dlg.DoModel();<BR>.....<BR><BR>如果是访问当前的活动文档,可采用晚风也渡 的方法,此时可以不需要在对话框加入文档类指针成员。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:雪花 回复日期:2003-01-16 17:33:26
<br>内容:Thank you every one!!!!!!<BR><BR>Although I can't undstand 晚风也渡's and ax 's answer;<BR><BR>But I have accept all answer!<BR><BR>Howbeit no change on up!<BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:雪花 回复日期:2003-01-17 07:33:24
<br>内容:I only accept one answer! I am sorry!<BR><BR>Thank everyone again!<BR><BR>I have accept tjhe' answer ,I am sorry another!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:雪花 回复日期:2003-01-17 19:08:04
<br>内容:按tjhe 那样作出现如下错误,为什么!!!!!!!!!!!!!<BR>Compiling...<BR>StudentDlg.cpp<BR>Linking...<BR>MyStudentView.obj : error LNK2001: unresolved external symbol "public: __thiscall CStudentDlg::CStudentDlg(class CView *)" (??0CStudentDlg@@QAE@PAVCView@@@Z)<BR>Debug/MyStudent.exe : fatal error LNK1120: 1 unresolved externals<BR>Error executing link.exe.<BR><BR>MyStudent.exe - 2 error(s), 0 warning(s)<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-01-17 20:51:25
<br>内容: CStudentDlg(CView * pView); //该函数没有实现(无函数定义(实现),只有声明)<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:雪花 回复日期:2003-01-17 21:36:25
<br>内容:谢谢!<BR><BR>CStudentDlg(CView * pView); <BR><BR>是非模态对话框的一个构造函数!!!!!!!<BR><BR>在没加入CMyDoc成员变量前是没有问题的呀:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-01-18 10:18:26
<br>内容:这是头文件包含引起的问题,注意头文件包含的顺序还是很重要。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -