龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

Disable粗体字的生成

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
摘 要: 字体的Disable状态如果放大加粗就可以产生很震撼的宣传效果,放在About对话框里,更可以增强软件本身的艺术效果。 实际上,这种字体是“画”(Paint)上去的,那么不可缺少

摘 要:

       字体的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

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接