다이얼로그 기반의 투명한 윈도우는 세련되고 구현이 쉽다.
간단한 생활 어플리케이션은 이 기능으로 예쁘게 만들 수 있다.

1. 윈도우 스타일에 WS_EX_LAYERED를 추가

2. 투명도 설정

SetWindowLong(hwnd, GWL_EXSTYLE,GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes( 0, (255 * 30) / 100, LWA_ALPHA );

MFC8 에서는 SetLayeredWindowAttributes가 기본으로 include, link되지만
VC6 에선 user32.dll에서 직접 로드해야하고, 함수 기본형도 다르다.
VC6 에서는 아래와 같이 한다.

// 함수 선언
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
);

// 상수 선언
#define WS_EX_LAYERED 0x00080000
#define LWA_ALPHA     0x00000002

// DLL에서 함수를 호출하기 위한 함수 선언
typedef BOOL(WINAPI *SLWA)(HWND, COLORREF, BYTE, DWORD);

// 함수포인터 선언
SLWA pSetLayeredWindowAttributes = NULL;

// DLL을 로드하여 함수에 대한 포인터를 가져옴
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);
// 다이알로그의 투명도를 30%로 변경
pSetLayeredWindowAttributes(hwnd, 0, (255 * 30) / 100, LWA_ALPHA);

[출처] [MFC] 투명한 다이알로그 |작성자 견우


이렇게 하면 ㅇㅋ
Posted by 배트
,