⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_55062.htm

📁 vc
💻 HTM
字号:
<p>
序号:55062 发表者:鹏程 发表日期:2003-10-06 09:03:01
<br>主题:得到pOpenDlg变量问题
<br>内容:在视图类CHelloView类的成员中定义了一个无模式对话框的指针变量CMyDlg* pOpenDlg,用于标志无模式对话框CMyDlg的打开与否;当通过菜单打开了CMyDlg后,怎样在CMyDlg的消息函数中得到pOpenDlg变量,并给pOpenDlg赋值呢?<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-10-06 12:30:13
<br>内容:没有人愿意帮我呀?<BR><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>回复者:zry 回复日期:2003-10-06 16:12:44
<br>内容:在CMyDlg中定义一个Public变量CMyDlg*m_pDlg,再重写一个CMyDlg的构造函数,&nbsp;&nbsp;CMyDlg::CMyDlg(CMyDlg*pDlg){m_pDlg = pDlg)<BR>在View类中创建CMyDlg类对象时,使用该构造函数,将pOpenDlg指针传给CMyDlg类的m_pDlg.<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-10-06 18:44:26
<br>内容:谢谢了。<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>
回复者:zry 回复日期:2003-10-07 09:14:24
<br>内容:报什么错?<BR><BR>还可以试试在CMyDlg中用CHelloView* pView =(CHelloView*)((CFrameWnd*)(AfxGetApp()-&gt;m_pMainWnd))-&gt;GetActiveView()来得到指向当前view的指针,然后直接用pView-&gt;pOpenDlg就行了。
<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-10-07 11:07:51
<br>内容:谢谢,使用上述方法如下:<BR>void CRegisterDlg::OnCancel() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add extra cleanup here<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;////CFrameWnd* pFrameWnd=(CFrameWnd*)AfxGetMainWnd();<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;////CView* pView=pFrameWnd-&gt;GetActiveView();<BR>&nbsp;&nbsp;&nbsp;&nbsp;////pView-&gt;m_pOpenDlg=NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//((CRegisterView*)m_pParent)-&gt;m_pOpenDlg=NULL;<BR><BR>/////////////////////////////////////////////////////////////<BR>CRegisterView* pView =(CRegisteView*)((CFrameWnd*)(AfxGetApp()-&gt;m_pMainWnd))-&gt;GetActiveView();<BR>pView-&gt;m_pOpenDlg=NULL;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CDialog::OnCancel();<BR>}<BR><BR>则出现编译信息如下:<BR>--------------------Configuration: register - Win32 Debug--------------------<BR>Compiling...<BR>RegisterDlg.cpp<BR>E:\vc_MFC\register\RegisterDlg.cpp(95) : error C2065: 'CRegisterView' : undeclared identifier<BR>E:\vc_MFC\register\RegisterDlg.cpp(95) : error C2065: 'pView' : undeclared identifier<BR>E:\vc_MFC\register\RegisterDlg.cpp(95) : error C2065: 'CRegisteView' : undeclared identifier<BR>E:\vc_MFC\register\RegisterDlg.cpp(95) : error C2059: syntax error : ')'<BR>E:\vc_MFC\register\RegisterDlg.cpp(96) : error C2227: left of '-&gt;m_pOpenDlg' must point to class/struct/union<BR>Error executing cl.exe.<BR><BR>register.exe - 5 error(s), 0 warning(s)<BR><BR>可是如果在RegisterDlg.cpp中包含文件#include &#34;registerView.h&#34;则出现递归包含,因为在registerView.h中已经包含了#include &#34;registerDlg.h&#34;。因此编译也不能通过。<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>
回复者:zry 回复日期:2003-10-07 17:20:55
<br>内容:在registerView.h中声明class CRegisterDlg;<BR>在registerDlg.h中声明class CRegisterview;
<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-10-07 21:00:39
<br>内容:在registerView.h中声明class CRegisterDlg;<BR>在registerDlg.h中声明class CRegisterview;<BR> <BR>按上述声明后,如果只有一句:<BR>CRegisterView* pView =(CRegisteView*)((CFrameWnd*)(AfxGetApp()-&gt;m_pMainWnd))-&gt;GetActiveView();<BR>则可以通过编译,但是如果再加上下面一句:<BR>pView-&gt;m_pOpenDlg=NULL;<BR>则会出现错误编译:<BR>--------------------Configuration: register - Win32 Debug--------------------<BR>Compiling...<BR>RegisterDlg.cpp<BR>E:\vc_MFC\register\RegisterDlg.cpp(98) : error C2027: use of undefined type 'CRegisterView'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E:\vc_MFC\register\RegisterDlg.cpp(21) : see declaration of 'CRegisterView'<BR>E:\vc_MFC\register\RegisterDlg.cpp(98) : error C2227: left of '-&gt;m_pOpenDlg' must point to class/struct/union<BR>Error executing cl.exe.<BR><BR>register.exe - 2 error(s), 0 warning(s)<BR><BR>这个问题好象很顽固,仅仅一个CRegisterView类中的变量,但是在RegisterDlg类中就如此难为他赋值。 呜呼!!!好奇怪的MFC语言呀!!!<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>
回复者:zry 回复日期:2003-10-08 09:48:09
<br>内容:奇怪,不应该报错啊,我都没问题。<BR>你试试clean一次,从新编译一次。
<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-10-08 11:38:39
<br>内容:我用了Rebuild All,但还是报上面的两个错。<BR><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>
回复者:zry 回复日期:2003-10-08 11:43:01
<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-10-08 12:19:48
<br>内容:非常感谢!<BR>e-mail: pengcheng-2006@163.com<BR><BR><BR><BR><BR><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 + -