* 불투명 윈도우 만들기
방금전에 책에서 본 예제로 만든겁니다.
님의 코드보다 더 자원을 먹을지는 모르겠지만 참고하세요.
윈도 2000이상에서만 된다고 하네요.
전역입니다 :
// 투명 설정을 위한 상수 정의 #define WS_EX_LAYERED 0x00080000 #define LWA_ALPHA 0x00000002
OnInitDialog에 추가 :
// 확장 스타일에 WS_EX_LAYERED를 추가한다 ModifyStyleEx(0, WS_EX_LAYERED);
// user32.dll에 있는 SetLayeredWindowAttributes()의 포인터를 얻는다 HMODULE hUserDll = ::LoadLibrary(_T("USER32.dll")); typedef BOOL (WINAPI* LPSETTRANSPARENT)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
LPSETTRANSPARENT lpSetTransparent = NULL; lpSetTransparent = (LPSETTRANSPARENT)::GetProcAddress(hUserDll, "SetLayeredWindowAttributes");
if(lpSetTransparent) // SetLayeredWindowAttributes() 함수를 호출한다. // 세번째 투명도는 0 ~ 255까지의 값을 설정한다 lpSetTransparent(m_hWnd, NULL, 200, LWA_ALPHA);
// user32.dll을 닫는다 ::FreeLibrary(hUserDll); |