设备上下文又叫设备描述表或者设备环境,它用于应用程序和物理硬件(如显示器,打印机)的交互,是一种数据结构,其内容一般由相关函数通过设备上下文句柄来访问,而这些相关函数一般封装在CDC类中。CDC类与绘图,填充,字体等有关
相关函数如下:
CWnd::CreateSolidCaret :创建字符插入符,其中参数的的宽和高由设备描述表中字体的宽和高决定
CWnd::CreateCaret:创建图形插入符,其中参数表示的是位图资源
CBitmap::LoadBitmap:用来初始化CBitmap对象的成员函数,注意CBitmap的对象的作用域,要定义成全局的,要是定义成函数里的一个局部变量,当函数结束时,CBitmap的资源会被释放,位图会显示不出来
CWnd::ShowCaret:显示插入符,因为创建的插入符会自动隐藏
TEXTMETRIC:关于字体信息的结构体
CDC::GetTextMetrics(指向TEXTMETRIC的结构体变量):获取dc(设备描述表)中字符度量的一些信息
CDC::GetTextExtent:获取一行文本的高度和宽度
CSrting::LoadSring:将一个字符串系统资源装载到已有的字符串对象当中
例如:CString str;
str.LoadString(字符串资源Id);
也可这样对字符串对象赋值:str(字符串)或者str=字符串(因为在String类中对=运算符进行了重载,所以可以直接对字符串对象赋值)
CDC::BeginPath和 CDC::EndPath:可以用两个CDC函数创建和关闭一个路径层,在MFC中路径层就是在设备描述表中独立出一块区域,主要用于窗口的绘制。
CDC::SelectClipPath:选择当前的路径层作为设备描述表的一个剪切区域,用指定的模式结合新的剪切区域和任何已存在的剪切区域。
SetCaretPos:设置插入符的位置。
CWnd::SetTimer:设置一个计时器(注意要设置计时器标识,以区别WM_TIMER是哪个计时器产生的消息),当计时器达到设置的时间时会产生一个WM_TIMER消息。
CDC::DrawText :能够更平滑的显示字体,让字体按着像素来显示,即不是以字体为单位来显示的,这是与TextOut的区别。
Remarks:
1、窗口创建成功后会产生一个WM_CREATE消息,而Caret(插入符)就是在窗口创建后创建的,所以我们可以在CxxView视图类中创建一个WM_CREATE消息处理函数,在此函数中创建caret,就达到了创建窗口后在窗口上显示插入符的目的。
2、当窗口移动或者改变窗口的大小时,窗口会进行重绘(系统会调用CxxView视图类的OnDraw函数进行重绘),要想让窗体上的字体一直显示,则可以在OnDraw函数内写字(TextOut)即可。