1、為什麼控制項需要關聯變數
2、如果控制項是類的例項,關聯的變數和這個類是什麼關係
3、控制項的關聯變數與控制項的物件 區別是什麼
4、乙個控制項,可以關聯多個同一型別的變數嗎
5、關聯變數的型別
關聯就是方便使用,
直接用控制項對應的變數呼叫對應的方法就能對這個控制項進行操作了,不然的話每次想操作這個控制項的話都要鮮活的控制項指標才能操作
通過類嚮導以生成兩種類成員變數,一種是cstring型別,一種是cedit型別。
在程式中使用時如果只是簡單的獲取 edit控制項內容,或設定簡單的內容建議使用cstring型別成員變數。
內部原理:
在用tab
控制項新增關聯變數時發現控制項變數那裡是灰的,
為了關聯控制項變數,有一種方法: 1.
首先為控制項新增變數,如
ctabctrl m_tabctrl. 2.
在oninitdialog
函式中,新增
m_tabctrl
.subclassdlgitem
(idc_tab1,this); //idc_tab1
是控制項id 3.
這樣m_tabctrl
就是控制項
idc_tab1
的關聯變數。
避免:沒吃
((cedit*)getdlgitem(idc_editid))
->setwindowtext(str);//
注意括號的位置括法 //
加紅部分得到了控制項的指標變數值可以設乙個對應的指標變數
cstring m_stredit;
1,//獲得edit框內容
updatedata(true);
此時m_stredit就是edit框內容的字串變數。
//要更新edit的話只要對m_stredit進行賦值然後
updatadata(false);//即可
2,如果是一些對edit框的複雜操作建議用cedit型別。
示例:cedit m_ctrledit;
//將游標移到開頭
m_ctrledit.setsel(0,0);
//將游標移到末尾
m_ctrledit.setsel(-1);
//選中所有內容
m_ctrledit.setsel(0,-1);
//寫入值
m_ctrledit.replacesel("替換內容");
//得到當前edit框中的所有字元數
int istart,icount;//icount 為字元數
m_ctrledit.setsel(0,-1);
m_ctrledit.getsel(istart,icount);
3,還一種可以直接用控制項的id值來進行操作
示例:((cedit*)getdlgitem(idc_edit) //
他類似於上邊的m_ctrledit
這樣寫的好處是可以在訊息傳遞中使用,便於不同視窗間傳遞edit內容
例如:下面的訊息響應函式中
seteditcontent(wparam wparam, lparam lparam)
idc_edit可以通過wparam傳遞近來,而字元傳內容可以直接通過lparam傳遞近來
cstring msg="要傳遞的訊息";
::sendmessage(m_hparent,wm_sendmsg_edit,(wparam) idc_edit, (lparam)(lpstr)(lpctstr)msg)
如:((cedit*)getdlgitem(wparam))->setsel(-1);
((cedit*)getdlgitem(wparam))->replacesel((lpcstr)lparam)
MFC中控制項與變數關聯
getdlgitem idc edit1 setwindowtext 變數 getdlgitem idc edit1 getwindowtext 變數 getdlgitem idc edit1 setwindowtext 陣列名,長度 分繫結value和繫結control兩種 projectdlg....
MFC關聯變數
定義 value 只是用來傳遞資料,不能對控制項進行其它的操作。使用updatedata true 來從獲取控制項值 值自動更新到關聯變數中 使用updatedata false 來更新空間值 關聯變數的值更新到介面中 定義 control 乙個控制項,可以使用該控制項的所有方法 如假設關聯變數為m...
MFC控制項關聯變數總結(EDIT編輯框)
1.不關聯控制項 使用getdlgitem idc edit1 getwindowtextw 變數名 來獲取控制項內容 使用getdlgitem idc edit1 setwindowtextw 變數名 來更新變數內容 2.關聯的是value型別的變數 value只是用來傳遞資料,不能對控制項進行其...