CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

哪位大可能提供一个扩展的CStatic控件?

楼主hdxhan(东东)2004-09-02 11:42:53 在 VC/MFC / 基础类 提问

该控件有如下功能:  
                  控件上的字体要加粗加黑  
                  字体的大小要随着控件的缩放跟着缩放 问题点数:0、回复次数:3Top

1 楼lixiaosan(小三)回复于 2004-09-02 11:45:54 得分 0

自己重载一个  
  在OnPaint里面画就是了Top

2 楼ddszhan(高等数学)回复于 2004-09-04 09:18:59 得分 0

其中的部分代码对你游泳!  
  void   CPicTxtStatic::OnPaint()    
  {  
  CPaintDC   dc(this);    
   
  CRect   rect;  
  GetWindowRect(&rect);  
  ScreenToClient(&rect);  
   
  //绘制边框  
  if   (m_nBorderWidth>0)  
  {  
  dc.Draw3dRect(rect,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DDKSHADOW));  
  rect.DeflateRect(m_nBorderWidth,m_nBorderWidth,m_nBorderWidth,m_nBorderWidth);  
  dc.Draw3dRect(rect,GetSysColor(COLOR_3DDKSHADOW),GetSysColor(COLOR_3DHILIGHT));  
   
  rect.DeflateRect(1,1,1,1);  
  }  
   
  if   (m_nJPG)  
  {  
  //   绘制JPG图片  
  DrawJPEGImage(&dc,   m_nJPG,   rect);  
  }  
  else   if   (m_nBitmapID!=0)  
  {  
  //   绘制位图    
   
  CBitmap   btMap;  
  btMap.LoadBitmap(m_nBitmapID);  
  //取得关联的位图句柄  
  HBITMAP   hBitmap=(HBITMAP)btMap.GetSafeHandle();  
   
  if(hBitmap!=NULL)  
  {  
  //在背景中画关联位图  
  BITMAP   bm;  
  ::GetObject(hBitmap,sizeof(BITMAP),&bm);  
   
  CDC   memDC;  
  memDC.CreateCompatibleDC(&dc);  
  HBITMAP   hOldBitmap=(HBITMAP)memDC.SelectObject(hBitmap);  
   
  dc.StretchBlt(rect.left,   rect.top,   rect.Width(),   rect.Height(),   &memDC,   0,   0,   bm.bmWidth,   bm.bmHeight,   SRCCOPY);  
   
  memDC.SelectObject(hOldBitmap);  
  memDC.DeleteDC();  
  }  
  }  
  else   if   (m_clrBK)  
  {  
  //   以背景色填充  
  dc.FillSolidRect(rect,m_clrBK);  
  }  
   
  if(!m_strCaption.IsEmpty())  
  {  
  //输出文本,注意对齐方式  
  dc.SetBkMode(TRANSPARENT);  
  dc.SetTextColor(m_clrText);  
   
  CFont   cftTmp;  
  CFont   *pOldFont=NULL;  
   
  CRect   rcClient;  
  GetClientRect(&rcClient);  
   
  //文本区绘制文本  
   
  if   (m_bAutoFont)  
  {  
  if   (m_cftFont.m_hObject==NULL)  
  {  
  LOGFONT   logFont;  
   
  //设置合适大小的字体  
  ::ZeroMemory(&logFont,sizeof(logFont));  
   
  logFont.lfHeight=MulDiv(rcClient.Height(),   13,   24);//  
  logFont.lfWidth=0;  
  logFont.lfWeight=FW_NORMAL;             ///***<-修改此处,加粗字体  
  logFont.lfQuality=ANTIALIASED_QUALITY;  
  logFont.lfCharSet=GB2312_CHARSET;  
   
  ::lstrcpy(logFont.lfFaceName,   _T("Times   New   Roman"));  
   
  m_cftFont.CreateFontIndirect(&logFont);  
  }  
  pOldFont=dc.SelectObject(&m_cftFont);  
  }  
   
  //   文字的输出  
  dc.DrawText(m_strCaption,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);  
   
  if(pOldFont!=NULL)  
  {  
  dc.SelectObject(pOldFont);  
  }  
  }  
  }  
  Top

3 楼Leanderhe(家俊)回复于 2004-09-04 09:39:33 得分 0

不用重载啦,vc里面的ActiveX组件里有一个超好的!  
  在对话框资源视图中,右键->Insert   Activex   Control选:Microsoft   Forms   2.0   Label  
  自动在对话框中添加一个像其他普通控件的:Label1  
  可以像其他控件一样对Label1  
  的属性进行可视化操作Top

相关问题

  • 扩展picture控件
  • CStatic控件和CEdit控件
  • 扩展控件问题?
  • DropDownList控件扩展问题
  • Inet控件的扩展使用问题
  • 自定义控件扩展datagrid问题
  • VC应用程序中调用ocx控件,提示扩展程序提供程序未能为该对象返回扩展程序,什么原因啊
  • 如何扩展VC6的动画控件??扩展VC动画控件...
  • CStatic控件没有刷新
  • 关于覆盖了Bitmap的CStatic控件 !

关键词

  • 控件
  • dc
  • nborderwidth
  • hbitmap
  • rect
  • btmap
  • memdc
  • getsyscolor
  • 绘制
  • bm

得分解答快速导航

  • 帖主:hdxhan

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo