📄 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 + -