孙鑫VC++笔记(五)

使用的函数:

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值