孙鑫VC++笔记(五)

来源:互联网 发布:博威计价软件 编辑:程序博客网 时间:2024/04/29 10:27

使用的函数:

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;

}

原创粉丝点击