按 http://www.jizhuomi.com/software/160.html 编程实例进行编程,遇到如下问题:
1、对弹出对话框其中的确定和取消未实现按键处理函数时,点击确定或取消按键对话框不退出。
2、添加了弹出对话框确定和取消处理函数如下,点击确定或取消按钮后弹出对话框也不能退出。
void CTiptDlg::OnClickedToastCancel()
{
// TODO: 在此添加控件通知处理程序代码
}
void CTipDlg::OnClickedToastOk()
{
// TODO: 在此添加控件通知处理程序代码
}
3、参照如下代码在AdditionDlg.cpp编写点击计算按钮的处理函数
C++代码
- CAdditionDlg dlg; // 定义对话框类CAdditionDlg的对象dlg
- m_pMainWnd = &dlg; // 将dlg设为主窗口
- INT_PTR nResponse = dlg.DoModal(); // 弹出对话框dlg,并将DoModal函数的返回值(退出时点击按钮的ID)赋值给nResponse
- if (nResponse == IDOK) // 判断返回值是否为OK按钮(其ID为IDOK,鸡啄米已经将它删除)
- {
- // TODO: Place code here to handle when the dialog is
- // dismissed with OK
- }
- else if (nResponse == IDCANCEL) // 判断返回值是否为Cancel按钮(其ID为IDCANCEL,鸡啄米将它的Caption改为了“退出”)
- {
- // TODO: Place code here to handle when the dialog is
- // dismissed with Cancel
- }
AdditionDlg.cpp代码如下:
INT_PTR ret;CTipDlg tip = new CTipDlg();if(I0_TIP_OK == ret){ //弹出对话框确定键ID
UpdateData(TRUE);
m_editSum = m_editSummand + m_editAadend;
UpdateData(FALSE);
}elseif{IO_TIP_CNCEL}{ //弹出对话框取消键ID
}点击确定后对话框不退出,同时if中的语句未执行。
4、在AdditionDlg.cpp代码中的UpdateData(TRUE);前加入tip.~CTipDlg();任不能解决关闭对话框的问题。
5、解决办法:
在TipDlg.cpp中添加处理函数如下:
void CTipDlg::OnClickedToastCancel()
{
// TODO: 在此添加控件通知处理程序代码
CToastDlg::OnCancel();
}
void CTipDlg::OnClickedToastOk()
{
// TODO: 在此添加控件通知处理程序代码
CToastDlg::OnOK();
}
在AdditionDlg.cpp的计算按钮处理函数中加入代码如下:
- void CAdditionDlg::OnBnClickedAddButton()
- {
- // TODO: Add your control notification handler code here
- INT_PTR nRes; // 用于保存DoModal函数的返回值
- CTipDlg tipDlg; // 构造对话框类CTipDlg的实例
- nRes = tipDlg.DoModal(); // 弹出对话框
- if (IDCANCEL == nRes) // 判断对话框退出后返回值是否为IDCANCEL,如果是则return,否则继续向下执行
- return;
- // 将各控件中的数据保存到相应的变量
- UpdateData(TRUE);
- // 将被加数和加数的加和赋值给m_editSum
- m_editSum = m_editSummand + m_editAddend;
- // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值
- UpdateData(FALSE);
- }