VC透掉背景色

转载 2015年07月07日 22:17:57
//透掉背景色
 //CBitmap   m_bit;
 //m_bit.LoadBitmap(strBmpPath);
 //HBITMAP bBit = (HBITMAP)m_bit.m_hObject;
 //if (GetObjectType(bBit) == OBJ_BITMAP)
 //{
 // CSize csBitmap = GetBitmapSize(bBit);
 // m_Bitmap.Attach(bBit);
 // CClientDC dc(this);
 // SetupRegion(&dc,m_Bitmap,RGB(255,0,255)); 
 // //调整到背景图片大小
 // CSize size = GetImageSize(BmpMain);
 // SetWindowPos(NULL,0,0,size.cx,size.cy,SWP_NOZORDER);
 //}
 
 
HBITMAP LoadResImageBMP(LPCTSTR bmpName)
{
 HBITMAP hBitmap = NULL;
 int tries = 3;
 
 //2009-12-05 by zhuhaiyan
 do 
 {
  hBitmap = (HBITMAP)LoadImage(
   NULL,  
   GetResourcePath() + bmpName, 
   IMAGE_BITMAP, 
   0, 
   0, 
   (LR_CREATEDIBSECTION | LR_LOADFROMFILE)
   );
 } while (hBitmap ==  NULL && (tries--) > 0);
 return hBitmap;
}
 
CSize GetBitmapSize(HBITMAP hBitmap)
{
 if (hBitmap == NULL)
 {
  return CSize(0, 0);
 }
 PBITMAPINFO pBtimapInfo;
 if (!GetBitmapHeaderInfo(hBitmap, pBtimapInfo))
 {
  return 0;
 }
 UINT nWidth = pBtimapInfo->bmiHeader.biWidth;
 UINT nHeight = pBtimapInfo->bmiHeader.biHeight;
 CSize csBitmap(nWidth, nHeight);
 if (pBtimapInfo)
 {
  free(pBtimapInfo);
 }
 return csBitmap;
}
void SetupRegion(CDC *pDC, CBitmap &cBitmap, COLORREF TransColor)
{
 CDC memDC;
 //创建与传入DC兼容的临时DC
 memDC.CreateCompatibleDC(pDC);
 CBitmap *pOldMemBmp=NULL;
 //将位图选入临时DC
 pOldMemBmp=memDC.SelectObject(&cBitmap);
 CRgn wndRgn;
 //创建总的窗体区域,初始region为0
 wndRgn.CreateRectRgn(0,0,0,0);


 BITMAP bit;   
 cBitmap.GetBitmap (&bit);//取得位图参数,这里要用到位图的长和宽    
 int y;
 for(y=0;y<=bit.bmHeight  ;y++)
 {
  CRgn rgnTemp; //保存临时region
  int iX = 0;
  do
  {
   //跳过透明色找到下一个非透明色的点.
   while (iX <= bit.bmWidth  && memDC.GetPixel(iX, y) == TransColor)
    iX++;
   //记住这个起始点
   int iLeftX = iX;
   //寻找下个透明色的点
   while (iX <= bit.bmWidth  && memDC.GetPixel(iX, y) != TransColor)
    ++iX;
   //创建一个包含起点与重点间高为1像素的临时“region”
   rgnTemp.CreateRectRgn(iLeftX, y, iX, y+1);
   //合并到主"region".
   wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_OR);
   //删除临时"region",否则下次创建时和出错
   rgnTemp.DeleteObject();
  }while(iX <bit.bmWidth );
  iX = 0;
 }
 if(pOldMemBmp)
  memDC.SelectObject(pOldMemBmp);
 CWnd * pWnd = pDC->GetWindow();
 pWnd->SetWindowRgn(wndRgn,TRUE);    
 pWnd->SetForegroundWindow();   
}
 
 
 

VC之列表控件背景色设置

本文简单介绍下VC程序中list列表控件的背景设置。 1.新建对话框应用程序 首先,新建对话框应用程序,然后添加两个list列表控件 2.设置控件模式为报告模式 ...
  • bingdianlanxin
  • bingdianlanxin
  • 2015年04月05日 19:23
  • 1521

VC TreeCtrl 添加图标 背景色透明

//节点的图标个数 int i_count=4; //载入图标 HICON icon[4]; icon[0]=AfxGetApp()->LoadIcon (IDI_ICON1); icon...
  • qiangzi4646
  • qiangzi4646
  • 2014年11月05日 23:51
  • 1051

如何在VC中改变控件的背景色

如何在VC中改变控件的背景色 2000-01-30 00:00 来源:CPCW 作者: 责任编辑:·yesky 评论(1) 提要: 在VC编程中要改变控件(诸如CView,...
  • bing87496988
  • bing87496988
  • 2013年04月07日 20:10
  • 740

VC实现顶层窗口的透明与实现子窗口的透明【重点:子窗口透明处理】

本人在vc开发过程中,多次因窗口透明而煞费苦心,在本人的前一文章《UpdateLayeredWindow与SetLayeredWindowAttributes》中已经指明实现窗口的透明方法,在过往实际...
  • lixiang987654321
  • lixiang987654321
  • 2015年06月28日 13:13
  • 5280

安卓推送技术手册——透传消息

目前市场上的消息推送方式有两种:通知和透传。 什么是透传?透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理。透传消...
  • Androilly
  • Androilly
  • 2015年06月03日 11:05
  • 1437

ZigBee(CC2530,ZSTACK)透传示例

使用ZSTACK进行透传是非常简单的一件事,ZSTACK协议栈已经封装好了函数,方便调用。   本例的透传是指CC2530通过串口接收数据,然后原封不动地通过无线数据包发送出去。无线数据包收到的数据...
  • geek_monkey
  • geek_monkey
  • 2016年11月19日 09:53
  • 1568

VC/MFC如何设置对话框、static背景颜色

方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 (这个函数已经废弃) ? 1 void SetDialogBkColor(...
  • lgstudyvc
  • lgstudyvc
  • 2016年05月05日 16:45
  • 3572

路由设置vpn透传

近在家常常半夜、凌晨被搞起响应业务,公司里有VPN ,想不干活都不行啊 苦逼的系统管理员啊   本来没什么问题,在笔记本上装个cisco的vpn客户端,连接即可,但是在家就邪了门,用无线怎么都连...
  • tianlianchao1982
  • tianlianchao1982
  • 2016年01月19日 15:43
  • 1040

STM32 DMA 串口透传

一直没有好好的捣鼓过DMA,在调BLE项目的时候,遇到了DMA串口传输的问题,伤心流涕甚长时间!!!  DMA 网上的解释一大堆,简单总结一下: DMA 处理过程全部是由硬件来实现的,速度很快...
  • xiaoleiacm
  • xiaoleiacm
  • 2015年02月02日 22:42
  • 1774

透传模式(透明传输SeriaNet)详解

1.简介         SerialNet模式将本地异步串口通信转换成基于TCP/UDP协议的网络通信。其主要目是将串行通信的简单设备实现在网络上的通信,而这些设备不需要做任何改变,为此,Seria...
  • GoodShot
  • GoodShot
  • 2013年08月25日 16:18
  • 25750
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC透掉背景色
举报原因:
原因补充:

(最多只允许输入30个字)