untitled-48.txt

来自「mfc 教程」· 文本 代码 · 共 34 行

TXT
34
字号
    2.使用"Char中的字符代码修改文本字符串。
    3.在屏幕上绘制修改后的文本字符串。
    4.重新给括人符定位。
    步骤   1由调用   CMainwindow::  ShowMessag6来完成,下一节再讨论它。步骤  2中文本字
符串的修改依赖于nChr中的字符代码。如果字符是换码符或换行符(*K.*S***E或**_
RETURN),则。StYlllplltT6Xt被CStrillg::Empty(另一个便于使用的CString类成员)清空,且
。nTextPos设置为0。如果字符是退格键(VK-BACK)且rn-nTextPos不是0,则在
。nTextPos一回处的字符被删除,。nTextPos减1。如果字符是0和31之间且包括0和31的
任何值,它就被忽略。如果llCh。代表任何其他字符,就在当前字符位置添加到。Strlllpllt-
Text中并且m.nTextP0s相应加 1。
    将现在刚输人的字符添加到m.strlnpuffext之后,onChar隐藏插人符并进行到步骤3。
修改后的字符串用   CMalnwindow::  D。wlnputText输出到屏幕,而  CMainwindow::  D。Inpuffext
接着依靠 CDC:: ExtTextout来执行文本输出。  ExtTextout与 Textout相似,但它具有一些
Textout没有的选项。其中的一个选项是  ETO—OPAQUE标志,用设备描述表的当前背景颜
色填充包围文本的矩形框。如果字符串的新宽度小于先前的宽度,整个矩形重画就会删除
从前文本输出操作留下的结果。围绕文本框的边框(消息列表周围的边框)是用 CDC::
DrawEdge函数绘制的,该函数进而再调用:: DrawEdge API函数。  DrawEdge是绘制 3D边框的
简便方法,用它绘制的3D边框遵循Windows界面指南中的规定,而且可以自动适应系统中
加亮和阴影颜色的变化。可以使用相关的CDC函数,DrawdRect,由自己选择颜色来绘制简
单的3D矩形。
    onChar结束时调用PositionCaret用m_nTextP0s中保存的值重新设置插入符的位置,然
后调用ShowCaret重新显示插入符。作为试验,评价onChar调用HideCaret和ShowCaret的作
用,可以重新编译一下系统,在文本输人域中输人一些字符。这个简单的练习会使您明白为
什么在插人符后面绘出文本之前隐藏插人符是多么的重要。
3.3.3其他有趣内客
    当在VisualKB窗口内移动光标时,注意到光标会在文本窗口外变为箭头形,在窗口内变
为互形。CMainwindow的构造函数用NULL类光标注册了WNDCLASS,并且在成员变量。
hCursorArmw和。hCursorIBeam中为系统的箭头和1形光标保存了句柄。每当CMalnwindow
接收到WM—SETCURSOR消息后,它的onsetCursor处理程序就检查当前的光标位置并调用
:: SetCursor来显示适当的光标。
    在每次收到消息时, VisualKB都会  CMainwindow:: ShowMessag6来回应键盘消息。
ShowMessag6在 CString:: Forma的帮助下格式化新的输出字符串,将结果复制到 rn-strMes.
sages数组中最近很少用到的输人项中,将消息列表向上滚动一行,并调用 CDC:: Tabbed.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?