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));