创建了一个非模式对话框,请问怎么设置它的透明度啊,用一个函数没法解决吗?要自己写函数吗??

解决方案 »

  1.   

    BOOL SetLayeredWindowAttributes(
       COLORREF crKey,
       BYTE bAlpha,
       DWORD dwFlags
    );
     第二个参数就是透明度的值
      

  2.   

    HINSTANCE hInst = LoadLibrary("User32.DLL"); 
    if(hInst) 

    typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); 
    MYFUNC fun = NULL;
    //取得SetLayeredWindowAttributes函数指针 
    fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
    if(fun)
    fun(this->GetSafeHwnd(),0,220,2);
    FreeLibrary(hInst); 
    }
      

  3.   

    我只想让子窗口透明,不想让父窗口透明,直接setlayeredwindowattributes不行吗??
      

  4.   

    这个直接调用没有效果啊我这样写的
    ::SetLayeredWindowAttributes(child,0,1,LWA_ALPHA);完全没看到透明
      

  5.   

    参考一下:
    http://hi.baidu.com/qiujiejia/blog/item/5ec37482819e41af6c811991.html
      

  6.   

    子窗口不能有WS_CHILD风格,要不透明效果没用,可以有父窗口,
      

  7.   

    谢谢大家 我已经解决了,要在显示之前set
      

  8.   

    不错,告诉了自己的解决之道,Mark一下!