SetAlpha(LONG nTrans) { HMODULE hDllUser32 = LoadLibrary("user32"); if (hDllUser32) { BOOL (WINAPI *pfnSetLayeredWindowAttributes)(HWND,DWORD,BYTE,DWORD); pfnSetLayeredWindowAttributes = (BOOL (WINAPI *)(HWND,DWORD,BYTE,DWORD)) GetProcAddress(hDllUser32, "SetLayeredWindowAttributes"); if (pfnSetLayeredWindowAttributes) { HWND hTop = GetVimWindow(); if (hTop) { if (nTrans == 255) { SetWindowLong(hTop, GWL_EXSTYLE, GetWindowLong(hTop, GWL_EXSTYLE) & ~WS_EX_LAYERED); } else { SetWindowLong(hTop, GWL_EXSTYLE, GetWindowLong(hTop, GWL_EXSTYLE) | WS_EX_LAYERED); pfnSetLayeredWindowAttributes(hTop, 0, (BYTE)nTrans, LWA_ALPHA); } } } FreeLibrary(hDllUser32); } return GetLastError(); }
BOOL API::SetLayeredWindowAttributes(HWND hWnd, COLORREF clr, BYTE alpha, DWORD dwFlags) { if(sysConfig.isWin2KPlus) return(pfnSetLayeredWindowAttributes(hWnd, clr, alpha, dwFlags)); return(FALSE); }
LONG _declspec(dllexport) SetAlpha(LONG nTrans) { HMODULE hDllUser32; hDllUser32 = LoadLibrary("user32"); if (hDllUser32) { BOOL (WINAPI *pfnSetLayeredWindowAttributes)(HWND,DWORD,BYTE,DWORD); pfnSetLayeredWindowAttributes = (BOOL (WINAPI *)(HWND,DWORD,BYTE,DWORD)) GetProcAddress(hDllUser32, "SetLayeredWindowAttributes"); if (pfnSetLayeredWindowAttributes) { HWND hTop = NULL; DWORD dwThreadID; dwThreadID = GetCurrentThreadId(); EnumThreadWindows(dwThreadID, FindWindowProc, (LPARAM)&hTop); if (hTop) { if (nTrans == 255) { SetWindowLong(hTop, GWL_EXSTYLE, GetWindowLong(hTop, GWL_EXSTYLE) & ~WS_EX_LAYERED); } else { SetWindowLong(hTop, GWL_EXSTYLE, GetWindowLong(hTop, GWL_EXSTYLE) | WS_EX_LAYERED); pfnSetLayeredWindowAttributes( hTop, 0, (BYTE)nTrans, LWA_ALPHA); } } } FreeLibrary(hDllUser32); } return GetLastError(); }