共用方式為


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 提供繪製控制項準備使用正確的色彩。

若要變更文字色彩,請使用所需,紅色、綠色和藍色 (RGB) 值的 SetTextColor 成員函式。

變更單行編輯控制項的背景色彩,在 CTLCOLOR_EDITCTLCOLOR_MSGBOX 訊息的筆刷控制代碼以及呼叫程式碼 CDC::SetBkColor 函式以回應 CTLCOLOR_EDIT 程式碼。

因為下拉式清單方塊實際上是下拉式方塊的子視窗的子系,而不是OnCtlColor 不會根據下拉式方塊的下拉式清單方塊中呼叫。 若要變更下拉式清單方塊的色彩,以檢查 nCtlColor 參數的 CTLCOLOR_LISTBOXOnCtlColor 的覆寫的 CComboBox 。 在處理常式中,必須使用 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;
}

需求

Header: afxwin.h

請參閱

參考

CWnd 類別

階層架構圖表

CDC::SetBkColor