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

📄 subject_27515.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:27515 发表者:atang 发表日期:2003-01-12 23:38:43
<br>主题:尝试把OnAbout对话框改成无模式的,失败了:(
<br>内容:仅做如下修改:<BR>void CMainWnd::OnAbout()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;flag=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AboutDlg dlg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CMainWnd *pWnd=(CMainWnd*)this-&gt;GetParent();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg.Create(IDD_ABOUTBOX,pWnd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//dlg.DoModal();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg.SetActiveWindow();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg.ShowWindow(SW_SHOW);<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>
回复者:tjhe 回复日期:2003-01-13 00:44:25
<br>内容:问题出在AboutDlg dlg;的dlg是局部对象,局部的声命期,出了OnAbout()函数,声命期结束。如下试试:<BR>void CMainWnd::OnAbout()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;flag=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AboutDlg* dlg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CMainWnd *pWnd=(CMainWnd*)this-&gt;GetParent();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg-&gt;Create(IDD_ABOUTBOX,pWnd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//dlg.DoModal();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg-&gt;SetActiveWindow();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg-&gt;ShowWindow(SW_SHOW);<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>
回复者:atang 回复日期:2003-01-13 01:51:49
<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>
回复者:PLB 回复日期:2003-01-13 09:10:24
<br>内容:在头文件里声明dlg
<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-13 14:23:33
<br>内容:对不起,少写了一句话:<BR>void CMainWnd::OnAbout()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;flag=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AboutDlg* dlg = new AboutDlg;&nbsp;&nbsp;//建立<BR>&nbsp;&nbsp;&nbsp;&nbsp;CMainWnd *pWnd=(CMainWnd*)this-&gt;GetParent();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg-&gt;Create(IDD_ABOUTBOX,pWnd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//dlg.DoModal();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg-&gt;SetActiveWindow();<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg-&gt;ShowWindow(SW_SHOW);<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>
回复者:atang 回复日期:2003-01-14 19:43:32
<br>内容:你这样建立的dlg指针他的生命从哪开始,又到哪结束呢?需不需要delete一下啊??
<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-14 20:09:35
<br>内容:这样建立的dlg是要用delete来删除的,否则会引起内存泄漏!
<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-14 21:03:50
<br>内容:对对,忘了。<BR><BR>可以将dlg指针保存起来,CMainWnd的其他适当地方将其delete。<BR><BR>也可如下:<BR>AboutDlg类中加入一个BOOL m_bModeless;成员表示是否为无模式(构造函数中初始化为FALSE).<BR>AboutDlg* dlg = new AboutDlg;&nbsp;&nbsp;//建立<BR>dlg-&gt;m_bModeless = TRUE;<BR>这样可以在对话框AboutDlg类的PostNcDestroy()中加入:<BR>void AboutDlg::PostNcDestroy()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDialog::PostNcDestroy();<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(m_bModeless)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete this;<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 + -