CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

怎样在CBitmapButton中加载外部指定路径的BMP图片??

楼主lijin7784(勇敢的心)2005-12-22 09:56:52 在 VC/MFC / 界面 提问

我想用让一个按钮有三态的功能,呵呵  
  于是准备使用   CBitmapButton  
  可是我只会使用   CBitmapButton的LoadBitmaps函数,其参数为   已经加入资源中的BMP图片的ID  
   
  而现在不想把很多的BMP图片都加入到资源中,想在程序中指定BMP图片的路径,让CBitmapButton加载  
   
  不知如何实现,多谢啊 问题点数:100、回复次数:4Top

1 楼laiyiling(陌生人[MVP])回复于 2005-12-22 10:07:29 得分 40

用其他的位图按钮类  
  http://www.vckbase.com/english/code/buttonctrl/index.htmlTop

2 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-12-22 10:27:25 得分 20

自己处理DrawItem方法写一个,网上有很多例子  
  例如  
  http://www.codeguru.com/cpp/controls/buttonctrl/article.php/c2069/Top

3 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-12-22 10:30:05 得分 30

由文件名获得HBITMAP可以用  
  LoadImage(NULL,szBmp,   IMAGE_BITMAP,0,0,LR_LOADFROMFILE);Top

4 楼shicaohuli(食草狐狸)回复于 2006-01-05 18:37:11 得分 10

void   CUIButton::DrawItem(LPDRAWITEMSTRUCT   lpDrawItemStruct)    
  {  
  //   TODO:   Add   your   code   to   draw   the   specified   item  
  CDC   ButtonDC;  
  BITMAP   bmp;  
  CDC   mem;  
  CRect   rc;  
   
  ButtonDC.Attach(lpDrawItemStruct->hDC);  
   
  mem.CreateCompatibleDC(&ButtonDC);  
   
  rc   =   lpDrawItemStruct->rcItem;  
  UINT   state   =   lpDrawItemStruct->itemState;  
   
  if   ((state   &   ODS_SELECTED)   ==   ODS_SELECTED)  
  {  
   
  HBITMAP   hbmp;  
  hbmp   =   (HBITMAP)::LoadImage(AfxGetInstanceHandle(),   "D:\\预览\\4_49.bmp",IMAGE_BITMAP,0,0,   LR_LOADFROMFILE);  
   
  CBitmap*   bitmapTrans   =   CBitmap::FromHandle(hbmp);  
   
  int   iRet   =   bitmapTrans->GetBitmap(&bmp);  
  CBitmap   *old   =   mem.SelectObject(bitmapTrans);  
   
  BOOL   bRet   =   ButtonDC.StretchBlt(rc.left,   rc.top,   rc.right,   rc.bottom,   &mem,   0,   0,  
  bmp.bmWidth,   bmp.bmHeight,   SRCCOPY);  
  mem.SelectObject(old);  
  bRet   =   bitmapTrans->DeleteObject();  
   
  iRet   =   ButtonDC.SetBkMode(TRANSPARENT);  
   
  TCHAR   sCap[MAX_PATH];  
  iRet   =   ::GetDlgItemText(GetParent()->m_hWnd,   lpDrawItemStruct->CtlID,   sCap,   MAX_PATH);  
   
  CFont   text_font;  
  text_font.CreatePointFont(120,   _T("Times   New   Roman"));  
   
  CFont*   old_font   =   ButtonDC.SelectObject(&text_font);  
  ButtonDC.SetTextColor(0xffffff);  
  iRet   =   ButtonDC.DrawText(sCap,   &rc,   DT_CENTER|DT_VCENTER|DT_SINGLELINE);  
  ButtonDC.SelectObject(old_font);  
  text_font.DeleteObject();  
  }Top

相关问题

  • 用路径加载Icon时的问题
  • 如何根据路径加载图片
  • 请问怎样在使用CBitmapButton的时候加载图片文件(bmp)
  • 怎样获得Image中加载图像的路径??
  • 如何设定JDBC DRIVER的路径然后动态加载
  • 请教CDHtmlDialog中引用html资源,加载路径的问题。
  • 如何按原路径、名称保存已加载的图片?
  • 加载crystal report,程式中不用绝对路径怎么写?
  • 请教高手,怎样得到执行程序中dll的路径,不是加载dll的程序的路径?
  • 如何获取vc当前加载的工程的绝对路径

关键词

  • cbitmapbutton
  • lpdrawitemstruct
  • buttondc
  • bmp图片
  • hbitmap

得分解答快速导航

  • 帖主:lijin7784
  • laiyiling
  • goodboyws
  • goodboyws
  • shicaohuli

相关链接

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

广告也精彩

反馈

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