📄 subject_37491.htm
字号:
<p>
序号:37491 发表者:sundy001 发表日期:2003-04-25 11:26:51
<br>主题:sdi中 无doc/view支持,无模式对话框的问题
<br>内容:我由向导生成的sdi 无doc/view支持,想在点击主菜单后出现无模式对话框,<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>
回复者:最后疯狂 回复日期:2003-04-25 13:37:58
<br>内容:1、利用对话框编辑器创建一个对话框资源,并基于此资源生成一个CDialog的派生类CMyDialog ;<BR><BR>2、为CMyDialog加入一个成员变量:<BR>private:<BR> CView *m_pView ;<BR>再加入两个成员函数:]<BR>public:<BR> CMyDialog(CView *pView) ;<BR> BOOL Create() ;<BR><BR>3、在MyDialog.h中加入一个用户自定义消息:<BR>#define WM_GOODBYE WM_USER + 5<BR><BR>4、在MyDialog.cpp中加入无模式对话框的构造函数和Create()函数的实现:<BR>CMyDialog::CMyDialog(CView *pView)<BR>{<BR> m_pView - pView ;<BR>}<BR>还应该在由AppWizard所产生的模式对话框的构造函数中加进如下代码:<BR>m_pView = NULL ;<BR>以便CMyDialog类能适应模式对话框和无模式对话框。<BR><BR>BOOL CMyDialog::Create()<BR>{<BR> return CDialog::Create(CMyDialog::IDD) ;<BR>}<BR><BR>9、覆盖CMyDialog的OnOK()和OnCancel()函数:<BR><BR>void CMyDialog::OnOK()<BR>{<BR> if (m_pView != NULL) {<BR> // 非模态对话框<BR> UpdateData(TRUE);<BR> m_pView->PostMessage(WM_GOODBYE, IDOK);<BR> }<BR> else {<BR> CDialog::OnOK(); // 模态对话框<BR> }<BR>}<BR><BR>void CEx07aDialog::OnCancel() <BR>{<BR> if (m_pView != NULL) {<BR> m_pView->PostMessage(WM_GOODBYE, IDCANCEL);<BR> }<BR> else {<BR> CDialog::OnCancel(); <BR> }<BR>}<BR><BR>10、此时就可以创建并显示非模态对话框了(模态对话框必须在堆中创建,以免超出对话框有效范围时,对话框C++对象被自动析构)。注意被覆盖的OnOK()和OnCancel(),非模态对话框的释放动作是由视图来控制的(因为非模态对话被创建之后Create()就会立即返回)。<BR>2003-4-25 13:43:44
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -