精华内容
下载资源
问答
  • 模态对话框与非模态对话框

    千次阅读 2010-03-28 15:17:00
    对话框分模态对话框和非模态对话框,两者呈现区别就是:前者获得...但是,在对话框创建和删除过程中,非模态对话框与模态对话框相比有下列不同之处:  1、非模态对话框对象是用new操作符在堆中动态创建,而不

          对话框分模态对话框和非模态对话框,两者呈现的区别就是:前者获得程序的焦点,垄断用户输入;后者则相反,用户可以同时操作当前对话框和其他窗口。
         非模态对话框的设计与模态对话框基本类似,也包括设计对话框模板和设计CDialog类的派生类两部分。但是,在对话框的创建和删除过程中,非模态对话框与模态对话框相比有下列不同之处:
         1、非模态对话框对象是用new操作符在堆中动态创建的,而不是以成员变量的形式嵌入到别的对象中或以局部变量的形式构建在堆栈上。通过调用CDialog::Create函数来启动对话框,而不是CDialog::DoModal,这是两种对话框的本质区别所在。
         至于为什么非模态对话框不会垄断用户的输入可解释如下:由于Create函数不会启动新的消息循环,对话框与应用程序共用同一个消息循环,这样对话框就不会垄断用户的输入。Create在显示了对话框后就立即返回,而DoModal是在对话框被关闭后才返回的。还有一点需要清楚为什么非模态对话框通常new出来,众所周知,在MFC程序中,窗口对象的生存期应长于对应的窗口,也就是说,不能在未DestroyWindow的情况下先把对应的窗口对象delete。由于在Create返回后,不能确定对话框是否已关闭,这样也就无法确定对话框对象的生存期,因此只好在堆中构建对话框对象,而不能以局部变量的形式来构建之。
          2、关闭非模态对话框时需要调用DestroyWindow销毁窗口(模态对话框会调用CDialog::EndDialog),调用delete删除窗口对应的对话框对象。一般来说,有两种方式销毁窗口和删除对象:
          第一种:外部方式——在拥有非模态对话框的程序退出时显式调用DestroyWindow和delete完成窗口的销毁和删除,适用于非模态对话框创建一次在程序退出才需要销毁的情况;
          第二种:内部方式——重写OnOk和OnCancel函数并在函数中调用DestroyWindow,同时在CWnd::PostNcDestroy中delete对象,适用于多次重复创建非模态对话框的情况。其实,重不重写确定和取消这两个函数示情况而定,关键是要有DestroyWindow的过程。

    展开全文
  •  JDialog类和JFrame都是Windows子类,二者实例都是底层容器,但二者有相似之处也有不同的地方,主要区别是JDialog类创建对话框必须要依靠于某个窗口。  创建对话框与创建窗口类似,通过建立JDialog子类来...
    1、Dialog类主要方法

           JDialog类和JFrame都是Windows的子类,二者的实例都是底层容器,但二者有相似之处也有不同的地方,主要区别是JDialog类创建的对话框必须要依靠于某个窗口。

           创建对话框与创建窗口类似,通过建立JDialog的子类来建立一个对话框类,然后这个类的一个实例就是一个对话框。对话框是一个容器,它的默认布局是BorderLayout,对话框可以添加组件,实现与用户的交互操作。需要注意的是,对话框可见时,默认地被系统添加到显示器屏幕上,因此不允许将一个对话框添加到另一个容器中。

    JDialog():构造一个无标题的初始不可见的对话框。对话框依赖一个默认的不可见的窗口,该窗口由Java运行环境提供。

    JDialog(JFrame owner):构造一个无标题的初始不可见的无模式的对话框。owner是对话框所依赖的窗口。

    JDialog(JFrame owner, String title):构造一个具有标题title的初始不可见的无模式的对话框,owner是对话框所依赖的窗口。

    JDialog(JFrame owner, String title, boolean modal):构造一个具有标题title的初始不可见的对话框,owner是对话框所依赖的窗口,modal决定对话框有无模式。

    getTitle():获取对话框的标题。

    setTitle():设置对话框的标题。

    setModal(boolean):设置对话框的模式。

    setSize():设置对话框的大小。

    setVisible(boolean b):显示或隐藏对话框。

    public void setJMenuBar(JMenuBar menu):对话框添加菜单条。

    2、对话框模式

           对话框分为无模式和有模式两种。

           如果一个对话框是有模式的,那么当这个对话框处于激活状态时,只让程序响应对话框内部的事件,而且将堵塞其它线程的执行,用户不能再激活对话框所在程序中的其它窗口,直到该对话框消失不可见。

           无模式对话框处于激活状态时,能再激活其它窗口,也不堵塞其它线程执行。

    3、文件对话框(FileDialog)

           文件对话框是一个从文件中选择文件的界面,文件对话框事实上并不能打开或保存文件,它只能得到要打开或保存的文件的名字或所在的目录,要想真正实现打开或保存文件,还必须使用输入、输出流。

           javax.swing包中的JFileChooser类可以创建文件对话框,使用该类的构造方法JFileChooser()创建初始不可见的有模式的文件对话框。showSaveDialog(Component a), showOpenDialog(Component a)都可使得对话框可见,但外观有所不同。showSaveDialog(Component a)方法提供保存文件的界面,showOpenDialog(Component a)方法提供打开文件的界面。参数a指定对话框可见时的位置。
           当用户单击文件对话框上的“确定”、“取消”按键或关闭图标,文件对话框将消失,方法返回:JFileChooser.APPROVE_OPTION和JFileChooser.CANCEL_OPTION之一。当返回值是JFileChooser.APPROVE_OPTION时,可以使用JFileChooser类的getSelectedFile()得到文件对话框所选择的文件。

    FileDialog是Dialog的子类,主要方法有:
      1、FileDialog(Frame f,String s,int mode):构造方法,f为所依赖的窗口对象,s是对话框的名字,mode取值为FileDialog.LOAD或FileDialog.SAVE。
      2、public String getDirwctory():获取当前对话框中所显示的文件目录。
      3、public String getFile():获取对话框中显示的文件的字符串表示,如不存在则为null。

    4、消息对话框

           消息对话框是有模式对话框,进行一个重要的操作动作之前,弹出一个消息对话框。可以用javax.swing包中的JOptionPane类的静态方法。

    public static void showMessageDialog(Component parentComponent,String message, String title, int messageType);

    Component parentComponent:消息对话框依赖的组件

    String message: 要显示的消息

    String title:对话框的标题

    int messageType):对话框的外观,取值如下:

    JOptionPane.INFORMATION_MESSAGE

    JOptionPane.WARNING_MESSAGE

    JOptionPane.ERROR_MESSAGE

    JOptionPane.QUESTION_MESSAGE

    JOptionPane.PLAIN_MESSAGE

    5、输入对话框

           输入对话框含有供用户输入文本的文本框、一个“确定”和“取消”按钮,是有模式对话框。当输入对话框可见时,要求用户输入一个字符串。javax.swing包中的JOptionPane类静态方法:

    public static String showInputDialog(Component parentComponent, Object message, String title, int messageType);

    Component parentComponent:指定输入对话框所依赖的组件。

    Object message:指定对话框上的提示信息。

    String title:对话框上的标题。

    int messageType:确定对话框的外观,取值如下:

    ERROR_MESSAGE

    INFORMATION_MESSAGE

    WARNING_MESSAGE

    QUESTION_MESSAGE

    PLAIN_MESSAGE

    6、确认对话框

           确认对话框是有模式对话框,可以用javax.swing包中的JOptionPane类的静态方法创建:
      public static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType);

    Component parentComponent:对话框所依赖的组件。

    Object message:对话框上显示的消息

    String title:对话框的标题

    int optionType):对话框的外观,取值如下

    JOptionPane.YES_NO_OPTION

    JOptionPane.YES_NO_CANCEL_OPTION

    JOptionPane.OK_CANCEL_OPTION

    当对话框消失后,showConfirmDialog方法会返回下列整数之一:

    JOptionPane.YES_OPTION

    JOptionPane.NO_OPTION

    JOptionPane.CANCEL_OPTION

    JOptionPane.OK_OPTION

    JOptionPane.CLOSED_OPTION

    7、颜色对话框

          使用java.swing包中的JColorChooser类表静态方法创建:

      public static Color showDialog(Component component,String title,Color initialColor); 

    Component component:对话框所依赖的组件。

    String title:对话框的标题。

    Color initialColor):对话框消失后返回的默认颜色

    注意:在上面的所有message中,都可以用JLabel来代替字符串。

    展开全文
  • VC++中非模态对话框生成模态有相似之处,主要不同在于模态采用DoModal函数生成,而非模态采用Create函数;而且非模态对话框生存周期较长,一般和父窗口的生存周期相同。 到添加类一步,非模态模态都是相同的. ...
         VC++中非模态对话框生成与模态有相似之处,主要不同在于模态采用DoModal函数生成,而非模态采用Create函数;而且非模态对话框生存周期较长,一般和父窗口的生存周期相同。                到添加类一步,非模态与模态都是相同的.   但由于要使用Create函数,因为要在生成非模态对话框的父窗口中添加对话框类的指针,类型为(假设添加类时,非模态对话框类为CModallessDlg)CModallessDlg *,假设指针名为m_pModalessDlg。  
        在程序的适当处(一般在视图文件中)添加下列代码即可生成、显示非模态对话框:
              CModallessDlg *m_pModalessDlg=new CModallessDlg;       
             m_pModalessDlg->Create(标识,this);  // 标识即为所要显示的对话框的ID  
            m_pModalessDlg->ShowWindow(SW_SHOW);  
            在退出前要清除生成的非模态对话框:     
           delete m_pModalessDlg;       
           m_pModalessDlg=NULL;
    展开全文
  • 非模态对话框生成模态有相似之处,主要不同在于模态采用DoModal函数生成,而非模态采用Create函数;而且非模态对话框生存周期较长,一般和父窗口的生存周期相同。 到添加类一步,非模态模态都是相同的,由于要...
    非模态对话框生成与模态有相似之处,主要不同在于模态采用DoModal函数生成,而非模态采用Create函数;而且非模态对话框生存周期较长,一般和父窗口的生存周期相同。 
    

         到添加类一步,非模态与模态都是相同的,由于要使用Create函数,因为要在生成非模态对话框的父窗口中添加对话框类的指针,类型为(假设添加类时,非模态对话框类为CModallessDlg)CModallessDlg *,假设指针名为m_pModalessDlg。

          在程序的适当处添加下列代码即可生成、显示非模态对话框:

          m_pModalessDlg=new CModallessDlg;
          m_pModalessDlg->Create(标识,this);

          m_pModalessDlg->ShowWindow(SW_SHOW);

          在退出前要清除生成的非模态对话框:

         delete m_pModalessDlg;
         m_pModalessDlg=NULL;

    参考王华、朱时银、史兰等编著《VC++.NET 开发指南与实例详析》, 机械工业出版社
    说明:本人是初学者,理解可能偏颇很多,欢迎评论及指点 

    展开全文
  • 需要特别指出的是,SetWindowRgn()所指定的区域是针对整个窗口的,而Bitblt()/ StretchBlt()的输出区域是针对于客户区,两者在定位上是不同的,编程中应加以注意并灵活应用,这也是前面所以设置边框大小等...
  • SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 3. API文件处理函数 ...
  • WindowsXP安装SQL_server2000过程图解

    热门讨论 2012-06-07 11:22:37
    除非一些必要安装在系统盘软件(例如“Turbo C For Windows 集成实验学习环境”,其它软件都安装到其它应用盘)。 点击下一步,继续安装出现下面对话框 在 "服务账号" 窗口,请选择 "对每个服务使用统一...
  • PySide是一个免费软件,PyQt不同之处在于使用了LGPL,允许PySide免费开发商业软件。 PySide有15个模块。这些模块支持对GUI,多媒体,XML,网络以及数据库进行操作。本教程目的主要是学习其中两个模块:...
  • MFC程序员WTL指南

    2009-08-21 20:21:58
    不,因为ATL只是对COM进行了简单封装,这也是ATL强大之处. 是,写ATL您必须通晓COM. 您在ATL上额外花费功夫跟您学习COM所作努力比起来,简直微不足道.这跟那些需要把主要精力花费在学习类库本身,忽略COM库...
  • 这样虽然解决了上面主窗口一闪而过问题,但是,如果在my1 对话框出现时 候不点enterBtn,而是直接关闭对话框,那么此时整个程序应该结束执行,但 是事实是这样吗?如果你此时对程序进行了改动,再次按下run ...
  • excel使用

    2012-11-25 17:06:01
    想要快速知道每个单元格中公式形式,以便编辑修改,可以这样做:用鼠标左键单击“工具”菜单,选取“选项”命令,出现“选项”对话框,单击“视图”选项卡,接着设置“窗口选项”栏下“公式”项有效,单击“确定...
  • PT80-NEAT开发指南v1.1

    2014-06-24 18:38:34
    窗口的概念 ........................................................................................................................................... 21 窗口的创建和删除 ................................
  • (1)针对多窗口类浏览器模式问题,指出并分析了该问题存在原因,利用Activity运行机制,通过Fragment栈对主要模块Webview进行管理,实现对不同模块之间切换控制。 (2)针对跨域数据交互问题,指出并分析了...
  • 基于ASP.NET在线考试系统设计

    热门讨论 2011-03-14 16:07:15
    如果在单击“新建工程”对话框“打开”按钮之前选定了对话框左下角“不再显示这个对话框”复选框,则在以后启动Visual Basic时就不会显示这个对话框了 单击“新建工程”对话框“打开”按钮,对话框关闭,...
  • MFC程序框架剖析

    2015-03-05 09:53:19
    一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。...
  • LINGO软件学习

    2009-08-08 22:36:50
    外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口标题为LINGO Model – LINGO1的窗口是LINGO默认模型窗口,建立模型都都要在该窗口内编码实现。下面举两个例子...
  • Speed Bar位于主窗口的左下端,由两排共14个加速按钮组成。这些按钮是菜单功能的快捷方式,各种图标直观地表示了它能执行的动作。Component Panel由一行、若干页对象按钮所组成,利用它来选择需要的部件并将它放到...
  • <br> 一、 引言 <br> 我们在编制程序中根据需求的不同会在程序风格上选择多文档、单文档或是对话框模式 ,对于单文档模式可能是我们使用比较多的,但有时我们想采用单文档的形式显示多个不同 的...
  • 不同于一般Android游戏编程书,它没有详尽介绍在这个平台上开发游戏方方面面,而是找到了一个独特着眼点,让你切实领会如何“事半功倍”地完成Android游戏开发。  也许你从未想过Wolfenstein 3D和Doom...
  • Visual Studio程序员箴言--详细书签版

    热门讨论 2012-10-16 20:37:39
    技巧3.2 在不打开“查找和替换”窗口的情况下,使用Ctrl+F3键搜索当前选中的单词 58 技巧3.3 不自动搜索当前选中的单词 58 3.1.3 重复上次搜索 59 技巧3.4 使用F3键搜索上次的搜索内容 59 3.2 快速搜索 59...
  • Proteus 其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 工 作情况,也能仿真单片机外围电路或没有单片机参与其它电路工作情况。 因此在仿真和程序调试时,关心不再是某些语句执行时单片机寄存器和...
  • windows 程序设计

    2011-07-24 21:16:30
    一个Windows的.EXE文件中有使用到的不同动态链接库的参考数据,所使用的函数即在那些动态链接库中。当Windows程序被加载到内存中时,程序中的呼叫被指向DLL函数的入口。如果该DLL不在内存中,就把它加载到内存中。 ...

空空如也

空空如也

1 2 3 4 5
收藏数 99
精华内容 39
关键字:

对话框与窗口的不同之处是