常用的文本处理程序有word,记事本、IDE集成开发环境等,它们都可以文本的编辑,鼠标点击之处都有一条闪烁的竖线,这个竖线就是插入符(Caret)。该插入符用于提示用户输入文字,下面就演示插入符的应用实例。
接口函数
在Cwindow成员中有一个Caret Methods,在这个Caret Methods中介绍了插入符的创建和使用,其接口函数如下:
//方法1:Creates a solid rectangle for the system caret. BOOL CreateSolidCaret(int nWidth,int nHeight) throw(); //方法2:Creates a gray rectangle for the system caret. BOOL CreateGrayCaret(int nWidth,int nHeight) throw(); //方法3:Creates a new shape for the system caret. BOOL CreateCaret(HBITMAP pBitmap) throw(); //Hides the system caret. BOOL HideCaret( ) throw(); //Displays the system caret. BOOL ShowCaret( ) throw();
讯享网
讯享网int CMFC_TestView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; CreateGrayCaret(3,20);//创建 ShowCaret();//显示 return 0; }
图1 插入符运行效果
为了插入符能够跟随文本字体大小而发生变化,我们需要获得设备描述表中字体结构。在CDC类中有个GetTextMertics成员函数可以得到设备描述表中字体信息,其函数声明如下:
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
其中,入参是TEXTMETRIC结构的指针,该结构包含了字体基本信息,但是常见有用信息就只有几个,具体结构体如下:
讯享网typedef struct tagTEXTMETRIC { LONG tmHeight; LONG tmAscent; LONG tmDescent; LONG tmInternalLeading; LONG tmExternalLeading; LONG tmAveCharWidth; LONG tmMaxCharWidth; LONG tmWeight; LONG tmOverhang; LONG tmDigitizedAspectX; LONG tmDigitizedAspectY; TCHAR tmFirstChar; TCHAR tmLastChar; TCHAR tmDefaultChar; TCHAR tmBreakChar; BYTE tmItalic; BYTE tmUnderlined; BYTE tmStruckOut; BYTE tmPitchAndFamily; BYTE tmCharSet; } TEXTMETRIC;其中tmHeight是字符高度,tmHeight = tmAscent + tmDescent, tmAveCharWidth是平均宽度,因为每个字符宽度都不同,只有一个平均宽度,如图2是字体信息的部分示意图。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36518.html