精华内容
下载资源
问答
  • MFC对话框变透明

    2011-09-10 18:18:00
    MFC对话框变透明放在OnInitDialog()中
  • android自定义对话框去除黑底

    千次阅读 2013-09-16 11:19:06
    --屏幕背景是否暗--> <item name="android:backgroundDimAmount">0.6 Java代码部分: package com.laohuai.customdialog; import com.laohuai.intenttest.R; import android.app.Activity; ...

    在做Android开发中经常会使用到自定义样式的Dialog,尤其是在游戏当中,大家通常都是通过自定义一个布局文件来设置Dialog中显示的内容,但是仅仅这样还是不行的~会有黑色的框和白色的边。这就需要我们自定义Dialog的样式了。


    首先是Dialog的布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/bg">

    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/img1"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:id="@+id/img1"
    />

    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/img2"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:id="@+id/img1"
    />

    </RelativeLayout>

    然后是Dialog的样式

    <style name="custom_dialog" parent="@android:style/Theme.Dialog">

    <item name="android:windowFrame">@null</item><!--Dialog的windowFrame框为无 --> 
    <item name="android:windowIsFloating">true</item><!-- 是否漂现在activity上 -->
    <item name="android:windowIsTranslucent">true</item><!-- 是否半透明 -->
    <item name="android:windowNoTitle">true</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:windowBackground">@android:color/transparent</item><!--  去除黑色边框的关键设置项 -->
    <item name="android:backgroundDimEnabled">true</item><!--屏幕背景是否变暗-->
    <item name="android:backgroundDimAmount">0.6</item>
    </style>

    Java代码部分:

    package com.laohuai.customdialog;

    import com.laohuai.intenttest.R;

    import android.app.Activity;
    import android.app.Dialog;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    public class Main extends Activity {
    private Button button;

    private Dialog dialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    button = (Button) findViewById(R.id.button);

    //若自定义了dialog类,如public class CustomDialog extends Dialog则在其对应构造方法中调用带有样式id的即可

    /** public CustomDialog(Context context) {
    super(context,R.style.custom_dialog);
    this.context = context;
    setContentView(R.layout.customdialog);
    initView();
    }
    */

    dialog = new Dialog(this,R.style.dialog);
    dialog.setContentView(R.layout.test_dialog);
    dialog.setCancelable(true);

    button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    dialog.show();
    }
    });
    }
    }


    http://blog.csdn.net/cwx01perfect/article/details/7814828


    下文转自:

    http://www.cnblogs.com/TerryBlog/archive/2010/09/07/1820804.html

    使用样式文件,在values 目录下新建styles.xml文件,编写如下代码:

    复制代码
    < resources >
        
    < style  name ="dialog"  parent ="@android:style/Theme.Dialog" >
             
    < item  name ="android:windowFrame" > @null </ item >
            
    < item  name ="android:windowIsFloating" > true </ item >
            
    < item  name ="android:windowIsTranslucent" > false </ item >
            
    < item  name ="android:windowNoTitle" > true </ item >
            
    < item  name ="android:background" > @android:color/black </ item >
            
    < item  name ="android:windowBackground" > @null </ item >
            
    < item  name ="android:backgroundDimEnabled" > false </ item >
        
    </ style >
    </ resources >
    复制代码

     

    调用时,使用AlerDialog的接口类,Dialog 接口编写如下代码: 

        Dialog dialog  =   new  Dialog(SetActivity. this , R.style.dialog);
                        dialog.setContentView(R.layout.test);
                        dialog.show();

     下面我们查看一下Dialog的源码文件,里面的构造函数为如下:

     复制代码

    public  Dialog(Context context,  int  theme) {
            mContext 
    =   new  ContextThemeWrapper(
                context, theme 
    ==   0   ?  com.android. internal .R.style.Theme_Dialog : theme);
            mWindowManager 
    =  (WindowManager)context.getSystemService( " window " );
            Window w 
    =  PolicyManager.makeNewWindow(mContext);
            mWindow 
    =  w;
            w.setCallback(
    this );
            w.setWindowManager(mWindowManager, 
    null null );
            w.setGravity(Gravity.CENTER);
            mUiThread 
    =  Thread.currentThread();
            mDismissCancelHandler 
    =   new  DismissCancelHandler( this );
        }
    复制代码

     

    这里面我们可以看出,Android 使用了默认的构造函数为Dialog 设置样式,如果没有为其设置样式,即默认加载事先编写好的样式文件,Dialog 一共由多个9.png的图片构成,大部分都是带有边框的9.png图片,所以就是为什么我们上边的样式文件要将其背景去除掉。这个东西搞了我好久,希望对你有帮助 

    前后效果对比

    未设置前:

     

    设置后:



    展开全文
  • 可以设置modal-append-to-body这个属性,设置为false,就可以把遮罩层插入到dialog的父元素上了。 官网文档地址:... ... :visible.sync="centerDialogVisible" ... width="30...

    可以设置 modal-append-to-body这个属性,设置为false,就可以把遮罩层插入到dialog的父元素上了。

    官网文档地址: https://element.eleme.cn/#/zh-CN/component/dialog#attributes

     

    	<el-dialog
    	  title="二维码"
    	  :visible.sync="centerDialogVisible"
    	  :modal-append-to-body="false"
    	  width="30%"
    	  center>
    	  <!-- <span><img src="" id="barcodeImg"/></span> -->
    	  <el-image style="width: 150px; height: 150px" :src="barcodeImg.src" fit="fill" id="barcodeImg"></el-image>
    	  <span slot="footer" class="dialog-footer">
    	    <el-button @click="centerDialogVisible = false">取 消</el-button>
    	    <el-button type="primary" @click="downloadBarcode">下载二维码</el-button>
    	  </span>
    	</el-dialog>

     

    展开全文
  • JQuery实现对话框效果 即弹出对话框背景暗且不可操作
  • 在win7中用vc++6.0写的mfc程序,一运行的主对话框字体是正常的,点击按钮弹出对话框之后字体就变成又粗又了。写了很多个mfc程序都是这样,不知道怎么回事,怎么解决,求大神指点。![CSDN移动问答][1] [1]: ...
  • 对话框

    千次阅读 2014-12-08 05:05:51
    对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是个对话框,只是它做了很多美工方面的工作,将其大大美化了。  创建对话框主要分两大步,第一,创建对话框...

    对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是个对话框,只是它做了很多美工方面的工作,将其大大美化了。

           创建对话框主要分两大步,第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;第二,生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等。在本节中先讲讲怎样创建对话框模板和设置对话框属性。

      创建基于对话框的应用程序框架

           之前创建的HelloWorld程序是单文档应用程序,生成了多种窗口,如果用它来将讲创建对话框的话可能有些复杂,对大家单纯理解对话框有点影响,所以这里就再创建一个基于对话框的应用程序,用来实现加法运算的功能。创建步骤同单文档应用程序大同小异,简单步骤如下:

           1.选择菜单项File->New->Project,弹出“New Project”对话框。

           2.左侧面板中Installed Templated的Visual C++下选择MFC,中间窗口中选择MFC Application,然后在下面的Name编辑框中键入工程名称,本例取名“Addition”,在Location编辑框中设置工程的保存路径。点“OK”。

           3.点“Next”到“Application Type”对话框,在Application type下选择Dialog based,其他使用默认设置,点“Finish”。

           我们可以在Solution Explorer视图中看到,此工程的文件要比单文档应用程序少的多,在Class View中主要有三个类:CAboutDlgCAdditionAppCAdditionDlg。CAboutDlg是应用程序的“关于”对话框类,CAdditionApp是由CWinApp派生的类CAdditionDlg是主对话框类,主对话框也就是此应用程序运行后显示的主要界面。

           注:如果在VS2010中找不到Solution Explorer或Class View等视图,可以在菜单项View下找到对应视图选项选择即可。在VS2010的使用介绍中已经有讲解。

           在Resource View视图中可以看到工程Addition的资源树,展开Addition.rc,下面有四个子项:Dialog(对话框)、Icon(图标)、String Table(字符串表)和Version(版本)。然后展开Dialog项,下面有两个对话框模板,其ID分别为:IDD_ABOUTBOX和IDD_ADDITION_DIALOG,前者是“关于”对话框的模板,后者是主对话框的模板。ID是资源的唯一标识,本质上是一个无符号整数,一般ID代表的整数值由系统定义,我们无需干涉。

           对话框模板

           可见对于主对话框来说,创建对话框第一步中的创建新的对话框模板已经由系统自动完成了。而如果是再添加对话框需要创建新的对话框模板时,需要在Resource View的“Dialog”节点上点右键,在右键菜单中选择“Insert Dialog”,就会生成新的对话框模板,并且会自动分配ID

           在Resource View的资源树中双击某个ID,可在中间区域内显示相应的资源界面。双击IDD_ADDITION_DIALOG时,中间区域就会显示Addition对话框模板。如下图:

    VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)

           设置对话框属性

           在Addition对话框模板上点右键,然后在右键菜单中选择Properties,则在右侧面板中会显示对话框的属性列表。如下图:

    VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)

           鸡啄米在这里对经常使用的几个属性作简单说明,并对Addition对话框进行属性设置说明。

           1.ID:对话框ID,唯一标识对话框资源,可以修改。此处为IDD_ADDITION_DIALOG,我们不修改它。

           2.Caption:对话框标题。此处默认为Addition,我们将其修改为“加法计算器”。

           3.Border:边框类型。有四种类型:None、Thin、Resizing和Dialog Frame。我们使用默认的Dialog Frame。

           4.Maximize:是否使用最大化按钮。我们使用默认的False。

           5.Minimize:是否使用最小化按钮。同样我们使用默认的False。

           6.Style:对话框类型。有三种类型:Overlapped(重叠窗口)、Popup(弹出式窗口)和Child(子窗口)。弹出式窗口比较常见。我们使用默认的Popup类型。

           7.System Menu:是否带有标题栏左上角的系统菜单,包括移动、关闭等菜单项。我们使用默认的True。

           8.Title Bar:是否带有标题栏。我们使用默认的True。

           9.Font(Size):字体类型和字体大小。如果将其修改为非系统字体,则Use System自动改为False。而如果Use System原来为False,将其修改为True,则Font(Size)自动设置为系统字体。这里我们使用默认的系统字体。

           根据以上说明,其实我们只修改了标题属性。这时我们运行此程序后的界面如下:

    VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)

    为对话框添加控件

    实现加法计算有几个必要的因素:被加数、加数、和。被加数和加数需要输入,和需要输出显示。那么这几个因素都需要相应的控件来输入或显示,下面鸡啄米就一步步讲解如何添加这些控件。

           1.为对话框添加一个静态文本框(Static Text),用于显示字符串--“被加数”。

           删除控件时,可以使用鼠标左键点击选中它,选中后控件的周围会出现虚线框,然后按Delete键就可以将其删除了。在“Addition”工程的Resource View中打开上一讲中创建的对话框模板IDD_ADDITION_DIALOG,自动添加的静态文本框就可以使用这种方法删除。

           在添加新的静态文本框以前,先看看Toolbox视图是否显示了,如果没有显示,在菜单栏上点击View->Toolbox即可。Toolbox视图如下图:

    VS2010/MFC编程入门之七(对话框:为对话框添加控件)

           Toolbox中列出了一些常用控件,其中有一个是Static Text,即是我们要添加的控件。在Toolbox中的Static Text上点下鼠标左键不放开,并拖到IDD_ADDITION_DIALOG对话框模板上,模板上会出现一个虚线框,我们找到合适的位置松开鼠标左键放下它。

           用鼠标左键选中控件后周围出现虚线框,然后鼠标移到虚线框上几个黑点的位置会变成双向箭头的形状,此时就可以按下鼠标左键并拖动来改变控件大小了。我们可以这样改变新添加的静态文本框控件的大小,以更好的显示标题。当然,整个对话框模板也可以用这种方法改变大小

           接下来就该修改静态文本框的文字了。鼠标右键点击静态文本框,在右键菜单中选择“Properties”,Properties面板就会显示出来,在面板上修改Caption属性为“被加数”,ID修改为IDC_SUMMAND_STATIC。此时模板如下图:

    VS2010/MFC编程入门之七(对话框:为对话框添加控件)

           2.为对话框添加一个编辑框(Edit Control),用来输入被加数。

           添加编辑框的过程与静态文本框类似,在Toolbox中选中Edit Control控件拖到对话框模板上,并使其与之前的静态文本框水平对齐(为了美观),然后调整其大小使之适合被加数的输入。

           在编辑框上点右键,仍然在右键菜单中选择“Properties”显示出属性(Properties)面板修改其ID为IDC_SUMMAND_EDIT。此时模板如下图:

    VS2010/MFC编程入门之七(对话框:为对话框添加控件)

           3.按照1的方法添加一个标题为“加数”的静态文本框,用于显示字符串--“加数”。并将其ID改为IDC_ADDEND_STATIC

           4.按照2的方法添加一个ID为IDC_ADDEND_EDIT的编辑框,用来输入加数

           5.按照1的方法添加一个标题为“和”的静态文本框,用于显示文字--“和”。并修改其ID为IDC_SUM_STATIC

           6.按照2的方法添加一个ID为IDC_SUM_EDIT的编辑框,用来显示最终的加和

           7.类似的添加按钮(Button)控件到对话框模板,用于在被点击后触发加法计算。修改其标题为“计算”,ID为IDC_ADD_BUTTON

           到此,对话框模板如图:

    VS2010/MFC编程入门之七(对话框:为对话框添加控件)

           8.删除OK按钮。打开Cancel按钮的属性面板,将标题改为“退出”,并使其与“计算”按钮水平对齐

           9.根据控件的布局,适当调整整个对话框模板的大小,使其相对控件布局来说大小合适,界面美观。

           这样在对话框模板中就把我们在本例中需要用到的控件就添加完了。最终效果如下:

    VS2010/MFC编程入门之七(对话框:为对话框添加控件)

           至此,我们的对话框资源就基本创建完了。应用程序运行后的界面效果已经很清楚了。

      例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的。大家用过VC++ 6.0的可能记得,我们定义的对话框类都是从CDialog类派生的,但在VS2010中,一般对话框类都是继承自CDialogEx类。

           创建对话框类

           如果是自己新添加的对话框模板,怎样为它创建对话框类呢?

           1.首先鸡啄米就按第六讲:创建对话框模板和修改对话框属性中说的那样,在Resource View的“Dialog”节点上右键,然后在右键菜单中选择“Insert Dialog”创建一个新的对话框模板,ID就使用默认的IDD_DIALOG1。

           2.在中间区域会显示新建的对话框模板,然后选中此对话框模板,点右键,在右键菜单中选择Add Class

     VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)

           3.选择“Add Class”后会弹出一个对话框,在对话框中“Class name”下的编辑框中写入自定义的类名就可以了,例如CMyDialog。

           4.最后点“Finish”完成。

           最终你就可以在Class View中看到新生成的对话框类CMyDialog了,并且在Solution Explorer中有相应的MyDialog.h头文件和MyDialog.cpp源文件生成。CMyDialog类同样派生于CDialogEx类。

           注意,一般类名都以C打头,又比如,CTestDlg。

           为对话框中的控件添加变量

           在上一讲中为对话框添加了几个控件,包括三个静态文本框,三个编辑框,一个按钮控件。程序自动生成的Cancel按钮保留,作为退出按钮,而OK按钮删除掉了。

           静态文本框只是为了说明后面紧跟的编辑框中数据的意义,是被加数、加数还是和,所以它们是不会变的,我们就不为它们添加变量了。按钮控件是用来操作的,这里也不为它们添加变量。编辑框中的数据可能会经常变化,有必要为它们每个控件关联一个变量

           首先为被加数的编辑框IDC_SUMMAND_EDIT添加变量

           1.在编辑框上点右键,在右键菜单中选择“Add Variable”。弹出添加成员变量的向导对话框。

           2.我们想为其添加值变量不是控件变量,所以对话框中“Category”下的组合框中选择Value

           3.“Variable type”下的组合框此时默认选中的是“CString”,CString是字符串类,显然不能进行加法运算。我们可以选择double、float、int等。这里我们选择double,即编辑框关联一个double类型的变量。

           4.在“Variable name”中写入自定义的变量名。鸡啄米为其取名m_editSummand。

    VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)

           5.点“Finish”完成。

           注意,类的成员变量名一般以m_打头,以标识它是一个成员变量。

           参照此方法,再分别为加数的编辑框IDD_ADDEND_EDIT添加double型变量m_editAddend、和的编辑框IDD_SUM_EDIT添加double型变量m_editSum。

           对话框类的数据交换和检验

           在程序运行界面中,用户往往会改变控件的属性,例如,在编辑框中输入字符串,或者改变组合框的选中项,又或者改变复选框的选中状态等。控件的属性改变后MFC会相应修改控件关联变量的值这种同步的改变是通过MFC为对话框类自动生成的成员函数DoDataExchange()来实现的,这也叫做对话框的数据交换和检验机制

           我们为三个编辑框添加了变量以后,在AdditionDlg.cpp中CAdditionDlg的DoDataExchange()函数的函数体中多了三条DDX_Text调用语句。下面是函数体代码和鸡啄米添加的注释。

    C++代码
    1. void CAdditionDlg::DoDataExchange(CDataExchange* pDX)   
    2. {   
    3.     // 处理MFC默认的数据交换   
    4.     CDialogEx::DoDataExchange(pDX);   
    5.     // 处理控件IDC_SUMMAND_EDIT和变量m_editSummand之间的数据交换   
    6.     DDX_Text(pDX, IDC_SUMMAND_EDIT, m_editSummand);   
    7.     // 处理控件IDC_ADDEND_EDIT和变量m_editAddend之间的数据交换   
    8.     DDX_Text(pDX, IDC_ADDEND_EDIT, m_editAddend);   
    9.     // 处理控件IDC_SUM_EDIT和变量m_editSum之间的数据交换   
    10.     DDX_Text(pDX, IDC_SUM_EDIT, m_editSum);   
    11. }  

          如果我们在程序运行界面中输入被加数,则通过CAddition的DoDataExchange()函数可以将输入的值保存到m_editSummand变量中,反之如果程序运行中修改了变量m_editSummand的值,则通过CAddition的DoDataExchange()函数也可以将新的变量值显示到被加数的编辑框中

           但是这种数据交换机制中,DoDataExchange()并不是被自动调用的,而是需要我们在程序中调用CDialogEx::UpdateData()函数由UpdateData()函数再去调用DoDataExchange()的。

           CDialogEx::UpdateData()函数的原型为:

           BOOL UpdateData(BOOL bSaveAndValidate = TRUE);

           参数:bSaveAndValidate用于指示数据传输的方向TRUE表示从控件传给变量FALSE表示从变量传给控件。默认值是TRUE,即从控件传给变量。

           返回值:CDialogEx::UpdateData()函数的返回值表示操作是否成功,成功则返回TRUE,否则返回FALSE。

      

          MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果,我们只需要实现某个消息的消息处理函数。

           一.添加消息处理函数

           以前面的加法计算器的程序为例,说明怎样为“计算”按钮控件添加消息处理函数。添加方法列出4种:

           1.使用Class Wizard添加消息处理函数

           用过的VC++ 6.0的朋友应该对Class Wizard很熟悉了,添加、消息处理函数等经常会用到它,可以说是一个很核心的功能。但从VS2002开始就见不到Class Wizard了,大部分功能都集成到对话框和控件等的属性中了,使用很方便。VS2010,久违的Class Wizard又回来了,对于从VC++ 6.0直接转VS2010的朋友可能觉得还是使用Class Wizard比较习惯。

    VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)

           大家应该记得,“计算”按钮的ID为IDC_ADD_BUTTON,上图中Commands标签下,Oject IDs列表中有此ID,因为我们是想实现点击按钮后的消息处理函数,所以在Messages列表中选择BN_CLICKED消息,然后点右上方的Add Handler就可以添加BN_CLICKED消息处理函数OnClickedAddButton了。当然你也可以改名,但一般用的默认的就可以。

           2.通过“Add Event Handler...”添加消息处理函数

           在“计算”按钮上点右键,然后在右键菜单中选择菜单项“Add Event Handler...”,弹出“Event Handler Wizard”对话框,如下图:

    VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)

           可见“Message type”中默认选中的就是BN_CLICKED消息,函数名和所在类都已经自动给出,直接点“Add and Edit”就可以了

           3.在按钮的属性视图中添加消息处理函数

           上面说过,从VS2002开始就主要从属性视图添加消息处理函数了。我们在“计算”按钮上点右键,在右键菜单中选择“Properties”,右侧面板中会显示按钮的属性视图。

    VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)

           我们可以像上图中那样,点属性视图的“Control Events”按钮(类似闪电标志),下面列出了“计算”按钮的所有消息。我们要处理的是BN_CLICKED消息,点其右侧空白列表项,会出现一个带下箭头的按钮,再点此按钮会出现“<Add> OnBnClickedAddButton”选项,最后选中这个选项就会自动添加BN_CLICKED处理函数了。

           4.双击按钮添加消息处理函数

           最直接最简单的方法就是,双击“计算”按钮,MFC会自动为其在CAdditionDlg类中添加BN_CLICKED消息的处理函数OnBnClickedAddButton()。

           二.在消息处理函数中添加自定义功能

           在我们使用任意一种方法添加了消息处理函数以后,都只能得到一个空的OnBnClickedAddButton()函数的函数体,要实现我们想要的功能,还需要在函数体中加入自定义功能代码。

           在加法计算器程序中,我们想要“计算”按钮实现的功能是,获取被加数和加数的数值,然后计算它们的和并显示到和的编辑框里。那么,OnBnClickedAddButton()的函数体就应修改为:

    C++代码
    1. void CAdditionDlg::OnBnClickedAddButton()   
    2. {   
    3.     // TODO: Add your control notification handler code here   
    4.     // 将各控件中的数据保存到相应的变量   
    5.     UpdateData(TRUE);   
    6.   
    7.     // 将被加数和加数的加和赋值给m_editSum   
    8.     m_editSum = m_editSummand + m_editAddend;   
    9.   
    10.     // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   
    11.     UpdateData(FALSE);   
    12. }  

           鸡啄米在上面的代码中已经添加注释,大家应该很容易理解了。对于UpdateData()函数的说明在上一讲中已经介绍过,如果忘了可以再回上一讲了解了解。

           接下来我们运行下此应用程序。在运行结果界面中,输入被加数5.1,加数2.3,然后点“计算”:

    VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)

           在上图中可以看到,点“计算”按钮后,和的编辑框中显示了正确结果:7.4。

           鸡啄米简单分析下运行过程:输入被加数和加数,点“计算”按钮后产生点击消息,从而调用OnBnClickedAddButton()函数。进入此函数后,首先由UpdateData(TRUE)函数将被加数的值5.1和加数的值2.3分别保存到变量m_editSummand和m_editAddend,然后通过语句m_editSum = m_editSummand + m_editAddend;计算出被加数和加数的和为7.4,并把7.4赋值给m_editSum。最后调用UpdateData(FALSE)根据被加数、加数、和的值更新三个编辑框的显示值,就得到了上图中的结果。(和可以设置为Read Only)

    对话框控件的Tab顺序

    为“计算”按钮添加了消息处理函数后,加法计算器已经能够进行浮点数的加法运算。但是还有个遗留的小问题,就是对话框控件的Tab顺序问题。

           运行加法计算器程序,显示对话框后不进行任何操作,直接按回车,可以看到对话框退出了。这是因为“退出”按钮是Tab顺序为1的控件,也就是第一个接受用户输入的控件。但是按照我们的输入习惯,应该是被加数的编辑框首先接受用户输入,然后是加数编辑框,再接下来是“计算”按钮,最后才是“退出”按钮。

           我们先来直观的看看各个控件的Tab顺序吧。打开“Resource View”视图,然后在资源中找到对话框IDD_ADDITION_DIALOG,双击ID后中间客户区域出现其模板视图。主菜单中选择“Format”->"Tab Order",或者按快捷键Ctrl+D,对话框模板上就会显示各个控件的Tab顺序数字如下图:

    VS2010/MFC编程入门之十(对话框:设置对话框控件的Tab顺序)

           上图中每个控件左上角都有一个数字,这就是它的Tab响应顺序。对话框刚打开时输入焦点就在Tab顺序为1的“退出”按钮上,不做任何操作按下Tab键,输入焦点就会转移到Tab顺序为2的“被加数”静态文本框上,但是因为静态文本框不接受任何输入,所以输入焦点继续自动转移到Tab顺序为3的被加数编辑框,再按Tab键,输入焦点又会转移到Tab顺序为4的“加数”静态文本框上,同样由于它是静态文本框,输入焦点不停留继续转移到加数编辑框,后面的控件同理。

           我们认为这个顺序不合理,那怎么修改呢?很简单,从自己认为Tab顺序应该为1的控件开始依次单击,随着单击的完成,各控件的Tab响应顺序也按我们的想法设置好了。

           例如,此例中我们可以依次单击被加数编辑框、“被加数”静态文本框、加数编辑框、“加数”静态文本框、和编辑框、“和”静态文本框、“计算”按钮和“退出”按钮。设置完后如下图:

    VS2010/MFC编程入门之十(对话框:设置对话框控件的Tab顺序)

           最后按ESC键,确认设置并退出对话框模板的Tab顺序设置状态。

           现在我们再运行程序,可以看到对话框打开后最初的输入焦点在被加数编辑框上,然后我们按Tab键,输入焦点移到加数编辑框上,继续多次按Tab键时,输入焦点会按“和编辑框--‘计算’按钮--‘退出’按钮--被加数编辑框--加数编辑框--和编辑框......”的顺序循环转移。这样就达到了我们的目的。



    展开全文
  • 17.触发el-dialog对话框后,整个页面包括对话框灰了 原因:再某个地方设置position:fixed,一般在本文件中,怎么刷新都会这样; 如果不在本页面中刷新后会正常(最好style后加scoped):

    17.触发el-dialog对话框后,整个页面包括对话框都变灰了

    image.png

    原因:再某个地方设置position:fixed,一般在本文件中,怎么刷新都会这样;

    如果不在本页面中刷新后会正常(最好style后加scoped):

    image.png

    展开全文
  • 只需要添加一个属性即可 :append-to-body="true" 不添加:append-to-body="true"的效果 添加:append-to-body="true"之后的效果 只有对话框变亮,背景变灰
  • 对白文字:对白文字的讲究也很多,但这和排版行业关系比较大,在过去没有电脑绘制时期...接下来,对白和对话框的关系,应当使对白在对话框中不要太过拥挤。把对话框理解为一个屋子,对白理解为屋内的人,过于拥挤狭...
  • OPhone 2.0之百变对话框(2)

    千次阅读 2011-06-17 14:14:00
    改变对话框文字的颜色、大小 默认的对话框中的文字颜色都是黑色或白色的。虽然可以在View上放置自己的组件来显示不同颜色的文字。但对于只显示简单文字的对话框来说就不需要这么麻烦了。我们可以采用另一种比较简单...
  • MFC对话框整合

    千次阅读 2016-11-24 19:20:34
    一、创建对话框模板和修改对话框属性 创建对话框主要分两大步,第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;第二,生成对话框类,主要包括新建对话框类、...
  • 第12章 对话框

    2018-08-22 20:22:38
    如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息。程序写作者可以通过在某选项后面加上省略号(…)来表示该菜单项将启动一个对话框对话框的一般形式是包含多种子窗口控件的弹出...
  • 问题描述当使用support里的design 库里的BottomSheetDialog时,在6.0的机器上当对话框弹出时系统状态栏会变黑,如下图所示: 一开始以为是我用的姿势不对,试过对style配置状态栏颜色,配置其他可能影响到的属性...
  • mfc模态对话框

    2016-03-28 11:18:00
    Mfc模态对话框: 创建模态对话框: 【模态对话框:具有独占行为,必须由用户完成对当前对话框的响应,才能对本对话框所属的进程进行其他操作】 例如: 我们创建一个加法计算器。点击计算之后,弹出一个...
  • 文章目录一、简单绘图二、设置对话框2.1 设置线宽2.2 设置线型 新建一个单文档类型的MFC工程,取名:Graphic。此程序将实现简单的绘图功能。 一、简单绘图 实现简单的绘图功能,包括点、直线和椭圆的绘制。为了实现...
  • package chess; import java.awt.Graphics; import java.awt.Graphics2D; ...import java.awt.Toolkit;...启动对话框,整个界面白色。 2,最小化->对话框消失。 3,再次打开->对话框出现,整个界面黑色。
  •         今天,将win10升级到了19042.631版本,发现文件夹窗口背景颜色自动变成了黑色,如图(1)所示: 图(1) 文件夹窗口的背景颜色变成了黑色  ... 这是因为win10把【个性化】里的的"选择...
  • 用ScrollWindow时,Edit控件背景框变黑。 在OnCtlColor中SetBkMode(TRANSPARENT)无效。 思考了一下,是因为我在每次对话框重绘时,用纯白画刷刷了一遍对话框,但是控件所在区域应该是没有被刷到的。此时设置Edit...
  • 又到了动画总结的时间了,今天要总结的是一个对话框形式的动画效果,老样子gif图不太清晰,但是总体的效果是可以看的清楚的,一个动态的等待对话框,我只是简单的实现了一些动画,如果需要更复杂的需求,可以联系我...
  • word标题数字变黑块处理方法

    万次阅读 2016-05-16 11:14:35
    word标题数字变黑块,如下图 解决的办法及步骤: 1、将光标定位到标题中黑框右侧。 2、按动键盘上的左方向键,直到黑框变成灰色 3.、按键盘的快捷键 Ctrl+Shift+S,会出来一个对话框“应用样式”。 4、...
  • SharePoint 2010 使得往你的网站添加对话框内容得出乎意料的简单。内置的功能允许你从站点任何地方抽取内容,然后显示在模态对话框中,出现在页面的前端。
  • iOS自定义对话框

    2019-06-25 12:36:06
    在Storyboard中新建一个ViewController命名为MyDialogViewController,将背景色设置为黑色半透明(使对话框的背景暗),新建一个View居中显示用来放置对话框内容。 弹出MyDialogViewController前将其...
  • 第九章 对话框

    2012-07-24 21:54:39
    在 Miscrosoft Windows中,对话框就是应用程序创建的用于获取用户输入的一个临时窗口。应用程序一般用对话框来提示用户输入命令的附加信息。对话框通常都含有一个或多个...这样,开发应用程序用户接口就得更容易了
  • 对话框(api)

    2014-08-18 17:24:00
    对话框 壹佰软件开发小组整理编译 如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息。程序写作者可以通过在某选项后面加上省略号(…)来表示该菜单项将...
  • 标题序号黑色竖线。。。心态崩了 找了很多地方。。。终于有了完美解决方案!!!!! 本人法亲测可行: 步骤一(网上的方案): 1、将光标定位到标题中,紧邻黑框的右侧。2、按动键盘上的左方向键,直到黑框变成...
  • 一个非常漂亮的对话框界面,一个 漂亮的对话框界面。-nice dialogue interface nice dialogue interface
  • 对话框是在https://github.com/Carbs0126/NumberPickerView的基础上进行开发的,特此感谢Carbs0126!!WheelDialogFragment继承了...使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,689
精华内容 6,675
关键字:

对话框变黑