Windows2000에서 지원되며, 먼저 아래 방법대로 해보고 안될 경우 MSDN홈페이지에서 최신 SDK를 다운 받으시면
될것입니다.(user32.dll이 최신것이면 될 것 같음)
먼저 필요한 상수들을 정의 하시고,
#define WS_EX_LAYERED 0x00080000
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
#define ULW_COLORKEY 0x00000001
#define ULW_ALPHA 0x00000002
#define ULW_OPAQUE 0x00000004
타입선언,
typedef BOOL(WINAPI *SLWA)(HWND, COLORREF, BYTE, DWORD);
위에서 선언한 함수포인터 타입은 실제 투명 윈도우를 만드는 역할을 하는
SetLayeredWindowAttributes 함수를 user32.dll에서 직접 끄집어내서 사용하기 위해서임
그리고 OnInitDialog()정도에서 아래와 같이 기술합니다.
SLWA pSetLayeredWindowAttributes = NULL;
HINSTANCE hmodUSER32 = LoadLibrary("USER32.DLL");
pSetLayeredWindowAttributes=(SLWA)GetProcAddress(hmodUSER32,"SetLayeredWindowAttributes");
HWND hwnd = this->m_hWnd;
SetWindowLong(hwnd, GWL_EXSTYLE,GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
pSetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_ALPHA);
-----------------------------------------
BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);
Requirements
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib
하도 오래되서 어데서 출처가 어데인지 잊어 버렸네요 ㅡ.ㅡ;;
댓글 없음:
댓글 쓰기