我在XP下想做一个半透明的窗体,用到了函数:SetWindowLong(),和SetLayeredWindowAttributes();可是无法运行。
查看了MSDN,有个疑点是否只能在2K下才能使用上述函数!SetLayeredWindowAttributes()这个函数我还是通过动态调用DLL才能使用的,不能在VC6下直接使用

解决方案 »

  1.   

    2000以上操作系统可以用,这个函数是user32.dll的函数,在sdk里并没有表明调用的接口,只能从dll里取void CMyWnd::MakeWindowTransparent(int iAlpha)
    {
    HMODULE hModule = ::LoadLibrary(_T("user32.dll")); typedef BOOL (FAR PASCAL* SETWINATTRFUNC)(HWND, COLORREF, BYTE, DWORD);
    SETWINATTRFUNC pSetWindowAttrib = (SETWINATTRFUNC)GetProcAddress(hModule, "SetLayeredWindowAttributes"); SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE)|0x80000L);
    if (pSetWindowAttrib != NULL)
    pSetWindowAttrib(m_hWnd, 0, (BYTE)iAlpha, 0x2); FreeLibrary(hModule);
    }