摘 要:
字體的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