다이얼로그 기반의 투명한 윈도우는 세련되고 구현이 쉽다.
간단한 생활 어플리케이션은 이 기능으로 예쁘게 만들 수 있다.
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 에서는 아래와 같이 한다.
간단한 생활 어플리케이션은 이 기능으로 예쁘게 만들 수 있다.
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] 투명한 다이알로그 |작성자 견우
이렇게 하면 ㅇㅋ