精华内容
下载资源
问答
  • 显示和关闭对话框

    千次阅读 2016-08-16 18:23:04
    一、显示对话框 1.显示模式对话框: CDialogDemo dlg; dlg.DoModal(); 2.显示非模式对话框: CDialogDemo *dlg=new CDialogDemo(this); dlg->Create(IDD_GENERAL_CONTROL);...二、关闭对话框: 1.CDialog::

    一、显示对话框

    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);  

    4.CDialog::CloseWindow();     仅仅是最小化对话框

    5.向父窗口发送WM_CLOSE消息,然后自己关闭自己的窗口。

    获取将父窗口的句柄直接传给子窗口,然后子窗口可以直接关闭父窗口.

    AfxGetMainWnd()->PostMessage/SendMessage(WM_CLOSE);

    6.直接通过exit(0),ExitProcess(0);//不好的用法


    三、在模态对话框类中关闭自身对话框
    可以在模态对话框类中通过PostMessage(WM_CLOSE)来关闭自身对话框。关闭MessageBox对话框后模态对话框随之关闭。

    相关代码如下:

     1  BOOL CImportDataPromptDialog::OnInitDialog()
     2  {
     3      CDialog::OnInitDialog();
     4 
     5       //  TODO:  Add extra initialization here
     6      HANDLE hThread  =  StartImportDataThread();
     7       if  ( ! hThread)
     8      {
     9          LOG( " 启动导入数据线程失败 " )
    10      }
    11 
    12       return  TRUE;   //  return TRUE unless you set the focus to a control
    13       //  EXCEPTION: OCX Property Pages should return FALSE
    14  }
    15 
    16  DWORD WINAPI CImportDataPromptDialog::ImportDataThread(LPVOID Param)
    17  {
    18      CImportDataPromptDialog *  importDlg  =  (CImportDataPromptDialog * )Param;
    19 
    20       if  (CImportLog::ExtractionXMLData(importDlg -> m_sXmlFilePath, importDlg -> m_sDBPath))
    21      {
    22          importDlg -> MessageBox( " 导入数据成功 " , " 平台 " , MB_ICONINFORMATION);
    23          importDlg -> PostMessage(WM_CLOSE);
    24      }
    25       else
    26      {
    27          importDlg -> MessageBox( " 导入数据失败 " , " 平台 " , MB_ICONEXCLAMATION);
    28          importDlg -> PostMessage(WM_CLOSE);
    29      }
    30      
    31       return   0 ;
    32  }
    33 
    34  HANDLE CImportDataPromptDialog::StartImportDataThread()
    35  {
    36      LOG( " 启动导入数据线程 " );
    37      CWinThread *  hThread  =  AfxBeginThread((AFX_THREADPROC)CImportDataPromptDialog::ImportDataThread,(LPVOID) this );
    38 
    39       return  (hThread -> m_hThread);
    40  }


    相关函数详解:

    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中的值作为从创建对话框的函数中返回的值。


    展开全文
  • MFC 关闭对话框

    千次阅读 2018-11-15 18:29:16
    void CMFxxxxDlg::OnBnClickedButtoncancel() {  // TODO: 在此添加控件通知处理程序代码      AfxGetMainWnd()->SendMessage(WM_CLOSE);...发送一个消息(WM_CLOSE)提醒系统关闭。...

    void CMFxxxxDlg::OnBnClickedButtoncancel()
    {
        // TODO:  在此添加控件通知处理程序代码
        
        
           AfxGetMainWnd()->SendMessage(WM_CLOSE);
        
    }
    发送一个消息(WM_CLOSE)提醒系统关闭。

    展开全文
  • 主要介绍了Android实现点击AlertDialog上按钮时不关闭对话框的方法,涉及设置监听的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • Qt自动关闭对话框

    千次阅读 2019-10-24 12:01:11
    背景:想要在按键中断触发时,弹出一个模态对话框显示一些信息,若干秒后自动释放。 在中断处理函数中进行对话框的创建: void Mainpanel::InterruptHandler() { test *dialog = new Dialog(this); QTimer::...

    背景:想要在按键中断触发时,弹出一个模态对话框显示一些信息,若干秒后自动释放。

    在中断处理函数中进行对话框的创建:

    void Mainpanel::InterruptHandler()
    {
        test *dialog = new Dialog(this);
        QTimer::singleShot(3000, this, &MainPanel::DialogClosed);
        dialog->exrc();
    }

    另外定义一个槽函数,槽函数中执行关闭和回收资源的操作:

    void MainPanel::DialogClosed(void)
    {
        testdialog->close();
        testdialog->deleteOnClose();
    }

     

    展开全文
  • 本篇文章主要介绍了Android中AlertDialog 点击按钮后不关闭对话框的功能,非常具有实用价值,需要的朋友可以参考下
  • 关闭对话框的方法

    千次阅读 2013-06-17 12:29:11
    从用户单击关闭按钮(标题栏最右边)或者鼠标或键盘选择系统菜单的“关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?  1、首先会产生一个WM_SYSCOMMAND消息,如果程序员没有对此消息进行...

    参考网上资料,对话框关闭流程如下:

    从用户单击关闭按钮(标题栏最右边)或者用鼠标或键盘选择系统菜单的“关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?

      1、首先会产生一个WM_SYSCOMMAND消息,如果程序员没有对此消息进行拦截,则由缺省的窗口函数DefWindowProc进行处理,如果表达式(LOWORD(wParam)&0xFFF0)==SC_CLOSE   成立,DefWindowProc发出一个WM_CLOSE消息。   
      2、同样,如果程序员没有对WM_CLOSE消息进行拦截,则还是由DefWindowProc进行处理,这次,她只简单的调用DestroyWindow函数,DestroyWindow先把窗口破坏掉,使用户看不到窗口。但是窗口破坏后,应用程序并没有结束,于是DestroyWindow再接再励,送出了一个WM_DESTROY消息。   
      3、这一次,WM_DESTROY被载获了,通常是会有这样的句子:   
      case   WM_DESTROY:   
      PostQuitMessage(0);   
      ...   
      这里PostQuitMessage函数很简单的发送一个WM_QUIT消息来响应WM_DESTROY   
      4、WM_QUIT消息非常特殊,她使GetMessage函数返回0,从而结束了消息循环,   
      应用程序从此结束。

     

    关于关闭对话框,统计几种关闭方法:

    1. 向主窗口发送WM_CLOSE消息,使得主窗口调用OnClose函数销毁
    2. 直接调用CDialog:OnOK()函数

    展开全文
  • 如果在方法里使用 return false;,结果用户输入空值时对话框还是会关闭。正确做法如下: 先设置自定义对话框的属性: autoClose: false ...然后当用户输入正确的...关闭对话框。 转载于:https://www.cnblogs.com...
  • vc 关闭对话框几种方法

    千次阅读 2015-07-26 09:55:51
    vc 关闭对话框几种方法注:以下代码以一个名为CTest6Dlg的对话框类为例 在任务栏隐藏对话框 ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);使对话框为顶层窗口 SetWindowPos(&this->wndTopMost, 0, 0, 0, 0...
  • 屏蔽ESC和ENTER键关闭对话框的方法 转自:http://blog.csdn.net/xgx198831/article/details/6713651  MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法 或许还有其它更好的办法,但下面这个肯定有用,...
  • 本人建立了一个对话框(关联CMaindlg类),里面有四个标签对应着四个对话框(关联CDialog1,CDialog2,CDialog3,CDialog4类,然后我想点击第四个对话框的按钮时候关闭CMaindlg和其余四个类对应的对话框,应该如何...
  • 从用户单击关闭按钮(标题栏最右边)或者鼠标或键盘选择系统菜单的“关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?  1、首先会产生一个WM_SYSCOMMAND消息,如果程序员没有对此消息进行拦截...
  • 对话框关闭时发送的不同消息: 1)点击OK按钮:OnOk-WM_DESTROY 2) 点击Cancel按钮:OnCancel-WM_DESTROY 3) 点击×按钮:WM_CLOSE-ONCANCEL-WM_DESTROY 4) 键盘ESC按键:OnCancel-WM_DESTROY 5)调用EndDialog...
  • 1)点击OK按钮:OnOk-WM_DESTROY  2) 点击Cancel按钮:OnCancel-WM_DESTROY  3) 点击×按钮:WM_CLOSE-ONCANCEL-WM_DESTROY  4) 键盘ESC按键:OnCancel-WM_DESTROY  5)调用EndDialog(IDCA
  • 但是仔细一看原来是关闭了当前对话框,兴趣来了,总结了一下关闭当前对话框的快捷键 三种关闭当前对话框快捷键: 1.Ctrl + W:不仅可以关闭QQ聊天界面,也可以是网页当前页、文档当前页…… 2.Alt + C:暂时发现...
  • // 本例子我们使用自定义的对话框类 #include "DemoDialog.h" // 下边演示如何检测内存泄漏. 在每个要检测的文件中加上下边2句. // 要注意的是这两句必须放在包含其他的头文件之后. 否则会产生编译/连接错误. //...
  • 基于对话框的应用程序如何屏蔽按ESC键关闭窗口    在BOOL C***Dlg::PreTranslateMessage(MSG* pMsg)中  if (pMsg->message == WM_KEYDOWN)  {  if (pMsg->wParam == VK_ESCAPE) //Esc键不退出程序  ...
  • Visual C++ 使用MFC 生成的dialog工程默认情况下按Enter键或Esc键后会导致程序直接退出。 该现象并非Bug或问题,但是在日常开发过程中并不需要Dialog工程在按Enter键或Esc键的情况下退出,尤其是Enter键。 解决...
  • 由于tabindex属性,用户可以按下键盘上的tab按键,切换聚焦元素,导致对话框关闭。因此在对话框中监听键盘事件,禁止tab按键。 特性 点击浏览器外的地方,也会触发onblur,关闭弹窗。 (f12调试不好调) 代码 blur...
  • 在对话框程序设计中,Windows内置的对话框管理器为我们提供了常用的键盘操作支持,它包括子窗口控件的Tab停留和分组, 子窗口...对Enter,Esc和Ctrl+Break的处理支持,用于使用键盘快速关闭对话框1.Tab停留在对话框中,
  • 我希望在用户按下"后退"按钮(就像使用普通IME服务一样)时关闭键盘(可见性= GONE),但对话框保持可见。但是,据我从SO和其他方面的相当广泛的阅读中可以看到,似乎没有办法做到这一点。如果我将对话框设置为不可取消...
  • 在CAD中,快捷键很多,与Ctrl键相关的也不少,有一些是我们不怎么用的,有一些却得很频繁,下面我们一起来看看经常用到的Ctrl键相关快捷键。1、 Ctrl+0Ctrl+0:控制全屏显示。当按住键盘Ctrl键及数字0时,CAD立马...
  • Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框,当运行的时候,你会发现当关闭这个对话框时,另一个对话框才显示;另一种是使用show()方法,它使得对话框既可以模态显示,也...
  • MFC对话框建立与关闭

    2014-05-30 15:37:38
    1.显示模式对话框: CDialogDemo dlg; dlg.DoModal(); 2.显示非模式对话框: CDialogDemo *dlg=new CDialogDemo(this);  dlg->Create(IDD_GENERAL_CONTROL);...二、关闭对话框: 1.CDialog::OnOK

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,724
精华内容 20,289
关键字:

怎样用键盘关闭对话框