MFC——弹出对话框编程问题

来源:互联网 发布:安卓编程权威指南 pdf 编辑:程序博客网 时间:2024/05/18 00:16

 按 http://www.jizhuomi.com/software/160.html 编程实例进行编程,遇到如下问题:

1、对弹出对话框其中的确定和取消未实现按键处理函数时,点击确定或取消按键对话框不退出。

2、添加了弹出对话框确定和取消处理函数如下,点击确定或取消按钮后弹出对话框也不能退出。

void CTiptDlg::OnClickedToastCancel()

{

// TODO: 在此添加控件通知处理程序代码

}


void CTipDlg::OnClickedToastOk()

{

// TODO: 在此添加控件通知处理程序代码

}

3、参照如下代码在AdditionDlg.cpp编写点击计算按钮的处理函数

C++代码
  1. CAdditionDlg dlg;        // 定义对话框类CAdditionDlg的对象dlg   
  2. m_pMainWnd = &dlg;       // 将dlg设为主窗口   
  3. INT_PTR nResponse = dlg.DoModal();   // 弹出对话框dlg,并将DoModal函数的返回值(退出时点击按钮的ID)赋值给nResponse   
  4. if (nResponse == IDOK)               // 判断返回值是否为OK按钮(其ID为IDOK,鸡啄米已经将它删除)   
  5. {   
  6.     // TODO: Place code here to handle when the dialog is   
  7.     //  dismissed with OK   
  8. }   
  9. else if (nResponse == IDCANCEL)      // 判断返回值是否为Cancel按钮(其ID为IDCANCEL,鸡啄米将它的Caption改为了“退出”)   
  10. {   
  11.     // TODO: Place code here to handle when the dialog is   
  12.     //  dismissed with Cancel   
  13. }  

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的计算按钮处理函数中加入代码如下:

  1. void CAdditionDlg::OnBnClickedAddButton()   
  2. {   
  3.     // TODO: Add your control notification handler code here   
  4.     INT_PTR nRes;             // 用于保存DoModal函数的返回值   
  5.   
  6.     CTipDlg tipDlg;           // 构造对话框类CTipDlg的实例   
  7.     nRes = tipDlg.DoModal();  // 弹出对话框   
  8.     if (IDCANCEL == nRes)     // 判断对话框退出后返回值是否为IDCANCEL,如果是则return,否则继续向下执行   
  9.         return;   
  10.   
  11.     // 将各控件中的数据保存到相应的变量   
  12.     UpdateData(TRUE);   
  13.   
  14.     // 将被加数和加数的加和赋值给m_editSum   
  15.     m_editSum = m_editSummand + m_editAddend;   
  16.   
  17.     // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   
  18.     UpdateData(FALSE);   
  19. }  
终于实现了点击计算按钮后弹出对话框:点击确定后显示计算结果,同时弹出对话框关闭;点击取消按钮关闭对话框不处理。


原创粉丝点击