在介面程式設計中,文字編輯框是使用頻率最高的控制項之一,為了方便操作,mfc提供了cedit類來管理文字編輯框。
建立文字編譯框有兩種方式:
第一種、在對話方塊模式下,編輯資源檔案,撰寫建立對話方塊的指令碼,可在表示對話方塊指令碼的一對識別符號begin和end中間插入形如
edittext idc_myedit,81,112,71,14,es_center
的指令碼。其中edittext表示插入了乙個文字編輯框,idc_myedit是文字編輯框的id號,81,112,71,14表示文字編輯框相對對話方塊的位置;es_center是對話方塊的屬性,該熟悉表示文字水平居中對齊,可用「|」符號將若干熟悉聯合。
從工具箱中拖入乙個文字編輯框控制項,實際上是通過視覺化過程,由ide解析滑鼠操作來編寫指令碼,在屬性對話方塊中設定各種屬性,也是在編寫這些指令碼。
通過動態資料交換可以將cedit類的乙個物件與文字編輯框控制項繫結在一起,ddx_control(pdx, idc_myedit,m_myedit),m_myedit就是cedit類的物件。
第二種、構造乙個cedit類的物件,利用cedit::create()建立乙個文字編輯框,呼叫cedit的成員函式可以設定文字編輯框的各種屬性。
文字編輯框常用的操作:
1.getwindowtext(),獲得文字編輯框中輸入的內容。
2.setlimittext(),設定文字編輯框能夠輸入最大字元數。
3.setreadonly(),設定文字編輯框為不可編輯。
4.getsel(),獲得當前選中文字編輯框中內容的起始和結束位置。
5.setsel(),設定游標所在的位置,或者選中部分文字。
6.setpasswordchar(),如果傳入引數為非零的字元,則文字編輯框中顯示以該非零字元代替,例如傳入乙個'*',使用者輸入的所有內容都以'*'顯示,這就是密碼模式,也是預設值,可以使用其他的字元代替。如果取消密碼模式,只需要傳入0.
7.undo(),撤銷之前的操作,在呼叫此函式之前,請先呼叫canundo判斷此操作是否允許被撤銷。
其他一些屬性的設定,使用setwindowlongptr函式。
int nwindowlong = getwindowlongptr(m_hwnd,gwl_style);
setwindowlongptr(m_hwnd,gwl_style,nwindowlong | nstyle);
其中m_hwnd是文字編輯框的控制代碼,nstyle是屬性值的組合,這些屬性值包括:
1.es_multiline 多行文字編輯框
2.es_wantreturn 允許回車換行
3.es_number 只允許輸入數字
修改文字編輯框邊框的顏色是一件比較困難的事情,mfc提供的cedit類只提供了對文字編輯框的功能操作,外觀設定是mfc控制項管理類的共同弱點,沒有辦法,我們只能自己過載cedit類來修改邊框顏色。
1、建立cedit的派生類cdrawedit
class cdrawedit : public cedit
;2、設定邊框顏色
因為文字編輯框的邊框是在非客戶區域,所以要過載onncpaint()函式。
void cdrawedit::onncpaint()
可以定義乙個成員變數來儲存畫刷的顏色值,定義乙個成員函式設定此值,這樣就可以通過函式來靈活的這是各種邊框顏色。
文字顏色和文字字型以及文字編輯框的背景色可以在父類的onctlcolor中設定
hbrush cmfcdlgdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)
return hbr;
}如果在onctlcolor函式中新增了對靜態文字框的設定,有可能會影響到文字框的效果。
MFC文字編輯框
mfc文字編輯框裡面的2個屬性multiline和auto hscroll,先看vs給的說明 multiline 如果控制項文字對控制項寬度而言太長,測將文字折為多行。auto hscroll 當使用者在行尾鍵入字元時,自動是文字滾動到左側。先試試multiline true auto hscrol...
文字編輯框 調整文字編輯區域
在多行模式下的cedit類提供void cedit setrectnp lpcrect lprect 函式,此函式用來調整文字編輯的區域,用這個函式可以設定上下左右margins,而void setmargins uint nleft,uint nright 函式只能設定左右margins。crec...
QTextEdit文字編輯框的游標移動
1.問題描述 2.解決辦法 呼叫qtextedit類的成員函式 movecursor 可以設定游標的位置。其函式原型如下 void qtextedit movecursor qtextcursor moveoperation operation,qtextcursor movemode mode q...