天天看點

MFC中添加變量為control和value的差別

轉載自:http://www.cnblogs.com/lisuyun/articles/mfc.html

control型變量是這個控件所屬類的一個執行個體(對象),可以通過這個變量來對該控件進行一些設定。而value隻是用來傳遞資料,不能對控件進行其它的操作。添加了一個m_CtrlEdit的control型變量你可以調用控件支援的所有函數,如:m_CtrlEdit.GetStyle(...),獲得控件的輸入内容或者說文本内容:

CString str_name;

m_CtrlEdit.GetWindowText(str_name);

MessageBox(str_name,"提示",0);

而value型變量一般用于向控件傳遞資料,如:變量為CString 類型的 m_Str   m_Str="hustwjz";  

UpdateData(FALSE); //可以向控件傳遞資料

UpdateData(TRUE); //可以從控件獲得資料  

獲得輸入資料後可以進行相應操作.以下是寫檔案用到的,把輸入的内容寫入檔案

UpdateData(TRUE);

student.age=m_age;

strcpy(student.name,m_char);

CString fPath;

fPath=GetAppPath();

IniFileHandle->m_FileName.Format(_T("%s"),fPath+_T("student"));

IniFileHandle->OpenFile(1);

IniFileHandle->Serialize(student);

IniFileHandle->CloseFile();

可以使用成員變量來代替某個控件,當控件發生變化時,該成員變量的值也發生變化;ClassWizard增加成員變量的時候,選擇value類型可以建立一個包含由使用者來輸入控件文本和控件狀态的成員變量;選擇Control類型,我們可以對這個控件直接進行通路;

control就是控件,可以得到長度   高度   是不是可用   是不是可見

value是個字元串,跟控件綁定在一起,可以通過UpdateData(TRUE/FALSE)互相更新;

Value   就是一個變量

control   就是一個控件。

主要的差別也就是變量和控件之間的差別,雖然他們實質上都是一樣的。可是選擇Value,MFC 會把控件的内容對應到一個變量上,除非你用其他API取得這個控件進行操作,否則,就是一個變量而已。主要的用途是利用UpdateData進行資料讀寫。而作為控件,把就是把這個東西直接對應到了一個控件對象上去,比如 CEdit 對象,你可以直接用這個對象來進行操作。熟悉了之後,就是一個怎麼用怎麼友善的問題。從其實質來說,我認為沒有什麼差別,都是控件。不是說你選了value,其控件就不存在,隻是說選擇value,MFC的wizard做了更多的事情,讓你面對這個控件可以把它看作一個值而已。