불투명 윈도우 만들기

 

* 불투명 윈도우 만들기

방금전에 책에서 본 예제로 만든겁니다.

님의 코드보다 더 자원을 먹을지는 모르겠지만 참고하세요.

윈도 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);

Leave a Reply