// TODO: Change any attributes of the DC here if ( nCtlColor==CTLCOLOR_BTN && pWnd->GetDlgCtrlID()==IDC_BUTTON_SAVE ) { pDC->SetTextColor( RGB(255, 255, 255) ); pDC->SetBkColor( RGB(255, 255, 0) ); pDC->SetBkMode( TRANSPARENT ); hbr = (HBRUSH)m_clBrush; } // TODO: Return a different brush if the default is not desired return hbr; }但是我程序运行的时候,颜色没有改变。 我在这个函数中设置断点,debug的时候,画面显示的时候,并没有进入这个函数执行。我是在一个MFC的DLL里面添加一个Dialog,并在这个Dialog上面添加了很多控件。 我想改变Dialog的底色和控件的颜色。请问是怎么回事啊?
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_EDIT && pWnd->GetDlgCtrlID()==IDC_EDIT1)//注意此处的(pWnd->),否则没效果
{
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(255,255,0));//设置文本背景色
pDC->SetBkMode(TRANSPARENT);//设置背景透明
hbr = (HBRUSH)m_brush;
} return hbr;
}对于nCtlColor的类型,如下:CTLCOLOR_BTN Button control
CTLCOLOR_DLG Dialog box
CTLCOLOR_EDIT Edit control
CTLCOLOR_LISTBOX List-box control
CTLCOLOR_MSGBOX Message box
CTLCOLOR_SCROLLBAR Scroll-bar control
CTLCOLOR_STATIC Static control
HBRUSH CDlgAlarmList::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if ( nCtlColor==CTLCOLOR_BTN && pWnd->GetDlgCtrlID()==IDC_BUTTON_SAVE )
{
pDC->SetTextColor( RGB(255, 255, 255) );
pDC->SetBkColor( RGB(255, 255, 0) );
pDC->SetBkMode( TRANSPARENT );
hbr = (HBRUSH)m_clBrush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}但是我程序运行的时候,颜色没有改变。
我在这个函数中设置断点,debug的时候,画面显示的时候,并没有进入这个函数执行。我是在一个MFC的DLL里面添加一个Dialog,并在这个Dialog上面添加了很多控件。
我想改变Dialog的底色和控件的颜色。请问是怎么回事啊?
不同的控件要用不同的参数,
如CTLCOLOR_EDIT CTLCOLOR_DLG等