본문 바로가기

Computer Language/MFC

MFC 반투명 윈도우 만들기

수년전에 내가 어느 사이트를 통해 답변한 글인데..
지금 보니 뭐가 뭔지 기억이 안난다. ㅋ

일단 중요한 것은 아래와 같다.

// 헤더파일에..여러 상수 지정. 옵션을 바꿀 수도 있슴.

#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);  // 요거 선언해주고...

// 반투명하게 만드는 루틴.
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);
pSetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_ALPHA);
// pSetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_COLORKEY);
// 다이얼로그 반투명하게 만듬.



자세한 응용방법은 소스를 참조하면 된다.
간단한 메모 프로그램인데
완벽하지는 않다. 어릴때 짜놓은 거라서 -_-;

사용자 삽입 이미지

알파블랜딩 값을 입력할때 엔터키를 치면 프로그램이 종료된다.
그 문제는 다른 포스트에 적어놓았다.
0% 는.. 추천하지 않는다. -_-;; 보이지가 않기 때문이다. ㅋ