摘 要:
字体的Disable状态如果放大加粗就可以产生很震撼的宣传效果,放在About对话框里,更可以增强软件本身的艺术效果。
实际上,这种字体是“画”(Paint)上去的,那么不可缺少的操作就是OnPaint,另外,一个必用的类就是CFont,生成字体和字的大小。
举例说明。产生的效果如图。
第一步,添加变量 CFont m_font;
定义显示的字符串 #define STSIGN "Sailmer Angent"
第二步,添加设置字体的函数 SetFont (CString m_str, int nHeight, int nWeight, BYTE bItalic, BYTE bUnderline)
实现如下:
void CDisableFontDlg::SetFont(CString m_str, int nHeight = -16, int nWeight = FW_BOLD, BYTE bItalic = TRUE, BYTE bUnderline = FALSE)
{
if(m_font.m_hObject)
{
m_font.Detach();
}
m_font.CreateFont(nHeight, 0, 0, 0, nWeight, bItalic, bUnderline,0,0,0,0,0,0, m_str);
}
第三步,初始化字体
在 OnInitDialog() 函数中添加:SetFont("Verdana", -25);
第四步,添加OnPaint消息,实现如下:
CPaintDC dc(this); // device context for painting
// Draw font
CRect m_rect;
GetWindowRect(m_rect);
ScreenToClient(m_rect);
CFont* OldFont = dc.SelectObject(&m_font);
CSize sizestr = dc.GetTextExtent(DISPLAYSTR, strlen(DISPLAYSTR));
dc.DrawState(CPoint((m_rect.Width()-sizestr.cx)/2, 10),
m_rect.Size(),
DISPLAYSTR,
DSS_DISABLED, // Set Disable State
TRUE, 0, (CBrush*)NULL);
dc.SelectObject(OldFont);
到此为止就可以完成任务了。此程序经过调试,完全可用。
调试环境:Windows XP
编译环境:Visual Studio 2003
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)