如题,在不规则窗体工程http://www.codeguru.com/dialog/IrrBmpDlg.html基础上修改,窗体实现了,但是提出来做一个控件怎么都达不到透明的效果。大虾,指点

解决方案 »

  1.   

    http://download.csdn.net/detail/mhwer99/3719771
      

  2.   

    好像是用这个函数TransparentBlt,可是我这里任何现实都没有BOOL CBitmapDialog :: OnEraseBkgnd (CDC *pDC)
    {
    if (!m_bBitmapExists)
    return CWnd :: OnEraseBkgnd (pDC); CRect rc;
    GetClientRect (rc); CDC dcImage;
    dcImage.CreateCompatibleDC (pDC);
    CBitmap *pOldBitmap = dcImage.SelectObject (m_bmBitmap); BITMAP bm;
    m_bmBitmap->GetBitmap (&bm); int width = min (bm.bmWidth, rc.Width());
    int height = min (bm.bmHeight, rc.Height()); BOOL bSuc = pDC->TransparentBlt(0, 0, rc.Width(), rc.Height(), &dcImage, 0, 0,rc.Width(), rc.Height(),0xffffff);
    DWORD d = GetLastError(); dcImage.SelectObject (pOldBitmap);
    dcImage.DeleteDC (); return TRUE;
    }
      

  3.   

    工程都打不开!XML 解析中に次のエラーが発生しました:ファイル: C:\mywork\toumei\vs6\TestGdipButton.vcproj
    行: 9
    列: 2
    エラー メッセージ:
    '9.00' が、'7.00 7,00 7.10 7,10 8.00 8,00' の 'enumeration' 制約に違反しています。
    値 '9.00' を持つ属性 'Version' を解析できませんでした。ファイル 'C:\mywork\toumei\vs6\TestGdipButton.vcproj' を読み込めませんでした。
      

  4.   

    [email protected]
    我的是vss2005
      

  5.   

    我是2008的,那你把.sln的工程删了,然后再用.dsw工程转换一下吧
      

  6.   

    不能满足需要阿,我是加载BMP图,然后把大片白色背景颜色变成透明的,请再指点
      

  7.   

    我那个是这样的啊,图片的形状是由bmp图片决定的,按钮显示的图片是png,一个按钮要两张图片
    你要纯bmp图片的我也有,一个按钮要四张bmp图片的类
      

  8.   

    你能不能给我搞一个简单的,加载bmp图,只使用一张图,把这张图的白色区域变透明的CWnd子类。迫切
      

  9.   

    可以我有源码,但是做成一个从CWnd继承的控件就看不到效果了
      

  10.   

    我看到了,核心代码在函数CKbcBmp::Draw。
    不好意思,我再追问一下能不能简单地通过调用DC的函数TransparentBlt来实现呢?
      

  11.   

    我现在做的是从CWnd继承过来的子类,你那个是从CButton继承的,并且带了许多第三方的代码,讲实话不是理想。
      

  12.   

    我也就是把以前做的东西临时拼凑了一下,你可以把没用去掉,都归到一个类中
    至于你要直接继承CWnd应该也是可以的,CButton也是CWnd子类,重载的函数都有的