对话框控件绑定变量及操作

对话框控件绑定变量

右键单击控件,添加变量。

复选框:添加变量为控件变量。可以操作控件。

列表框:选择添加变量的控件的ID。

列表框:选择添加的变量的类别,Control为控件控制类型。Value为关联值变量,可以设置数据验证

编辑框:添加的控件变量名。

复选框:不选中,则为控件关联一个变量。不可以操作控件。

列表框:选择关联变量类型。

编辑框:添加的控件变量名。

 头文件中添加的变量
// CMFCTestDlg dialog
class CMFCTestDlg : public CDialog
{
// Construction
public:
	CMFCTestDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	enum { IDD = IDD_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
     CEdit m_Edit;     CString m_StrEdit;
};
CEdit m_Eidt;CString m_StrEdit;

源文件DoDataExchange函数中添加的关联函数。
void CMFCTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_EDIT1, m_Eidt);
	DDX_TEXT(pDX, IDC_EDIT1, m_StrEdit);
}
DDX_Control(pDX, IDC_EDIT1, m_Eidt);DDX_TEXT(pDX, IDC_EDIT1, m_StrEdit);

以上及成功为控件添加变量,绑定变量。也可以自己添加代码实现绑定,但是记得在构造函数中对变量进行初始化。绑定的控件变量,就可以使用该变量对控件进行操作。绑定的变量,就可以使用DDV&DDX函数进行操作。

控件的数据操作DDV & DDX函数操作

通过使用ClassWizard向对话类添加成员变量,你可以利用ClassWizard所提供的高效特征,为对话数据交换和对话数据验证自动生成源代码,也就是人们所熟知的DDX/DDV。

数据交换和验证仅仅应用于为之选定了Value类别的成员变量。也就是CString,BOOL,数字,COleDateTime或COLeCurrency。

对话框数据交换负责数据在控件中的进出。当对话首次出现的时候,每个控件窗口自动用相应的成员变量的值进行初始化。当用户通过单击OK按钮,或通过按Enter键关闭对话的时候,该控件无论是包含哪一个值或文本,都将被复制回该变量。

对话数据验证可以确保值落在规定的限制之内。交换和验证机制都是由MFC框架提供的。每个函数都有一个前缀DDX_或DDV_,来把它作为数据交换或数据验证函数来标识。

1. 对话数据交换(DDX)     常见的对话数据交换函数

(1)交换函数:DDX_CBIndex,           获得/设置的数据类型:int,             应用于控件:Combobox

(2)交换函数:DDX_CBString,           获得/设置的数据类型:Cstring,       应用于控件:Combobox

(3)交换函数:DDX_CBStringExact,      获得/设置的数据类型:Cstring,       应用于控件:Combobox

(4)交换函数:DDX_Check,                 获得/设置的数据类型:intCheck,     应用于控件:box

(5)交换函数:DDX_DateTimeCtrl,       获得/设置的数据类型:Ctime,         应用于控件:Datetimepicker

(6)交换函数:DDX_LBIndex,              获得/设置的数据类型:int,              应用于控件:List box

(7)交换函数:DDX_LBString,             获得/设置的数据类型:CString,       应用于控件:Listbox

(8)交换函数:DDX_LBStringExact,      获得/设置的数据类型:CString,       应用于控件:List box

(9)交换函数:DDX_MonthCalCtrl,        获得/设置的数据类型:Ctime,         应用于控件:Month calendar

(10)交换函数:DDX_Radio,                获得/设置的数据类型:int,            应用于控件:Radio button

(11)交换函数:DDX_Scroll,                 获得/设置的数据类型:int,            应用于控件:Scroll bar

(12)交换函数:DDX_Text,                   获得/设置的数据类型:CString  or numerical(BYTE,short,int,UINT,long,etc.),应用于控件:Edit control

在所有的数据交换函数之中,该函数是独一无二的,它只应用于一组控件,而不是一个控件。DDX_Radio返回一个int值用来指示用户打开了组中的哪个按钮:0代表组中的第一个按钮,1代表第二个按钮,以此类推。值-1的意思是小组中的所有按钮都是清除的。你可以调用DDX_Radio来确定单个单选按钮的状态(假如它是组中的唯一一个按钮)。在这种情况下,返回值0的意思是按钮是打开的,值-1意为按钮是关闭的。

建立一个单选按钮通常在对话编辑器中进行,我们一会儿就能看到。

MFC提供了大量的对话数据交换函数,它们可以在对话类中的控件成员变量之间移动数据。除了所列的常见函数之外,还有用于记录集数据和由ActiveX控件返回的数据的特殊交换函数。DDX_Control函数可以为几种不同类型的控件传输数据  ,例如Animate和IPAddress。

2.对话数据验证(DDV)对话数据验证函数,它们仅仅应用于接受用于从键盘输入数据的控件成员变量。换言之,就是编辑控件和组合框。

对话数据验证函数

(1)DDV_MinMaxByte        指定限制范围内的一个BYTE值。

(2)DDV_MinMaxInt        指定限制范围内的一个int值。

(3)DDV_MinMaxUInt        指定限制范围内的一个UNIT值。

(4)DDV_MinMaxLong         指定限制范围内的一个long值。

(5)DDV_MinMaxDWord      指定限制范围内的一个DWORD值。

(6)DDV_MinMaxFloat       指定限制范围内的一个float值。

(7)DDV_MinMaxDouble      指定限制范围内的一个double值。

(8)DDV_MaxCharsCString      字符串的长度不能超过指定的最大长度。

当你为编辑控件或组合框添加成员变量,然后在Member Variable选项卡中的Control IDs框中选择控件的时候,两个提示之一将会出现在该选项卡的底部。究竟出现哪一个提示取决于变量所具有的是数字数据,还是文字数据;在任一种情况下,都要输入用于验证的变量限制值。

除了一个对话数据验证函数之外,所有函数都监视数值数据,以确保由用户输入的值落在指定的上下限之间。

例外是DDV_MaxChars函数,它用来验证键入到编辑控件或组合框中的字符数不超过给定的最大值。与交换函数不同,验证函数仅仅在对话关闭的时候起作用,而不在它刚出现的时候起作用。

转自:http://www.cnblogs.com/weiqubo/archive/2011/07/21/2113136.html


数据的更新与显示

   UpdateData(true);  
        用窗体上控件中的内容来更新和控件相关连的变量的值(只能更新value类型的变量) 例如:你在你的窗体中有一个Edit控件,为这个控件关联了CString类型的变量m_strName;   你在控件中添入内容之后,必须调用UpdateData(true);才能把你添入的内容传给m_strName这个变量。   
        UpdateData(false);  
        和上面的正好相反,还是以上面的Edit为例,当你在程序中改变了m_strName变量的内容的时候,如果你想让那个Edit也显示更新后的m_strName,就必须调用UpdateData(false);   这样在你的Edit中才能显示更新完的变量的值!


不绑定控件变量,操作控件。

    GetDlgItem(IDC_EDIT1)->GetWindowText(变量);

    GetDlgItem(IDC_EDIT1)->SetWindowText(变量);

    通过使用MFC封装好的函数,通过控件ID。函数操作依然可以实现操作变量。相对于绑定变量麻烦一些。

时间: 2024-10-12 16:37:29

对话框控件绑定变量及操作的相关文章

ListView控件绑定DataSet

DataSet数据集,数据缓存在客户端内存中,支持断开式连接. 在对DataSet做操作的时候,首先一定要修改其行的状态,然后执行SqlDataAdapter的Update方法,Update方法根据其行的状态,做相应的SelectCommand.DeleteCommand.UpdateCommand.InsertCommand操作. 一,ListView控件绑定DataSet之操作: 1)查找操作 using (SqlConnection con = new SqlConnection(cons

【2017-05-02】winform弹出警告框是否进行增删改操作、记事本制作、对话框控件和输出输入流

一.winform弹出警告框是否进行增删改操作 第一个参数是弹出窗体显示的内容,第二个参数是标题,第三个参数是该弹窗包含确定和取消按钮. 返回的是一个枚举类接收一下. 再进行判断,如果点的是确定按钮,再进行下一步的增删改操作. 二.记事本的制作 1.菜单工具栏MenuStrip-插入标准项 2.TextBox -显示部分 小箭头 MultiLine 选中多行 Dock属性占满. 3.功能 - 撤销 - 剪切 - 粘贴 - 复制 - 删除 - 全选 - 时间 - 查找 单独做一个窗体点击打开 把主

MFC中给控件添加变量,DoDataExchange中

DoDataExchange函数其实是一项数据动态绑定技术.比如你在写动态按钮过程中须对按钮添加变量时,怎么添加?控件类已经写好了,其变量是已经固定的.你要添加新的变量就要用到DoDataExchange函数. 你要在对话框的构造函数里面初始化一个变量,再用DoDataExchange函数将它绑定到你的动态按扭中,比如:DDX_Check(pDX, IDC_CHECK1, m_Lesson1);这就是将m_Lesson1(这是一个外部变量,其定义在对话框的构造函数里)绑定到IDC_CHECK1中

vue.js基础知识篇(3):计算属性、表单控件绑定

第四章:计算属性 为了避免过多的逻辑造成模板的臃肿不堪,可使用计算属性来简化逻辑. 1.什么是计算属性 <!DOCTYPE html> <html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div id="example"> <

容器控件,对话框控件,流,路径的简单概念

布局主要有2个属性: Anchor:锁定位置,相对于父级容器Dock:填充位置(上下左右,剩下全部)一般Dock是与容器控件配合使用 容器控件:Panel:就是一个区域,类似于DIV,可以独立布局,还可以让其它控件及容器在它的内部再次布局 FlowLayoutPanel:流式布局容器,内容会默认从左向右排列,如果宽度不够了,那么自动换行,就像html里的flow,可以用来做导航栏 GroupBox:依然是容器,拥有Panel全部属性,比Panel多了个标题和边框样式 TabControl:选项卡

android 33 对话框控件

对话框控件:最多3个按钮. mainActivity.java package com.sxt.day05_09; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.View; import android

vue.js基础知识篇(1):简介、数据绑定、指令、计算属性、表单控件绑定和过滤器

目录第一章:vue.js是什么? 代码链接: http://pan.baidu.com/s/1qXCfzRI 密码: 5j79 第一章:vue.js是什么? 1.vue.js是MVVM框架 MVVM的代表框架是Angular.js,以及vue.js. MVVM的view和model是分离的,View的变化会自动更新到ViewModel上,ViewModel的变化会自动同步到View上显示.这种自动同步依赖于ViewModel的属性实现了Observer. 2.它与angular.js的区别 相同

DataGridView控件绑定数据源

前言: 最近听说DataGridView控件能直接绑定数据源.而不用穿越这层那层的忍辱负重.获取数据.真是高兴的屁颠屁颠的.后来一想二狗肯定不会弄.特意写了一个笨蛋版的教程--也算记录生活.欢度端午了.粽子就不送给大家了.但是大家可以找我来要呦!数量有限送完为止!--chenchen --步骤 1 添加控件 2 添加数据源 中间过程就是点下一步就不截图了.最后选择的这个是每次连接获取数据库数据的表和表的字段 3 三个组件意思 Adapter控件:连接数据库获取数据 DataSet:存放获取好的数

Asp.net--DropDownList控件绑定数据库数据

DropDownList控件绑定数据库数据:DB是公共类,reDt是公共类中的方法 放在Page_Load事件中 if (!IsPostBack) { DB db = new DB(); DataTable dt = db.reDt("select * from provinceInfo order by provinceid asc"); ddlsmprovince.DataSource = dt; ddlsmprovince.DataTextField = ddlsmprovinc