📄 subject_55062.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的构造函数, 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()->m_pMainWnd))->GetActiveView()来得到指向当前view的指针,然后直接用pView->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> // TODO: Add extra cleanup here<BR><BR> ////CFrameWnd* pFrameWnd=(CFrameWnd*)AfxGetMainWnd();<BR> //<BR> ////CView* pView=pFrameWnd->GetActiveView();<BR> ////pView->m_pOpenDlg=NULL;<BR> //((CRegisterView*)m_pParent)->m_pOpenDlg=NULL;<BR><BR>/////////////////////////////////////////////////////////////<BR>CRegisterView* pView =(CRegisteView*)((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();<BR>pView->m_pOpenDlg=NULL;<BR><BR><BR> 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 '->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 "registerView.h"则出现递归包含,因为在registerView.h中已经包含了#include "registerDlg.h"。因此编译也不能通过。<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()->m_pMainWnd))->GetActiveView();<BR>则可以通过编译,但是如果再加上下面一句:<BR>pView->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> E:\vc_MFC\register\RegisterDlg.cpp(21) : see declaration of 'CRegisterView'<BR>E:\vc_MFC\register\RegisterDlg.cpp(98) : error C2227: left of '->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 + -