您的位置:首页 > 编程语言

MFC学习lesson5--文本编程

2010-07-11 18:02 344 查看
CDC类

CDC类是CObject类的直接派生类,为和设备上下文互操作提供成员函数,也提供成员变量为了和与一个窗口的用户区相关的设备上下文一起工作。

CClientDC类是CDC的派生类,封装了代表窗口中用户区的设备上下文的操作;CWindowDC封装了整个窗口的设备上下文操作。

OnDraw() 函数在每次窗口重绘的时候都被调用一次。所以要显示一直存在的图形或文字应该在这个函数中输出。

利用路径层概念输出一串字符,显示在网格之上。

代码

m_nWidth += 5;
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);

CRect rec;
rec.left = 350;
rec.top = 350;
rec.right = rec.left+m_nWidth;
rec.bottom = rec.top + tm.tmHeight;

CString str;
str.LoadString(IDS_MYSTRING);

dc.SetTextColor(RGB(255,12,14));
dc.DrawText(str, rec, DT_CENTER);
CSize sz = dc.GetTextExtent(str);
if(m_nWidth > sz.cx){
m_nWidth = 0;
dc.SetTextColor(RGB(0,0,255));
dc.TextOut(350,350,str);
}


在这段代码中值得注意的是CDC::DrawText(); 这个函数在一个给定的矩形区域内输出字符串,并且还有一个输出格式可以修改。这段代码是在OnTimer(UINT_PTR nIDEvent)函数中的,这个函数实际上是WM_TIMER消息的响应函数。在MFC中定时器是由UINT_PTR SetTimer( UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD) ); 设定的,第一个参数是指定一个定时器的标识,第二个参数nElapse设定一个时间间隔,单位是毫秒;第三个参数是指定一个回调函数,一般使用默认值,即指定为NULL,将消息加入到wnd的消队列中。使用BOOL KillTimer( UINT_PTR nIDEvent ); 去除一个由nIDEvent指定的定时器。

这节课主要学习了文本编程,并且学习了定时器的使用,这个定时器貌似在做小游戏的时候很有用。

PS:这是我第一次尝试着使用博客来记录自己的学习过程,是一个不错的尝试,不过就是速度很慢,写了这麽一点就用了将近三个小时,不过效果确实不错。今天算是给自己开了一个好头吧!加油!


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: