📄 subject_18782.htm
字号:
<p>
序号:18782 发表者:我是一个兵 发表日期:2002-10-23 14:11:14
<br>主题:green pig 进来看看
<br>内容:我在菜单栏加了一个实验选择,有三个下拉菜单,来选择form1,form2,form3.在CMainFrame中增加了SwitchView(int vwType)来切换视图.出现这个错误:<BR>E:\Mdi切换视图\MainFrm.cpp(123) : error C2065: 'm_wndSplitter' : undeclared identifier<BR>"m_wndSplitter" 在在ChildFrm中定义,而且我加了ChildFrm.h,没有用呀.为什么?<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Norton AntivVirus 回复日期:2002-10-23 14:13:21
<br>内容:要通过ChildFrm的指针来访问m_wndSplitter<BR><BR>并且将m_wndSplitter public出来<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>
回复者:我是一个兵 回复日期:2002-10-23 14:24:57
<br>内容:哈哈,来的早呀。今天的马甲不错,能否给我定做一个<BR>你说的有理,但是不中呀,我的程序如下,你看看:<BR>void CMainFrame::SwitchView(int vwType)<BR> {<BR> CRect rect;<BR> GetClientRect(&rect);<BR> <BR> CSize right(rect.Width()*3/4, rect.Height());<BR> <BR> CCreateContext Context;<BR> Context.m_pCurrentDoc = GetActiveView()->GetDocument();<BR> Context.m_pCurrentFrame = this;<BR> Context.m_pLastView = (CView*)m_wndSplitter.GetPane(0,1);<BR> Context.m_pNewDocTemplate = Context.m_pCurrentDoc->GetDocTemplate();<BR> m_wndSplitter.DeleteView(0,1);<BR> <BR> switch( vwType )<BR> {<BR> case CForm1:<BR> Context.m_pNewViewClass = RUNTIME_CLASS(CForm1);<BR> break;<BR> case CForm2:<BR> Context.m_pNewViewClass = RUNTIME_CLASS(CForm2);<BR> break;<BR> case CForm3:<BR> Context.m_pNewViewClass = RUNTIME_CLASS(CForm3);<BR> break;<BR><BR> default:<BR> MessageBox("\t无法识别的视图类!");<BR> return;<BR> }<BR> <BR> m_wndSplitter.CreateView(0,1,Context.m_pNewViewClass,right, &Context);<BR> <BR> CView* pView =(CView*) m_wndSplitter.GetPane(0,1);<BR> <BR> pView->GetParentFrame()->RecalcLayout();<BR> m_wndSplitter.RecalcLayout();<BR> pView->OnInitialUpdate(); <BR> m_wndSplitter.SetActivePane(0,1);<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>
回复者:徐景周 回复日期:2002-10-23 14:54:03
<br>内容:http://www.copathway.com/cndevforum/subject_view.asp?subject_id=18644&forum_id=
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntivVirus 回复日期:2002-10-23 14:56:23
<br>内容:m_wndSplitter.CreateView(0,1,Context.m_pNewViewClass,right, &Context);<BR><BR> 你是说这个m_wndSplitter不能用?<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>
回复者:Norton AntivVirus 回复日期:2002-10-23 15:10:05
<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>
回复者:我是一个兵 回复日期:2002-10-23 17:05:13
<br>内容:不好意思,我刚才有事出去了.<BR>徐老大的例子打不开呀,妈妈的,该死的校园网.<BR>m_wndSplitter我在childfrm.h中定义的.m_wndSplitter都不行的
<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>回复者:Norton AntivVirus 回复日期:2002-10-23 17:43:01
<br>内容:假设你的ChildFrm的指针时pChild;<BR><BR>如果没有这个指针,你必须要得到这个指针!<BR><BR>然后:<BR><BR>pChild->m_wndSplitter...............<BR><BR>都加上pChild
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:我是一个兵 回复日期:2002-10-23 17:57:13
<br>内容:查了一下MSDN,下面能得到那个指针<BR> CMDIFrameWnd *pFrame = (CMDIFrameWnd *)AfxGetApp()->m_pMainWnd;<BR> // Get the active MDI child window.<BR> CMDIChildWnd *pChild =<BR> (CMDIChildWnd *) pFrame->GetActiveFrame();<BR> <BR> CMDIView *pView = (CMDIView *) pChild->GetActiveView();<BR>但还是有问题,问题如下:<BR>Compiling...<BR>MainFrm.cpp<BR>E:\Mdi切换视图\MainFrm.cpp(132) : error C2039: 'm_wndSplitter' : is not a member of 'CMDIChildWnd'<BR> c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(3394) : see declaration of 'CMDIChildWnd'<BR>E:\Mdi切换视图\MainFrm.cpp(132) : error C2228: left of '.GetPane' must have class/struct/union type<BR>E:\Mdi切换视图\MainFrm.cpp(134) : error C2228: left of '.DeleteView' must have class/struct/union type<BR>E:\Mdi切换视图\MainFrm.cpp(153) : error C2228: left of '.CreateView' must have class/struct/union type<BR>E:\Mdi切换视图\MainFrm.cpp(158) : error C2039: 'm_wndSplitter' : is not a member of 'CMDIChildWnd'<BR> c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(3394) : see declaration of 'CMDIChildWnd'<BR>E:\Mdi切换视图\MainFrm.cpp(158) : error C2228: left of '.RecalcLayout' must have class/struct/union type<BR>E:\Mdi切换视图\MainFrm.cpp(160) : error C2039: 'm_wndSplitter' : is not a member of 'CMDIChildWnd'<BR> c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(3394) : see declaration of 'CMDIChildWnd'<BR>E:\Mdi切换视图\MainFrm.cpp(160) : error C2228: left of '.SetActivePane' must have class/struct/union type<BR>Error executing cl.exe.<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>
回复者:Norton AntivVirus 回复日期:2002-10-23 18:14:06
<br>内容:是在不行嘛,就用extern好了,呵呵
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:我是一个兵 回复日期:2002-10-23 18:24:18
<br>内容:哈哈,我在mainfrm.h里面也申明了一个CSplitterWnd m_wndSplitter<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>
回复者:我是一个兵 回复日期:2002-10-23 18:30:45
<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>
回复者:Norton AntivVirus 回复日期:2002-10-23 19:13:11
<br>内容:你为啥不在mainFrame中切分呢?<BR><BR>重载CreateClient函数就可以了啊
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:我是一个兵 回复日期:2002-10-23 19:29:55
<br>内容:哦,在mainFrame也能呀,我不知道.我一直在childfrm中作的,可能是先入为主吧.现在改还可以吗<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>
回复者:Norton AntivVirus 回复日期:2002-10-23 19:30:49
<br>内容:你得不到指针只能在mainframe中做了!<BR><BR>怎么会得不到childframe的指针呢?<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 + -