?? untitled-46.txt
字號:
。strlnputTex沖。PositionC。t是CMainwindow中保護類型成員函數,它使用GetTextExtent
來找到與保存在。nTextPos中的字符位置相對應的文本字符申中像素的位置,然后調用
SetCaretPos將插人符移動到該位置。在核實。nTextPos沒有超出范圍以至使插入符移出左
邊之后,VXILEry處理程序將減少。nTextPos的值并調用PositionCaret來移動插人符。如
果。nTextPos是0,表明插入符已經在輸人項字段的最左端了,此時鍵擊被忽略。其他VK一
處理程序的操作也同樣直接。例如:VK—END處理程序,通過語句
。nTextPos。 m-strlnputText.GetLength();
PosstsonCaret();
將插人符移動到文本字符串的結尾處。Gettength是CString的成員函數,返回字符串中字符
的數量。使用CString對象保存輸人給VisualKB的文本使得文本處理比以往簡單地使用字
符數組處理字符串更簡單。例如,把一個新字符添加到字符串結尾onChar處理程序所要做
的只是
ITlu-strlnputText十二 "Char;
在涉及到字符串處理時,沒有比這更容易的了。測覽一下 VISll。IKB。pp,會看到若干 CString
成員函數和運算符,包括 CString:: teft,它返回包含字符串左邊 n個字符的 CString對象;
CString:: Right,返回最右邊 n個字符; CString:: Forma,它執行類似 printf的字符串格式化。
整整半章內容講述了鼠標輸人以后,不讓VisualKB執行一些與鼠標有關的操作好像有
些說不過去,因此我增加了一個onLButtonDown處理程序,它允許在文本框中使用鼠標左鍵
單擊來移動插人符。除了給程序添加一個好的功能以外,onLButtonDown處理程序還允許我
們檢查一個函數,該函數獲取鼠標單擊發生的位置,并返回文本字符串中相應字符位置。按
鍵處理程序本身極其簡單:
void CMainwindow::OnLButtonD0wn(UINT "Flags,CPoint point)
Z
。f(。rcTextBox.PtlnRect(po。nt))爸
In--nTextPos=GetNearestPos(noint);
PosstlonCaret();
2
Z
。。TextBox是包圍文本框的矩形。調用CRect::PtlnRect確定是否有單擊在矩形內發生(如
果沒有則不執行任何操作而返回)之后,ollLBllttollDO。用 CM。illwilld0W::ktNe。。Sip08為。
nTextPos計算一個新的值并調用PositionCaret將插入符重新定位。GetNearestPos首先檢查看
是否在字符串左邊鼠標單擊發生了,如果發生則為新的字符位置返回0:
if(point.x<=。ptTextorigin.x)
return 0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -