精华内容
下载资源
问答
  • 关闭对话框的方法

    2013-06-17 12:29:11
    参考网上资料,对话框关闭流程如下: 从用户单击关闭按钮(标题栏最右边)或者用鼠标或键盘选择系统菜单关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?  1、首先会产生一个WM_...

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

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

      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()函数

    展开全文
  • 主要介绍了Android实现点击AlertDialog上按钮时不关闭对话框的方法,涉及设置监听的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 屏蔽ESC和ENTER键关闭对话框的方法 转自:http://blog.csdn.net/xgx198831/article/details/6713651  MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法 或许还有其它更好的办法,但下面这个肯定有用,...


                                         MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法

    转自:http://blog.csdn.net/xgx198831/article/details/6713651

     MFC对话框程序  屏蔽ESC和ENTER键关闭对话框的方法

    或许还有其它更好的办法,但下面这个肯定有用,主要就是重载PreTranslateMessage()函数,在这个函数里捕捉ESC和ENTER键按下时的消息,然后什么都不做,或是添加代码完成你自己想要实现的功能。
    1.完全屏蔽ESC键与ENTER回车键
    BOOL CTest1Dlg::PreTranslateMessage(MSG* pMsg)
    {
        if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)    
            return TRUE; 
        if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)    
            return TRUE; 
        return CDialog::PreTranslateMessage(pMsg);
    }

    2.完全屏蔽ESC键,捕捉ENTER回车键
    BOOL CTest1Dlg::PreTranslateMessage(MSG* pMsg)
    {
        if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN )     
        {
            if(GetFocus()->GetDlgCtrlID()==IDC_MSG_SEND)//按下回车,如果当前焦点是在自己期望的控件上
            {                                           
                CTest1Dlg::OnBnClickedBtnSend();//添加自己的处理代码
            }
             return TRUE;
        }
        if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)     
            return TRUE;  
        return CDialog::PreTranslateMessage(pMsg);
    }
    该代码在VC中的MFC程序测试通过,完全可以实现,红色的代码是可以根据自己的实际情况修改的。

    =========================================

    esc和enter键在一般人的使用中会认为是取消或者确认当前输入的意思,并且认为焦点会后移(tab键),但是windows的mfc对应的是dialog的onok和oncancel函数会关闭当前窗体,所以一般就是取消作用。一切以鼠标为主,键盘只是输入的数据和字符。



    展开全文
  • MFC中防止Enter和ESC关闭对话框的方法

    千次阅读 2016-07-07 14:49:37
    在对话框有焦点情况下,按Enter会自动触发每个对话框自带默认“确定“按钮,从而触发消息促使系统去调用OnOK()函数,关闭对话框窗口。 所以我们需要将OnOK()函数复写,使它什么也不做就行了。 2.按ESC为...

    测试环境:Win7_64bit + VS2013


    原因分析:

    1.按Enter为什么会关闭窗口?

    在对话框有焦点的情况下,按Enter会自动触发每个对话框自带的默认“确定“按钮,从而触发消息促使系统去调用OnOK()函数,关闭对话框窗口。

    所以我们需要将OnOK()函数复写,使它什么也不做就行了。


    2.按ESC为什么会关闭窗口?

    在对话框有焦点的情况下,按ESC会自动触发每个对话框自带的默认“取消“按钮,从而促使系统去调用OnCancel()函数,关闭对话框窗口。

    那么我们将OnCancel()函数复写,使它什么也不做就行了。

    但是这样有个问题,就是现在如果我们点击右上角的关闭窗口按钮,这会触发WM_CLOSE消息,而这个消息最终也会调用OnCancel()来关闭窗口,当我们复写了OnCancel()后,会发现点关闭按钮也没法关闭窗口了。

    所以我们继续复写WM_CLOSE消息响应函数OnClose(),让其直接调用父类的OnCancel()方法来关闭对话框,而不是使用我们复写的OnCancel()。


    实际操作:

    第一步,进入类向导,选中目标对话框对应的CXXXDlg类名。


    第二步,选择“消息”选项卡,复写WM_CLOSE消息响应函数。


    第三步,选择“虚函数”选项卡,复写OnCancel和OnOk两个函数。


    修改内容如下:

    void CXXXDlg::OnClose() {
    	CDialogEx::OnCancel();
    }
    void CXXXDlg::OnOK() {}
    void CXXXDlg::OnCancel() {}

    现在在对话框得到焦点的情况下,按ESC或者Enter都不会将对话框窗口关闭了,而点击关闭窗口按钮可以正常的关闭。
    展开全文
  • 今天在搞支付宝快捷登录时候,因为需要保留原页面数据,因此不能使用跳转返回方式,就尝试采用弹出新窗口方式,那么最后支付宝验证成功返回后,...// 不提示窗口关闭对话框 parent.window.opener = null; paren

    今天在搞支付宝快捷登录的时候,因为需要保留原页面的数据,因此不能使用跳转返回的方式,就尝试采用弹出新窗口的方式,那么最后支付宝验证成功返回后,需要自动关闭新打开的窗口。

    我们知道直接使用window.close()是会出现关闭提示的,这个用户体验就打折扣了,于是找到了完美关闭的方法,代码如下:

    // 不提示窗口关闭对话框
    parent.window.opener = null;
    parent.window.open("", "_self");
    parent.window.close();
    parent.window.location.href = "";
    window.close();


    展开全文
  • 希望在Windows开机后自动弹出个对话框提示一下,过8秒后自动关闭 一、解决 1.建项目和源文件 在VC6.0中新建Win32项目 新建C++源文件 2.编写代码 基础结构 #include <windows.h> int WINAPI ...
  • Visual C++ 使用MFC 生成dialog工程默认情况下按Enter键或Esc键后会导致程序直接退出。 该现象并非Bug或问题,但是在日常开发过程中并不需要Dialog工程在...解决方法: 在CXXXDlg类中重载函数PreTranslateMessa...
  • VS2010 MFC中屏蔽ESC和ENTER键关闭对 话框的方法   重载PreTranslateMessage()函数,在此函数里捕捉ESC和ENTER键按下时的消息。 1.完全屏蔽ESC键与ENTER回车键 BOOL CLXTDlg::...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,604
精华内容 1,041
关键字:

关闭对话框的方法