#define WS_EX_LAYERED 0x00080000 #define LWA_COLORKEY 1 // Use color as the transparency color. #define LWA_ALPHA 2 // Use bAlpha to determine the opacity of the layer HMODULE hModule =GetModuleHandle("User32.DLL"); typedef BOOL (WINAPI* SETLAYEREDWND)( HWND, COLORREF, BYTE, DWORD); SETLAYEREDWND SetLayeredWindowPtr = NULL; SetLayeredWindowPtr = (SETLAYEREDWND)GetProcAddress(hModule, "SetLayeredWindowAttributes");
2.
SetTransparent (BYTE bAlpha) ...{ if (SetLayeredWindowPtr == NULL) return; if (bAlpha <255) ...{ // set layered style for the dialog SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED); // call it with 255 as alpha - opacity SetLayeredWindowPtr (m_hWnd, 0, bAlpha, LWA_ALPHA); } else ...{ SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) &~WS_EX_LAYERED); // Ask the window and its children to repaint ::RedrawWindow(m_hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN); } }
3.
SetTransparentColor (COLORREF col, BOOL bTrans) ...{ if (SetLayeredWindowPtr == NULL) return; if (bTrans) ...{ // set layered style for the dialog SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED); // call it with 0 alpha for the given color SetLayeredWindowPtr (m_hWnd, col, 250, LWA_COLORKEY); } else ...{ SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) &~WS_EX_LAYERED); // Ask the window and its children to repaint ::RedrawWindow(m_hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN); } }
1. #define WS_EX_LAYERED 0x00080000 #define LWA_COLORKEY 1 // Use color as the transparency color.#define LWA_ALPHA 2 // Use bAlpha to determine the opacity of the layerHMODULE hModule =GetModu