源代码是这么写的:
HBITMAP CreateFloatButton1(HWND nParent)
 {  HDC hDCDesktop = ::GetDC( nParent );
 CRgn rgn;
 HDC hDCBack    = ::CreateCompatibleDC( hDCDesktop );//创建设备内存关联
 HBITMAP hFloatBtn4 = ::CreateCompatibleBitmap(hDCDesktop  , 81 , 23 ) ;//创建宽81 高 23的矩形位图
 ::SelectObject( hDCBack , hFloatBtn4 );
 
         /*设置的81 x 23 矩形背景透明,可是没有效果
 BLENDFUNCTION ftn = { 0 };
         ftn.BlendOp = AC_SRC_OVER;
 ftn.AlphaFormat = AC_SRC_ALPHA;
 ftn.BlendFlags = 0;
 ftn.SourceConstantAlpha =0;
 AlphaBlend(hDCDesktop, 0, 0, 81, 23, hDCBack, 0, 0, 81, 23, ftn);
 ::SelectObject( hDCBack , hFloatBtn4 );
         */  rgn.CreateRoundRectRgn(0,0,82,24,10,10); //圆角矩形
 ::SelectObject(hDCBack,rgn);         //这下面就别看了,伤神。
 for( int i = 0 ; i < 23 ; i++)
 {
 for ( int j = 0 ; j < 81 ; j++)
 SetPixel( hDCBack , j , i , m_colorBack)  ;
 }  for ( int i = 0 ; i < 23 ; i ++)
 {
 SetPixel( hDCBack , 38 , i , RGB(255, 255, 255))  ;
 SetPixel( hDCBack , 42 , i , RGB(255, 255, 255))  ;
 }

 ::DeleteObject(hDCBack);
 ::ReleaseDC(nParent,hDCDesktop);
 return hFloatBtn4;
 }背景不能搞透明,我现在得到这样的图,注意4个角上的黑块,求助,怎么才能让生成的PNG图片透明。达到这种效果: