Using the Code
In your application, override OnNotify member function in your CMainFrame to handle the WM_NOTIFY message for painting the AfxControlBar.
In MainFrm.h file, declare the following member variable and member function:
class CMainFrame : public CMDIFrameWnd
{
.....
CBrush m_BrushDocBar;
BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
.....
}
In MainFrm.cpp, in constructor create a solid brush as follows:
CMainFrame::CMainFrame()
{
m_BrushDocBar.CreateSolidBrush(RGB(0, 255, 255));
}
In MainFrm.cpp, provide the definition of OnNotify() function as follows:
BOOL CMainFrame::OnNotify(WPARAM wParam,
LPARAM lParam,
LRESULT* pResult)
{
LPNMHDR pnmh = (LPNMHDR) lParam;
if(pnmh->hwndFrom == m_wndToolBar.m_hWnd)
{
LPNMTBCUSTOMDRAW lpNMCustomDraw = (LPNMTBCUSTOMDRAW) lParam;
CRect rect;
CWnd* pWnd = m_wndToolBar.GetParent();
TCHAR szClassName[200];
GetClassName(pWnd->m_hWnd, szClassName, 200);
CString strTemp = szClassName;
if(strTemp.Find(_T("AfxControlBar")) >= 0)
{
SetClassLong(pWnd->m_hWnd,
GCL_HBRBACKGROUND,
(LONG)m_BrushDocBar.GetSafeHandle());
}
}
return CMDIFrameWnd::OnNotify(wParam, lParam, pResult);
}