各位大哥大姐:
如何改变框架的背景颜色,一般默认是灰色的,我想改成其他的颜色,不知道行不行?给点建议?
我的主要目的是:把菜单栏去掉,再就是把工具栏的每个按钮变大,每一个的大小是48×48,我想把工具栏的背景颜色设置成和客户区中的背景图片相一致,这样使得工具栏和客户区背景图片融为一体,一开始我是想改工具栏的背景颜色,但是我发现这个程序的工具栏已经应用了一个类,来显示真彩色的图片显示了,所以我就不知道这么改工具栏的背景颜色了,所以我想是不是改变整个框架的背景颜色就可以达到我的要求,请各位给我点意见或建议,非常感谢!
联系方式
QQ:22421469
各位如果有什么好的相关例子,请发给我看看,谢谢!
OnCtlColor中返回对应hbr
OnEraseBkgnd(CDC* pDC)
在MDI程序中,MDIClient窗口是覆盖整个主框架客户区的,所以直接在OnPaint()中绘制主框架客户区是会被覆盖掉的,什么也看不到,只有灰色的背景。
可以截获MDIClient的WM_PAINT,每当MDIClient要绘制自身时,给MainFrame也发送个WM_PAINT
CMainFrame::PreTranslateMessage(MSG *pMsg)
{
if( (pMsg->m_hwnd == m_hWndMDIClient) && (pMsg->message == WM_PAINT) )
{
PostMessage(WM_PAINT);
}
return CMDIFrameWnd::PreTranslateMessage(pMsg);
}
然后在CMainFrame::OnPaint()中取得MDIClient的dc,::GetDC(m_hWndMDIClient),剩下的事就看你想怎么干了,刷上颜色,BitBlt位图,文本,图形.......
参考:
改变对话框背景颜色后,如何使控件的背景颜色和对话框背景颜色统一?
请看下面代码: 重载画控件的消息。
HBRUSH dlgtest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch (nCtlColor)
{
case CTLCOLOR_BTN://按钮?
case CTLCOLOR_STATIC://我们所需要改画的静态
{
pDC->SetBkMode(TRANSPARENT);
}
case CTLCOLOR_DLG:
{
CBrush* back_brush;
COLORREF color;
color = (COLORREF) GetSysColor(COLOR_BTNFACE);
back_brush = new CBrush(color);
return (HBRUSH) (back_brush->m_hObject);
}
}
return(CFormView::OnCtlColor(pDC, pWnd, nCtlColor));
}
处理对话框的CTRL_COLOR消息