[英]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);
}
}
}
SetTextColor
和SetBkColor
不會影響按鈕的文本顏色和背景顏色。 您必須歸還刷子。 您已經有了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.