使用的函数:
CreateSolidCaret 创建插入符
CreatePointFont 简单创建字体
GetSystemMetrics 取得宽度和高度
GetTextMetrics 取得当前字体信息
GetTextExtent 取得特定字体的宽度和高度
CreateCaret 创建图形插入符
SetCaretPos设置插入符位置
GetBkColor 取得背景色
SetTextColor 设置文本颜色
DrawText 在矩形内绘制文字
内容摘要:
1、添加插入符
在视图类添加OnCreate函数:
CreateSolidCaret(20,100);
ShowCaret(); //插入符创建后默认隐藏,需要此函数显示
添加对应字体大小的插入符:
CClientDC dc(this);
TEXTMETRICS tm;
dc.GetTextMetrics(&tm);
CreateCaret(tm.tmAvecharWidth/8, tm.tmHeight);
添加自定义位图插入符
CBitmap bitmap; //成员变量
bitmap.LoadBitmap(IDB_BITMAP1);
CreateCaret(&bitmap);
插入符随鼠标而动
添加左键按下消息,调用SetCaretPos(point);
2、加载文字
在CTestView::OnDraw中
CString的使用:(没有基类)
CString str("微信科学");CString str = "微信科学";
pdc->TextOut(50,50,str);
在资源文件-String Table中添加资源
str.LoadString(nId);
3、路径层的使用(圈文字)
CSize sz = pDC->GetTextExtent(str); //字符串的宽度和高度(cx,cy)
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RCN_DIFF); //剪切区
4、输入文字
退格的实现:
COLORREF clr = dc.SetTextColor(dc.GetBkColor());
dc.TextOut(.....);
m_str = m_str.Left(m_str.GetLength()-1);
dc.SetTextColor(clr);
插入符随输出而变化在行尾:
CSize sz = dc.GetTextExtent(m_str);
CPoint pt;
pt.x = m_pOrigin.x + sz.cx;
pt.y = m_pOrigin.y;
SetCaretPos(pt);
显示:
dc.TextOut(.......);
5、卡拉OK文字变化
TextOut不能实现,应使用DrawText.
当DT_RIGHT时对文字显示的控制:
CSize sz = dc.GetTextExtent(str);
if(m_nWidth > sz.cx)
{
m_nWidth = 0;
}