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 [데스크톱 앱만 해당] |
헤더 |
|