簡體   English   中英

C ++ MFC更改單選框的背景色

[英]C++ MFC Changing Background color of radio box

我正在嘗試在MFC應用程序中更改三個單選框的背景顏色,但是無論如何,它們似乎仍然是默認顏色。

這是我最近的嘗試:IDC_LIKE,IDC_FOLLOW和IDC_COMMENT是我要更改其顏色的三個單選框的標識符。 我什至嘗試更改CTLCOLOR_STATIC字段,但這也不起作用。

我該如何解決?

 // CCompleteControlDlg message handlers
HBRUSH CCompleteControlDlg::OnCtlColor(CDC * pDC, CWnd * pWnd, UINT nCtlColor)
{
if (pWnd->GetDlgCtrlID() == IDC_LIKE || pWnd->GetDlgCtrlID() == IDC_FOLLOW || pWnd->GetDlgCtrlID() == IDC_COMMENT) {
    pDC->SetTextColor(RGB(0, 0, 0));
    pDC->SetBkColor(RGB(136, 217, 242));
    pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)GetStockObject(NULL_BRUSH);
}
else {
    switch (nCtlColor) {
    case CTLCOLOR_STATIC:
        pDC->SetTextColor(RGB(0, 0, 0));
        pDC->SetBkColor(RGB(136, 217, 242));
        pDC->SetBkMode(TRANSPARENT);
        return (HBRUSH)GetStockObject(NULL_BRUSH);

    case CTLCOLOR_DLG: return m_brush;

    case CTLCOLOR_BTN:
        pDC->SetTextColor(RGB(255, 255, 255));
        pDC->SetBkColor(RGB(136, 217, 242));
        return (HBRUSH)GetStockObject(NULL_BRUSH);

    default:
        return CCompleteControlDlg::OnCtlColor(pDC, pWnd, nCtlColor);
    }
}
}

SetTextColorSetBkColor不會影響按鈕的文本顏色和背景顏色。 您必須歸還刷子。 您已經有了m_brush ,只需將其用於對話框和控件即可:

HBRUSH CCompleteControlDlg::OnCtlColor(CDC * pDC, CWnd * pWnd, UINT nCtlColor)
{
    ...
    return m_brush;
}

其中m_brush創建為CreateSolidBrush(RGB(136, 217, 242))...

要同時處理靜態控件,只需將背景模式設置為透明即可:

HBRUSH CCompleteControlDlg::OnCtlColor(CDC * pDC, CWnd * pWnd, UINT nCtlColor)
{
    pDC->SetTextColor(RGB(0, 0, 0));
    pDC->SetBkMode(TRANSPARENT);
    return m_brush;
}

或者,您可以將背景顏色+不透明背景用於靜態和編輯控件:

pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(136, 217, 242));
pDC->SetBkMode(OPAQUE);
return m_brush;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM