在MFC编程中
很多控件都要有对应的变量存储它的值,以实现代码读取和改变变量的值,完成代码和控件的交互
MFC中 常通过ClassWizard为控件添加和绑定对应的变量及变量类型(不同类型的控件所能绑定的变量类型是有限制的 )
控件所能绑定的变量类型大方向分两种 control和value
control型变量是这个控件所属类的一个实例(对象)可以通过这个变量来对该控件进行一些设置。而value只是用来传递数据,不能对控件进行其它的操作
control型变量可以获得控件的实例,通过这个变量,你可以操纵控件
value型变量仅仅可以获得该控件的public型变量
如果你添加了一个m_CtrlEdit的control型变量你可以调用控件支持的所有函数,如:
m_CtrlEdit.GetStyle(...)
获得控件的输入内容或者说文本内容:
CString str_name;
m_CtrlEdit.GetWindowText(str_name);
MessageBox(str_name,"提示",0);
而value型变量一般用于向控件传递数据,如:变量为CString 类型的 m_Str m_Str="LosinueriS";
简而言之 control型变量如名字一样能提供操作级别的功能 大而全 而value变量提供用于数据传递的变量级别功能
当我们定义一个变量为value类型时,我们的代码只能对变量进行操作,那么如何让控件的值与变量进行同步呢?那就要用到我们的Updata()函数
Updata(true):将控件内容装入控件变量 即用户改变了控件的值后通过该函数实现变量的同步改变
Updata(false):将控件变量的值更新控件
Updata():刷新对话框
总之
control就是控件,可以得到长度 高度 是不是可用 是不是可见等
value是个字符串,跟控件绑定在一起,可以通过Update(TRUE/FALSE)相互更新;
Value 就是一个变量
control 就是一个控件。
主要的区别也就是 变量 和 控件之间的区别,虽然他们实质上都是一样的。
可是选择 Value ,MFC 会把控件的内容对应到一个变量上。除非你用其他API取得这个
控件进行操作,否则,就是一个变量而已。主要的用途是 Update 进行数据读写。
而作为控件,把就是把这个东西直接对应到了一个控件对象上去,比如 CEdit 对象。
你可以直接用这个对象来进行操作。熟悉了之后,就是一个怎么用怎么方便的问题。从其
实质来说,我认为没有什么区别,都是控件。不表示,你选了value ,其控件就不存在,
只是说选择value ,MFC的wizard 做了跟多事情,让你面对这个控件可以把它看作一个值而已。