1 先再FormView类中加入两个成员如下 :
private:
CBrush m_brBack;
COLORREF m_crBackColor;2 然后再视图构造函数中初始化:
CCodebarView::CCodebarView()
: CFormView(CCodebarView::IDD)
{
.....................
m_crBackColor=::GetSysColor(COLOR_BTNFACE);
m_brBack.CreateSolidBrush(m_crBackColor);
...............
}3 用ClassWizard在FormView类中增加一个WM_CTLCOLOR消息句柄。如下:
HBRUSH CCodebarView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch(nCtlColor)
{
case CTLCOLOR_BTN:
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);//failed
case CTLCOLOR_DLG:
return (HBRUSH) m_brBack.GetSafeHandle();
}
// TODO: Return a different brush if the default is not desired
return hbr;
}4 在CMyView::OnInitialUpdate()中加入改变背景颜色的代码即可:
m_crBackColor = RGB( 0, 0, 255 );
m_brBack.DeleteObject();
m_brBack.CreateSolidBrush( m_crBackColor );
private:
CBrush m_brBack;
COLORREF m_crBackColor;2 然后再视图构造函数中初始化:
CCodebarView::CCodebarView()
: CFormView(CCodebarView::IDD)
{
.....................
m_crBackColor=::GetSysColor(COLOR_BTNFACE);
m_brBack.CreateSolidBrush(m_crBackColor);
...............
}3 用ClassWizard在FormView类中增加一个WM_CTLCOLOR消息句柄。如下:
HBRUSH CCodebarView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch(nCtlColor)
{
case CTLCOLOR_BTN:
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);//failed
case CTLCOLOR_DLG:
return (HBRUSH) m_brBack.GetSafeHandle();
}
// TODO: Return a different brush if the default is not desired
return hbr;
}4 在CMyView::OnInitialUpdate()中加入改变背景颜色的代码即可:
m_crBackColor = RGB( 0, 0, 255 );
m_brBack.DeleteObject();
m_brBack.CreateSolidBrush( m_crBackColor );
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货