如何使CWnd类建的窗口透明?不是对话框!

解决方案 »

  1.   

    // Set WS_EX_LAYERED on this window 
    SetWindowLong(hwnd, 
                  GWL_EXSTYLE, 
                  GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);// Make this window 70% alpha
    SetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_ALPHA);
      

  2.   

    记得将stdafx.h中的:_WIN32_WINNT 0x0400
    改为:
    _WIN32_WINNT 0x0500
      

  3.   

    这个只能用于Dialog,不能用于CView和CWnd建立的窗口
      

  4.   

    谁说只能用作Dialog,只要不是子窗口就行了。
      

  5.   

    用CWnd的CreateEx进行透明,代码如下
    CreateEx(WS_EX_TRANSPARENT, ...
      

  6.   

    功能:设置窗体的透明度
    参数:pos  透明层度取值(0-100)
    void CTranswinDlg::SetFreeLibrary(int Pos)
    {
    Pos=Pos*2.55;
    BYTE eff=(BYTE)Pos;
    HINSTANCE hInst = LoadLibrary("User32.DLL"); //加载DLL
    if(hInst) 
    {            
    typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);          
    MYFUNC fun = NULL;
    //取得SetLayeredWindowAttributes函数指针     
    fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
    //调用SetLayeredWindowAttributes
    if(fun)fun(this->GetSafeHwnd(),0,eff,2);  
    FreeLibrary(hInst); 
    };
    }
      

  7.   

    xdjm,现在要透明的是CWnd建的子窗口.大家看看有透明的办法?