본문 바로가기

어떻게 할까

[win32.API]윈도우 객체에 그림자 들이우기.

사용자 삽입 이미지



윈도우의 XP 이상에서는 윈도우 폼 생성 클래스 중 CS_DROPSHADOW 라는 것이 있다.
하지만, 어느 SDK 에서도 이 그림자 생성에 관련된 것은 없지만 , 다음 방법으로 핸들값 을 통해 쉐도우를 생성 할수 있다.

void EnableDropShadow(HWND  hWnd, bool DoEnable)
{
    DWORD classLong = GetClassLong(hWnd, GCL_STYLE);
 
    if (DoEnable)
        classLong = classLong | CS_DROPSHADOW;
    else
        classLong = classLong & ~CS_DROPSHADOW;
 
    SetClassLong(hWnd, GCL_STYLE, classLong);
}

HWND 값에는 각종 CreateWindow() 함수를 통해 생성된 핸들을 지정할수 있다.
단 , CS_DROPSHADOW 플래그는 헤더나 코드 상단에 다음과 같이 정의 되어야 한다.

 #define CS_DROPSHADOW    0x20000

이는 DELPHI 에서도 적용이 가능하다.