关于弹出式(POPUP)对话框的显示
来源:互联网 发布:神武挖山水算法 编辑:程序博客网 时间:2024/05/02 00:18
对于弹出式对话框的显示:当我们在一个类的构造函数中添加了成员:另一个对话框类的对象m_ClientMessageDlg(该对话框类为POPUP型),那么我们在初始化函数中显示对话框类时,若添加以下代码:m_ClientMessageDlg.Create(IDD_DIALOG_CLIENTMESSAGE,this);m_ClientMessageDlg.ShowWindow(SW_HIDE); 该段代码的目的是先创建对话框,然后隐藏。 那么我们会发现程序运行时对话框弹出,然后隐藏,对话框显示时间为这行代码执行时间。若这个弹出式对话框与某个按键相关联,在该按键响应函数中添加如下代码:m_ClientMessageDlg.ShowWindow(SW_SHOW);让对话框显示。这时对话框确实可以显示。但从程序运行到对话框显示的整个过程可能达不到我们需要显示的效果,因为在程序刚刚运行时,对话框会一闪而过,继续按按键,对话框正常显示 。 问题出在Create上。对于弹出式对话框,创建时就显示了。那么对于弹出式对话框,在按键响应函数中直接添加如下代码:m_ClientMessageDlg.DoModal()。关于doModal函数,MSDN中这样说明:
CDialog::DoModal
Call this member function to invoke the modal dialog box and return the dialog-box result when done.
但是若在按键响应函数中添加如下代码:m_ClientMessageDlg.Create(IDD_DIALOG_CLIENTMESSAGE,this); ,那么也可以实现对话框的正常显示,但是,当第二次点击按键时,系统会弹出非法操作符:
这主要是在点击按键创建对话框后,虽然说关闭了对话框,但是对话框句柄并没有释放,该对话框与m_ClientMessageDlg这个对象已关联,第二次点击按键,又重复创建一个窗口并试图与m_ClientMessageDlg这个对象相关联,但因为此时m_ClientMessageDlg这个对象已经和一个窗口绑定在一起了,所以就会出现非法操作。
所以关于弹出式对话框,使用DoModal比较好。
- 关于弹出式(POPUP)对话框的显示
- Datagrid popup as itemEditor(翻译转载)弹出式的数据表编辑器的实现
- 手动添加popup弹出式菜单
- 用swt写的弹出式对话框
- 一个创建弹出式对话框的函数
- VC弹出式对话框的程序实例
- Android之AlertDialog(弹出式对话框)的使用
- 获取弹出式窗口(对话框)句柄
- 关于Popup的一些技巧
- 怎样在窗体上点鼠标右键产生一个弹出式选单(PopUp Menu)(VB中)
- javascript:window.popup()+XSLT弹出式菜单
- MFC 关于在对话框上的同一区域显示不同的内容(子对话框)
- 分享一个JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)
- Swt弹出式对话框
- java常用弹出式对话框
- alertdialog弹出式对话框
- Android 向下弹出式对话框
- AlertDialog_弹出式对话框
- 修路方案
- 质量如何登入大雅之堂
- 新的开始
- SSL原理介绍
- Struts2 概述
- 关于弹出式(POPUP)对话框的显示
- C++归并算法
- Linux下的ELF文件格式简介
- struts搭建环境
- HOG特征
- 学拳录.第10势 前堂拗步
- week_7_homework
- 第四周作业
- 【LeetCode】Best Time to Buy and Sell Stock