📄 untitled-45.txt
字号:
3.3.1处理插入符
CMainwindow的onsetFocus和onKillFocus处理程序在VisualKB窗口接收到输人焦点后
生成插入符,失去焦点时销毁括人符。 onsetFocus将插人符宽度设置为 2或调用:: Getsys-
temMetrics返回的SM.CXBORDER值,哪个更大选择哪个,以便插人符即使在很高的图形分
辨率显示器上都可见:
void CMainwindow:: onsetFocus(CWnd。 PWnd)
Z
Createsol。dCaret(。ax(2,::GetsystemMetrics(SM-CXBORDER)),
。 cvChar);
SetCaretPos(In--ptCaretPos);
ShowCaret();
j
onKillFocus隐藏插人符,保存当前插入符位置以便下次调用onsetF0cus时还原它,然后销毁
插人符:
voidCMainwindow::onKillFocus(CWfld。 pwnd)
《
HideCaret();
In--ptCaretP。S= GetCaretP。S();
二二DestroyCaret();
g
在 CMainwindow:: onCreate中用最左边字符单元的坐标将 rn-ptCaretPos初始化。在窗口失
去输人焦点时,它被当前插人符位置重新初始化。因此,在onsetF0cus中对SetCaretPos的调
用会在程序第一次启动时把插人符放到文本框的开头,而在随后的程序调用中将插入符还
原到上次占据的位置。
当左箭头键、右箭头键、Home键或End键被按下时,onKeyDown将移动插入符。这些键
都不产生WM.CHAR消息,因此VisualKB处理WM.KEYDOWN。基于"Char中的虚拟键代
码, switchcase语句块将执行相应的处理例程。左箭头键(它的虚拟键代码是 VK- DeFT)的
处理程序由下列语句组成:
case VIL-LEFT:
。f(。nTextPos!= o)主
m-nTextPos;
PositionCaret();
S
tireax;
。nTextPos是插人文本字符串中下一个字符的位置。文本字符申保存在CString对象
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -