黄皮书第五章学习笔记

文本编程中,有一个TextOut函数,它是CDC类的对象,所以使用方法如下:

CClientDC dc(this);
dc.TextOut(
300,500,"你好啊");

同样,也可以用CDC类的指针来完成工作,因为在窗体中,每次建立时候,都要经历View类的OnDraw函数进行重绘,所以在窗体上用TextOut函数,一般都写在这个函数里:

 1 void Cself_4View::OnDraw(CDC* pDC)
2 {
3 Cself_4Doc* pDoc = GetDocument();
4 ASSERT_VALID(pDoc);
5 if (!pDoc)
6 return;
7
8 // TODO: add draw code for native data here
9 //CString scc="你好啊";
10 CClientDC dc1(this);
11 dc1.TextOut(300,500,"你好啊");
12
13 CString str="www.yiheart.com";
14 pDC->TextOut(0,100,str);
15 }

//-----------------------------------------------------------------------------------------------------------------------------------

在操作字符的时候,有两个函数需要注意:

1、GetTextExtent,这是获取整个字符串的相关尺寸信息的函数。一般都需要同CSize这个类结合起来使用:

 1 CClient dc(this);
2
3 CString srz="这是一个字符串哦"
4
5 CSize sz=dc.GetTextExtend(srz); //因为是需要取得整个字符串的尺寸信息,所以取的地址是srz
6
7 ......
8
9 if(nWeith>sz.cx) //这里我们通过sz.cx就取得了整个字符串的长度
10 {
11 nWeith=0;
12 dc.SetTextColor(RGB(255,255,0));
13 dc.TextOut(0,200,srz);
14 //dc.DrawText(srz,rect,DT_LEFT);
15 }

2、GetTextMetrics,这是取得单个字符的相关尺寸信息的函数,需要同TEXTMETRIC这个结构体结合起来使用:

1 CClientDC dc(this);
2 TEXTMETRIC tm;
3 dc.GetTextMetrics(&tm);
4
5 CRect rect;
6 rect.left=0;
7 rect.top=300;
8 rect.bottom=rect.top+tm.tmHeight; //如这里,我们通过tm取得单个字符的高度

//-----------------------------------------------------------------------------------------------------------------------------------

小知识点:

1、设置字体,依靠CFont类。从下面代码可以看到,选入设备描述表,一般都是要定义一个该类的指针对象,然后用dc.SelectObject(&对象),当然,最后注意选择回去,回去的参数是那个指针对象:

1 CFont font;
2 font.CreatePointFont(150,"华文新魏",NULL);
3 CFont *pFold=dc.SelectObject(&font); //格式,呵呵
4
5 dc.SelectObject(pFold); //选回设备描述表

2、字体变色的方式,用DrawText()函数

//-----------------------------------------------------------------------------------------------------------------------------------

定时器的问题:

一般来说,在程序的OnCreate()函数处,写上。当然,参数视具体情况更改

SetTimer(1,1000,NULL);

然后可以在这个类,加一个WM_TIMER的消息处理函数(OnTimer)即可

 1 void Cself_4View::OnTimer(UINT_PTR nIDEvent)
2 {
3 // TODO: Add your message handler code here and/or call default
4
5 nWeith+=5;
6 CClientDC dc(this);
7 TEXTMETRIC tm;
8 dc.GetTextMetrics(&tm);
9
10 CString srz="welcome to www.yiheart.com";
11
12 CRect rect;
13 rect.left=0;
14 rect.top=300;
15 rect.bottom=rect.top+tm.tmHeight;
16 rect.right=nWeith;
17 dc.SetTextColor(RGB(255,0,0));
18 dc.DrawText(srz,rect,DT_LEFT);
19
20 CSize sz=dc.GetTextExtent(srz);
21
22 if(nWeith>sz.cx)
23 {
24 nWeith=0;
25 dc.SetTextColor(RGB(255,255,0));
26 dc.TextOut(0,200,srz);
27 //dc.DrawText(srz,rect,DT_LEFT);
28 }
29 CView::OnTimer(nIDEvent);
30 }

转载于:https://www.cnblogs.com/52yixin/articles/2118099.html

你可能感兴趣的:(黄皮书第五章学习笔记)