다음을 통해 공유


WM_CTLCOLORSTATIC 메시지

정적 컨트롤 또는 읽기 전용이거나 사용하지 않도록 설정된 편집 컨트롤은 컨트롤을 그리려고 할 때 부모 창에 WM_CTLCOLORSTATIC 메시지를 보냅니다. 이 메시지에 응답하여 부모 창은 지정된 디바이스 컨텍스트 핸들을 사용하여 편집 컨트롤의 텍스트 전경색 및 배경색을 설정할 수 있습니다.

창은 WindowProc 함수를 통해 이 메시지를 받습니다.

WM_CTLCOLORSTATIC

    WPARAM wParam;
    LPARAM lParam; 

매개 변수

wParam

정적 컨트롤 창의 디바이스 컨텍스트에 대한 핸들입니다.

lParam

정적 컨트롤에 대한 핸들입니다.

반환 값

애플리케이션이 이 메시지를 처리하는 경우 반환 값은 시스템에서 정적 컨트롤의 배경을 그리는 데 사용하는 브러시에 대한 핸들입니다.

설명

애플리케이션이 만든 브러시를 반환하는 경우(예: CreateSolidBrush 또는 CreateBrushIndirect 함수 사용) 애플리케이션은 브러시를 해제해야 합니다. 애플리케이션이 시스템 브러시(예: GetStockObject 또는 GetSysColorBrush 함수에 의해 검색된 브러시)를 반환하는 경우 애플리케이션은 브러시를 해제할 필요가 없습니다.

기본적으로 DefWindowProc 함수는 정적 컨트롤의 기본 시스템 색상을 선택합니다.

비활성화된 편집 컨트롤의 텍스트 배경색을 설정할 수 있지만, 텍스트 전경색을 설정할 수는 없습니다. 시스템은 항상 COLOR_GRAYTEXT를 사용합니다.

읽기 전용 또는 사용하지 않도록 설정된 편집 컨트롤은 WM_CTLCOLORSTATIC 메시지를 보내지 않습니다. 대신 WM_CTLCOLOREDIT 메시지를 보냅니다.

WM_CTLCOLORSTATIC 메시지는 스레드 간에 전송되지 않으며 동일한 스레드 내에서만 전송됩니다.

대화 상자 프로시저가 이 메시지를 처리하는 경우 원하는 반환 값을 INT_PTR로 캐스팅하고 값을 직접 반환해야 합니다. 대화 상자 프로시저가 FALSE를 반환하면 기본 메시지 처리가 수행됩니다. SetWindowLong 함수에 의해 설정된 DWL_MSGRESULT 값은 무시됩니다.

예제

다음 C++ 예제에서는 WM_CTLCOLORSTATIC 메시지에 대한 응답으로 정적 컨트롤의 텍스트 전경색과 배경색을 설정하는 방법을 보여 줍니다. hbrBkgnd 변수는 NULL로 초기화되고 WM_CTLCOLORSTATIC 호출 사이에 백그라운드 브러시를 저장하는 정적 HBRUSH 변수입니다. 더 이상 필요하지 않은 경우(일반적으로 연결된 대화 상자가 제거될 때) DeleteObject 함수를 호출하여 브러시를 제거해야 합니다.

   case WM_CTLCOLORSTATIC:
        {
        HDC hdcStatic = (HDC) wParam;
        SetTextColor(hdcStatic, RGB(255,255,255));
        SetBkColor(hdcStatic, RGB(0,0,0));

        if (hbrBkgnd == NULL)
        {
            hbrBkgnd = CreateSolidBrush(RGB(0,0,0));
        }
        return (INT_PTR)hbrBkgnd;
        }

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2003 [데스크톱 앱만 해당]
헤더
Winuser.h(Windows.h 포함)

추가 정보

참조

WM_CTLCOLORBTN

WM_CTLCOLOREDIT

WM_CTLCOLORLISTBOX

WM_CTLCOLORSCROLLBAR

기타 리소스

DefWindowProc

RealizePalette

SelectPalette

WM_CTLCOLORDLG