다음을 통해 공유


CWnd::OnCtlColor

자식 컨트롤이 그려 지 려 되 면 프레임 워크는이 멤버 함수를 호출 합니다.

afx_msg HBRUSH OnCtlColor(
   CDC* pDC,
   CWnd* pWnd,
   UINT nCtlColor 
);

매개 변수

  • pDC
    자식 창에 대 한 디스플레이 컨텍스트를 포인터를 포함합니다.일시적일 수 있습니다.

  • pWnd
    컨트롤의 색을 요청에 대 한 포인터를 포함 합니다.일시적일 수 있습니다.

  • nCtlColor
    컨트롤의 형식을 지정 하는 다음 값 중 하나가 포함 됩니다.

    • CTLCOLOR_BTN 단추 컨트롤

    • CTLCOLOR_DLG 대화 상자

    • CTLCOLOR_EDIT 편집 컨트롤

    • CTLCOLOR_LISTBOX 목록 상자 컨트롤

    • CTLCOLOR_MSGBOX 메시지 상자

    • CTLCOLOR_SCROLLBAR 스크롤 막대 컨트롤

    • CTLCOLOR_STATIC 정적 컨트롤

반환 값

OnCtlColor컨트롤 배경을 그리기에 사용 되는 브러시를 핸들을 반환 해야 합니다.

설명

대부분의 컨트롤 준비 하는 부모 (일반적으로 대화 상자)이이 메시지를 보내기는 pDC 정확한 색을 사용 하 여 컨트롤 그리기.

텍스트 색을 변경 하려면 호출을 SetTextColor 멤버 함수를 원하는 빨강, 녹색 및 파랑 (RGB) 값.

단일 행 편집 컨트롤의 배경색을 변경 하려면 브러시 핸들 모두에서 설정의 CTLCOLOR_EDITCTLCOLOR_MSGBOX 호출 및 메시지 코드는 CDC::SetBkColor 함수에 대 한 응답으로는 CTLCOLOR_EDIT 코드.

OnCtlColor실제로 콤보 상자 자식 및 않습니다 자식 창의 드롭다운 목록 상자 이기 때문에 드롭다운 콤보 상자의 목록 상자에 대해 호출 됩니다.드롭다운 목록 상자의 색을 변경 하려면 만들는 CComboBox 재정의로 OnCtlColor 는 검사에 대 한 CTLCOLOR_LISTBOX 에 있는 nCtlColor 매개 변수.이 처리기는 SetBkColor 텍스트의 배경색을 설정 하려면 멤버 함수를 사용 해야 합니다.

[!참고]

이 멤버 함수는 Windows 메시지를 처리 하는 응용 프로그램을 허용 하는 프레임 워크에서 호출 됩니다.메시지를 받을 때 프레임 워크에 의해 전달 된 매개 변수를 함수에 전달 된 매개 변수를 반영 합니다.이 함수의 기본 클래스 구현을 호출 하는 경우 해당 구현을 원래 메시지와 입력 매개 변수가 없는 함수에 전달 된 매개 변수를 사용 합니다.대화 상자 클래스에 다음 메서드를 추가 하려면 Visual Studio 속성 창에 대 한 WM_CTLCOLOR 메시지 처리기를 추가 하려면 사용 합니다.또는 수동으로 ON_WM_CTLCOLOR() 입력 메시지 맵에 추가할 수 있습니다.

예제

// This OnCtlColor handler will change the color of a static control
// with the ID of IDC_MYSTATIC. The code assumes that the CPenWidthsDlg
// class has an initialized and created CBrush member named m_brush.
// The control will be painted with red text and a background
// color of m_brush.
HBRUSH CPenWidthsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   // Call the base class implementation first! Otherwise, it may
   // undo what we're trying to accomplish here.
   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

   // Are we painting the IDC_MYSTATIC control? We can use
   // CWnd::GetDlgCtrlID() to perform the most efficient test.
   if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
   {
      // Set the text color to red
      pDC->SetTextColor(RGB(255, 0, 0));

      // Set the background mode for text to transparent 
      // so background will show thru.
      pDC->SetBkMode(TRANSPARENT);

      // Return handle to our CBrush object
      hbr = m_brush;
   }

   return hbr;
}

요구 사항

헤더: afxwin.h

참고 항목

참조

CWnd 클래스

계층 구조 차트

CDC::SetBkColor