一单文档程序,在View中动态new了一个窗口(CWnd),如何能使这个Wnd窗口半透明???????????????
谢谢了

解决方案 »

  1.   

    系统的LayeredWindow只支持顶层窗口;反过来说,不是顶层窗口的,都可以自己来绘制而不用子窗口实现。
      

  2.   

    在onpaint中把新窗口的dc来源于底下的窗口。
      

  3.   

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {......
    SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
    GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
    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,128,2); //128透明程度
    FreeLibrary(hInst); 
    }
    return 0;
    }
      

  4.   

    风格改成popup的,然后加上SetLayeredWindowAttributes
      

  5.   

    窗口设置WS_EX_LAYERED扩展风格,调用SetLayeredWindowAttributes函数。
      

  6.   

    用SetWindowLong加上 WS_EX_LAYERED 属性,然后用SetLayeredWindowAttributes
      

  7.   

    WS_EX_LAYERED 是什么啊?我用的是VC6.0不认识这个啊?如何使用SetWindowLong?
    谢谢!
      

  8.   

    需要安装2000年以后的SDK,并在stdafx.h中先定义:
    #define _WIN32_WINNT 0x0500或者你直接在自己的代码中定义:
    #define WS_EX_LAYERED 0x00080000
      

  9.   

    jameshooo:
    你说的对啊,我用了各种设置都没用的。