给工具栏加上背景图片

给工具栏换上背景图片,  工具栏要漂亮很多*_^.

步骤:

1. 声明  
CToolBar    m_wndToolBar;
CBitmap  m_bmpRebar;
CReBar  m_wndReBar;

2. 创建
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
 {
  TRACE0("Failed to create toolbar/n");
  return -1;      // fail to create
 }

 if (!m_wndStatusBar.Create(this) ||
  !m_wndStatusBar.SetIndicators(indicators,
    sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status bar/n");
  return -1;      // fail to create
 }
 // 创建复合栏 
 if (!m_wndReBar.Create(this, RBS_VERTICALGRIPPER , CBRS_ALIGN_TOP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE ) ||
  !m_wndReBar.AddBar(&m_wndToolBar, NULL, NULL, RBBS_FIXEDBMP | RBBS_BREAK | RBBS_NOGRIPPER))
 {
  TRACE0("Failed to create rebar/n");
  return -1;      // fail to create
 } 
 LoadToolbarImage();
 return 0;
}

3. LoadToolbarImage()
 void CMainFrame::LoadToolbarImage()
{
 m_bmpRebar.LoadBitmap(IDB_TOOL_BAR);
  
 CReBarCtrl& rc = m_wndReBar.GetReBarCtrl(); //获取复合条控件指针
 
 REBARBANDINFO info;
 memset(&info, 0, sizeof(REBARBANDINFO)); //清零
 info.cbSize = sizeof(info);
 info.fMask = RBBIM_BACKGROUND; //指定hbmBack有效
 info.hbmBack = HBITMAP(m_bmpRebar) != INVALID_HANDLE_VALUE ? HBITMAP(m_bmpRebar) : NULL;
 
 rc.SetBandInfo(0, &info); //进行设置
 rc.UpdateWindow(); //更新窗口
}

简简单单就完成了, 是不是比起自绘要简洁方便得多呢?

你可能感兴趣的:(null,工具)