1、插入符

CWnd类的CreateSolidCaret()函数创建插入符,原型如下:

void CreateSolidCaret(int nWidth,int nHeight);

2、字体信息结构

(1)CDC类的GetTextMetrics()函数获得设备描述中当前字体的度量信息,原型如下:

BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const ;

(2)GetTextMetrics结构体中参数区别

 

  

 

 

 

升序高度:基线以上到图中h字符最高点之间的高度。

降序高度:基线一下到图中g字符最低点之间的高度。

字体高度:升序高度+降序高度。

3、图形插入符

CWnd类的CreateCaret函数用来创建图形插入符,原型如下:

void CreateCaret(CBitmap* pBitmap);

当函数执行完之后,函数中的变量就会析构,那么与资源相关的对象在析构时都会将与之相关的资源析构。所以页面没有显示,将指定变量改为全局变量即可。

4、窗口重绘

(1)视类中函数OnDraw()原型如下:

void CTextView::OnDraw(CDC * pDC);

(2)添加字符串资源

CString类提供函数LoadString()原型如下:

BOOL LoadString(UINT nID);

nID是一个字符串资源,使用的时候需要加载。

5、路径

(1)在MFC中,创建路径层是利用CDC类提供的BeginPath和EndPath两个函数来实现。

(2)GetTextExtent函数获取字符串在屏幕上显示的宽度和高度,原型如下:

     CSize GetTextExtent(const CString & str) const;

(3)GetTextExtent()与GetTextMerics()区别:

前者获取的是特定字符串在窗口显示时所占据的宽度和高度;

后者获得的是设备描述表中当前字体的度量信息。

(4)CDC类提供SelectClipPath函数作用是将当前设置的路径层和设备描述表中已有的裁 剪区域按照一中指定模式进行一个互操作。原型如下:

BOOL SelectClipPath(int nMode); //参数赋值RGN_DIFF

6、字符输入处理过程

(1)CWnd类的SetCaretPos()函数实现将光标移至鼠标单击处,原型如下:

static void PASCAL SetCaretPos(POINT point);

(2)之前字符串不再重复输出

CString 类的.empty();

(3)之后字符串在光标处输出

鼠标点击时保存当前POINT点,用于OnChar函数。所以创建成员变量。

(4)回车后光标的横纵坐标变化

调用GetTextMetrics函数获取设备描述表中字体的高度。

(5)退格键的处理

CDC类的GetBkColor()函数获取当前背景色

CString类的left()删除字符串的一个字符

CDC类的SetTextColor()函数返回文本先前的颜色

7、设置字体样式

(1)CFont类(CGdiObjecr基类)的初始化函数(作用是将CFont对象与字体资源关联):

CreateFont()

CreateFontIndirect()

CreatePointFont()

CreatePointFontIndirect()

(2)CClientDC dc(this);

CFont font;

font.CreatePointFont(大小/10,"字体名称",NULL);

CFont *pOldFont=dc.SelectObject(&font);

dc.SelectObject(pOldFont);

8、字幕变色

(1)CDC类DrawText()函数在指定的矩形范围内输出文字,原型如下:

 int DrawText(const CString &str, LPRECT lpRect,UINT nFormat);

(2)CWnd类SetTimer()函数设定定时器,原型如下:

UINT SetTimer(UINT nIDEvent,UINT nElapse,void (CALLBACK) EXPORT* lpfnTimer)(HWND,UINT,UINT,DWORD));