使用MFC往对话框中显示文字,方法有很多,可以根据我们自己不同的需求选择不同的方式,我的需求是这样的:我想做一个视频监控的客户端,这个客户端可以同时显示多个视频监控画面,如果没有监控视频的时候就在画面中央显示"无视频"。基于这个需求我选择使用DrawText而不是TextOut,因为DrawText可以携带一些左对其、居中等显示属性,不用我去计算把文字输出在画面的哪个坐标点上。
基于这个需求我们可以开始开发,首先我们要告诉系统我想用什么样的字体显示"无视频",同时要告诉它字体的大小、背景色、前景色等,这些基本的属性设置完成后我们就可是调用DrawText将"无视频"输出在屏幕上了,见代码:
void CMFCTestDlg::OnPaint()
{
CRect rect;
GetClientRect(&rect);
CDC* pDc = GetDC();
CFont new_font;
//创建字体宋体格式 100为字高
VERIFY(new_font.CreatePointFont(250, _T("宋体"), pDc));
//选择该字体进入PDC
CFont* default_font = pDc->SelectObject(&new_font);
//设置字体背景为透明
pDc->SetBkMode(TRANSPARENT);
//设置字体颜色
pDc->SetTextColor(RGB(250, 91, 91));
//显示文本,居中显示
pDc->DrawText(CString("This is a test!"), rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
//恢复PDC的缺省字体
pDc->SelectObject(default_font);
//释放font对象
new_font.DeleteObject();
//CDialogEx::OnPaint();
}
PS:如上代码显示,我们要将该显示代码放置在OnPaint函数中。