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

📄 subject_18825.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:18825 发表者:天涯浪子 发表日期:2002-10-23 17:15:52
<br>主题:再次请教景周大哥
<br>内容:关於在对话框中使用串行化的问题,按照你上次给我的两篇文章,我做了一下:<BR>DFV控件虽然很不错,但是稳定性不能保证;而另外一篇文章,我按照他的方法,在对话框中写了一个GetView()函数<BR>CUpsView* CDlgmonitor::GetView () const<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(m_pView);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT_KINDOF(CUpsView,m_pView);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return (CUpsView*)m_pView;<BR>}<BR>但是当我在CUpsView类中将this指针赋给m_pView时(如下)<BR>&nbsp;&nbsp; CDlgmonitor* dd=new CDlgmonitor;<BR>&nbsp;&nbsp; dd-&gt;m_pView=this;<BR>在Debug和Release下都无错误,但在运行过程中,对话框被调用时,就会出现异常,在调试中发现,由于m_pView的值为NULL,导致ASSERT(m_pView)处出现软中断。<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>
回复者:徐景周 回复日期:2002-10-23 17:36:47
<br>内容:看看是不是跟你定义的GetView类型中的const有关。另外,最好在CDlgmonitor加一个SetView来设置m_pView.
<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-25 09:31:41
<br>内容:按照你的说法,我加入了下面的代码<BR>void CDlgmonitor::SetView (CUpsView* pView)&nbsp;&nbsp;&nbsp;&nbsp;<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pView=pView;<BR>}<BR>并在CUpsView中加入<BR>CDlgmonitor dd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dd.SetView(this);<BR>Debug和Release都无错误,但运行出错,调试后发现,"Symbol 'm_pView' not found",请指教.
<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-25 10:43:34
<br>内容:看看SetView 是不是声明为public类型,另外,看看这个dd.SetView(this);中的this指针是否有效,要用类似ASSERT(m_pView!= NULL);试试。<BR><BR>或者在对话框中直接包含进视头文件,用类似下面方法直接获取视来试试:<BR>CTemplateEditorDoc* pDoc = (CTemplateEditorDoc*)((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument();<BR>&nbsp;&nbsp;&nbsp;&nbsp;if( !AfxIsValidAddress( pDoc, sizeof(CTemplateEditorDoc), FALSE ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CWell* pWell =&nbsp;&nbsp;(CWell*)( pDoc-&gt;GetValue() );<BR><BR>或:<BR>CTemplateEditorView* pView = (CTemplateEditorView*)( ((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveView() );<BR>&nbsp;&nbsp;&nbsp;&nbsp;if( !AfxIsValidAddress( pView, sizeof( CView ), FALSE ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bEnable = bEnable && ( !pView-&gt;IsLockFramehader() );<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-25 16:22:44
<br>内容:SetView是public类型,不过,在调试中发现,,当运行到ASSERT(pView)时,this指针已经正确的赋给了m_pView,但是当执行完SetView时,就在dd.SetView(this);外,却出现了警告<BR>“Symbol ‘m_pView' not found”。<BR>其次,在第二种方法中,GetValue() 不能通过pDoc来调用.<BR>另外,在第三种方法中,在MSDN中找不到这个函数IsLockFramehader()。<BR><BR>我使用的视类是CFormView,应该对此没有影响吧.<BR>请指教。<BR>2002-10-25 16:45:39

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -