今天使用新对话框中的复选框函数,一直出错,句柄一直为空,原因:
生成一个模态对话框我们这样写:
CDiaolg mydlg;
if(mydlg.DoModal()==IDOK)
{
..............
}
if成立的条件是OnOK()被调用即默认的确定按钮被点击了,想想看,这时对话框已经关闭了!虽然mydlg类可能依然存在,但对应的m_hWnd值已经为空了,这可能是框架为我们做了些工作,这里也显示了窗口类与窗口的联系与区别了,而且窗口不再使用了,释放窗口资源句柄也是合情合理
如果你想在点击确定按钮时干点什么,你可以到mydlg的成员函数中去,而不应该在上面的"......."的位置做.
...中的对对话框的所有操作都是错误。
如Cbutton的getcheck函数。
应该使用DoDataExchange函数中,
DDX_Control(pDX, IDC_CHECK1, m_bCK1);
m_b1 = m_bCK1.GetCheck();
在......部分使用bool型变量代替新对话框中获取的Cbutton变量 m_bCK1