📄 subject_27515.htm
字号:
<p>
序号:27515 发表者:atang 发表日期:2003-01-12 23:38:43
<br>主题:尝试把OnAbout对话框改成无模式的,失败了:(
<br>内容:仅做如下修改:<BR>void CMainWnd::OnAbout()<BR>{<BR> flag=0;<BR> AboutDlg dlg;<BR> CMainWnd *pWnd=(CMainWnd*)this->GetParent();<BR> dlg.Create(IDD_ABOUTBOX,pWnd);<BR> //dlg.DoModal();<BR> dlg.SetActiveWindow();<BR> 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> flag=0;<BR> AboutDlg* dlg;<BR> CMainWnd *pWnd=(CMainWnd*)this->GetParent();<BR> dlg->Create(IDD_ABOUTBOX,pWnd);<BR> //dlg.DoModal();<BR> dlg->SetActiveWindow();<BR> dlg->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> flag=0;<BR> AboutDlg* dlg = new AboutDlg; //建立<BR> CMainWnd *pWnd=(CMainWnd*)this->GetParent();<BR><BR> dlg->Create(IDD_ABOUTBOX,pWnd);<BR> //dlg.DoModal();<BR> dlg->SetActiveWindow();<BR> 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></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; //建立<BR>dlg->m_bModeless = TRUE;<BR>这样可以在对话框AboutDlg类的PostNcDestroy()中加入:<BR>void AboutDlg::PostNcDestroy()<BR>{<BR> CDialog::PostNcDestroy();<BR> if(m_bModeless)<BR> 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 + -