VC++ MFC子对话框建立与关闭

摘要:
WindowsCE:此函数不会发送WM_ NCDESTROY消息EndDialog函数函数:此函数清除模式对话框,并导致系统中止对话框的任何处理。应用程序从对话框应用程序中调用EndDialog函数,该函数不能用于其他目的。EndDialog函数不会立即清除对话框。相反,它设置一个标志,并允许对话框应用程序将控制权返回给系统。

主窗体

void CMoshiwindowDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    CDialogproty dlg; 
    dlg.DoModal(); 
    m_text.SetWindowText(dlg.text);
}

子窗体:

1.头文件声明变量

2.

void CDialogproty::OnButton1() 
{
    // TODO: Add your control notification handler code here
    m_text.GetWindowText(text);
    CDialog::EndDialog(0); //结束对话框 
}

1.显示模式对话框:

CDialogDemo dlg;
dlg.DoModal();

2.显示非模式对话框:

CDialogDemo *dlg=new CDialogDemo(this); 
dlg->Create(IDD_GENERAL_CONTROL); 
dlg->ShowWindow(SW_SHOW);

二、关闭对话框:

1.CDialog::OnOK();   //确定按钮按下         CDialog::OnCancel(); //取消按钮被按下

2.CDialog::DestoryWindow();  

3.CDialog::EndDialog(0);  

注:CDialog::CloseWindow();     仅仅是最小化对话框
PostMessage(WM_CLOSE)

 

 

相关函数详解:

CloseWindow 

    函数功能:该函数最小化指定的窗口,但并不销毁该窗口。
  函数原型:BOOL CloseWindow(HWND hWnd);
  参数:
  hWnd:将要最小化的窗口的句柄。
  返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
  备注:窗口尺寸被最小化成一个图标,并移动到屏幕的图标区域。系统显示窗口的图标而不显示窗口,并在图标下显示窗口标题。应用程序必须使用
         DestroyWindow函数销毁窗口。

DestroyWindow  

函数功能:销毁指定的窗口。这个函数通过发送WM_DESTROY 消息和 WM_NCDESTROY 消息使窗口无效并移除其键盘焦点。这个函数还销毁窗口的菜单,清空线程的消息队列,销毁与窗口过程相关的定时器,解除窗口对剪贴板的拥有权,打断剪贴板器的查看链。
  函数原型:BOOL DestroyWindow( HWND hWnd // handle to window to destroy);
  hWnd :将被销毁的窗口的句柄。
  返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
  备注:一个线程不能使用本函数销毁别的线程创建的窗口。如果这个窗口是一个不具有WS_EX_NOPARENTNOTIFY 样式的子窗口,则销毁窗口时将发
    WM_PARENTNOTIFY 消息给其父窗口。
  Windows CE: 本函数将不发送 WM_NCDESTROY 消息.

EndDialog  

函数功能:该函数清除一个模态对话框,并使系统中止对对话框的任何处理。
  函数原型:BOOL EndDialog(HWND hDlg,int nResult);
  参数:
  hDlg:表示要被清除的对话框窗口。
  NResult:指定从创建对话框函数返回到应用程序的值。
  返回值:如果函数调用成功,则返回值为非零值;如果函数调用失败则返回值为零。若想获得错误信息请调用GetLastError函数。
   备注:由DialogBox,DialogBoxParam、DialogBoxlndirect和DialogBoxlndirectParam函数 创建的对话框一定要用EndDialog函数来清除。应用程序从对话框应用程序内部调用EndDialog函数,该函数不能为其他目的而供使用。对话框应 用程序可以在任何时间调用EndDialog函数;甚至在WM_INITDIALOG消息处理过程中。如果应用程序在WM_INTDIALOG消息处理过 程中调用该函数,则对话框在显示和输入焦点被设置之前对话框被清除。EndDialog函数并不立即清除对话框。而是设置一个标志,并且允许对话框应用程 序把控制权返回系统。系统在试图从应用程序队列检索下一个消息之前检测标志。如果已经设置了标志则系统中止消息循环,清除对话框,且用nResUlt中的 值作为从创建对话框的函数中返回的值。

免责声明:文章转载自《VC++ MFC子对话框建立与关闭》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tomcat 服务不支持 chkconfig 以及其他服务不能添加到开机启动时的操作pm3下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【MFC】获取文件大小的方法

【转载】原文地址:http://blog.csdn.net/coderwu/article/details/5652056 MFC 下可以通过 CFileStatus 获取文件大小。 1 ULONGLONG size; 2 CString strFilePath; 3 CFileStatus fileStatus; 4 5 if (CFi...

突然想起android与mfc差异

两者都可以算作是客户端程序,都是做上位机用的。而且都是被动执行。 相同点: 1、MFC中,它是由 project的名字 里面的某个成员函数来初始化,窗体,以及窗体里面的变量。 后面都是监听消息循环。数据的传递通过全局变量、成员变量来搞定。 2、Android中,数据一般都是通过成员变量,或者intent携带一些数据来实现。比如,广播等,都是可以携带数据的。...

总结:MFC中一个对话框的关闭过程 .

说起来挺简单的,一个对话框关闭时要依次调用该类的DestroyWindow-OnDestroy-PostNcDestroy,根据关闭的方法不同,在这些函数之前会调用OnOK、OnCancle或者OnClose。 这里要说的是,模态对话框的消息循环要到调用了PostNcDestroy之后才真正的结束,即ContinueModal循环在这里才结束,然后类的析构...

转载:MFC之MessageBox、AfxMessageBox用法

在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框. 在Win32 API程序中只有MessageBox这一种用法. 而在MFC中就有三各方法: 1.调用API中的MessageBox; 2.调用CWnd的成员函数MessageBox; 3.调用全局函数AfxMessageBox; MFC中MessageBox的用法 一...

MFC控件Slider Control的使用

写MFC界面程序时,今天恰好用到Slider控件,做一个小小的记录。 步骤 1.在工具栏中添加Slider Control控件; 2.在控件上右键->添加变量(Add Variable...),为控件添加一个变量(假如为m_slider); 3.初始化Slider Control控件 1 m_slider->SetRange(0,100); /...

微软软件开发技术二十年回顾

今年11月,微软新一代的操作系统Vista即将正式发布,它将会极大地改变原有的Windows编程机制。近20年来,随着技术和应用的变化、发展,微软的开发技术也历经变迁。随着微软下一代开发平台vista即将发布,微软会把开发者引向何方? 自Windows 1.0问世到今年11月份,微软Windows操作系统已经走过了它辉煌的二十一年。沧海桑田一瞬间,让我们...