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

📄 subject_61818.htm

📁 vc
💻 HTM
字号:
<p>
序号:61818 发表者:joplus 发表日期:2003-11-22 01:12:37
<br>主题:困扰多时的问题
<br>内容:<BR>&nbsp;&nbsp;在对话框中设置一个CButton button 和一个按钮关联。<BR><BR>&nbsp;&nbsp;即有 DDX_Control(pDX, IDC_TEST, button);<BR><BR>&nbsp;&nbsp;我发现,如果这个对话框是基于对话框的程序,没有任何初始化,使用<BR>button.GetCheck() 没问题。<BR><BR>&nbsp;&nbsp; 但是,如果把该对话框作为一个菜单项的响应项(DoModal()之后,GetCheck()),则出现非法操作。并且GetDlgItem()取得的句柄是0。<BR>&nbsp;&nbsp;&nbsp;&nbsp;哪位大侠能够帮我解释一下为什么会出现这种情况?怎样解决?谢谢!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:luo 回复日期:2003-11-22 01:35:36
<br>内容:DoModal之后窗体就不存在了,所以你后面调用的那些关于窗体的方法当然都是非法操作了,但是他的成员变量还是存在的。
<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>回复者:浪际天涯 回复日期:2003-11-22 10:01:43
<br>内容:&lt;BLOCKQUOTE&gt;引用“第1楼”所言<BR>&lt;Q&gt;DoModal之后窗体就不存在了,所以你后面调用的那些关于窗体的方法当然都是非法操作了,但是他的成员变量还是存在的。&lt;/Q&gt;&lt;/BLOCKQUOTE&gt;<BR>1楼的说的对,DoModal之后就无法获取到该对话框的句柄了,如何用GetDlgItem呢,但对话框的对象或指针还没有被消毁,所以可以通过它来操作它的变量<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>
回复者:joplus 回复日期:2003-11-22 23:10:11
<br>内容:<BR>比如这个对话框叫 CTestDlg,我声明CTestDlg cTest;<BR><BR> 我使用: int result=cTest.button.GetCheck();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cTest.Domodal();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这样也非法操作。<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在我想通过 button.GetCheck()来检查按钮是否被选上,能够用什么方法?<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;望指明,谢谢!
<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-11-23 11:06:46
<br>内容:方法1. 重载OnOK函数,在该函数中检查,并将结果用一个CTestDlg的类变量保存。<BR>void CTestDlg::OnOK() <BR>{<BR>&nbsp;&nbsp;m_bCheck = button.GetCheck();<BR>&nbsp;&nbsp;CDialog::OnOK();<BR>}<BR><BR>方法2. 在CTestDlg中给button定义一个值型(value)成员变量(假设为m_bCheck),在button的Click的事件处理函数中设置该变量。<BR><BR>最后:<BR>if( cTest.Domodal()==IDOK )<BR>{<BR>&nbsp;&nbsp;// 判断该变量的值<BR>&nbsp;&nbsp;if( cTest.m_bCheck )<BR>&nbsp;&nbsp; ...<BR>}<BR><BR>如果是CheckBox、RadioBox按钮,可以直接在ClassWizard中添加值型(value)成员变量,MFC会给你维护该变量的值。
<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-11-23 20:00:22
<br>内容:直接关联一BOOL变量不就得了么…………
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:luo 回复日期:2003-11-24 08:23:40
<br>内容:在DoModal之前窗体还没有创建,怎么能用关于窗体的方法呢?
<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 + -