我设计了一个窗口,调用了UpdateLayeredWindows把它设置成了异形窗口,但是窗口上的按钮、编辑框等控件都不显示了,点击还有效。这个问题怎么解决呀?

解决方案 »

  1.   

    http://it.sohu.com/20040816/n221556887.shtml
      

  2.   

    这篇文章看过,没启发呀,指点指点?我的实现就是在OnInitDialog()里添加了以下的代码:
       POINT ptSrc;
       SIZE size;
       CDC dcMem;
       CBitmap bp;
       CBitmap *pOldMemBmp = NULL; 
       BITMAP bm;
       BLENDFUNCTION blend;
       
       //设置alpha blend
       blend.BlendOp = AC_SRC_OVER;
       blend.AlphaFormat = AC_SRC_ALPHA;
       blend.AlphaFormat = 0;
       blend.SourceConstantAlpha = 150;
      
       //装载位图 
       bp.LoadBitmap(IDB_BITMAP8); 
       bp.GetBitmap(&bm);   dcMem.CreateCompatibleDC(GetDC()); 
       pOldMemBmp = dcMem.SelectObject(&bp); 
     
       SetWindowLong(this->m_hWnd, GWL_EXSTYLE, GetWindowLong(this->m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);   
          
       size.cx = bm.bmWidth;
       size.cy = bm.bmHeight;
       
       ptSrc.x = 0;
       ptSrc.y = 0;
       
       BOOL ret = UpdateLayeredWindow(GetDC(), NULL, &size, &dcMem, &ptSrc, RGB(0, 0, 0), &blend, ULW_ALPHA);
       if (pOldMemBmp)
       {
          dcMem.SelectObject(pOldMemBmp);
       }   dcMem.DeleteDC();
      

  3.   

    http://www.codeproject.com/gdi/pxalphablend.asp
    http://www.codeproject.com/dialog/screenmate.asp