`
hmi213tv
  • 浏览: 11440 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

美化工具栏摘计

 
阅读更多

美化工具栏摘计
2011年02月06日
  这种感觉就像是。。。。(以下省略1000字)
  关于第三种MSDN没有讲的工具栏创建方法。。能够用来实现工具栏图片的动态改变
  下面是偶写的鹰文:
  Call the CreateEx() function of class CToolBar to create the Windows toolbar and attach it to the CToolBar object
  /*
  m_wndStyleToolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);
  */
  Construct a object of class CImageList and Call the Create() function to initialize;
  /*
  m_imgToobar.Create(32, 32, ILC_COLOR32|ILC_MASK, 0, 0);
  */
  Add bitmap you want to make to button to the list
  use the function of class CToolBar ,GetToolBarCtrl() to get the control of the object construct from CToolBar 
  Use one of the functions of the class CToolBarCtrl named SetImageList to tranfrom bitmaps stored in CImageList to toolbuttons
  /*
  CToolBarCtrl& tbc = m_wndStyleToolbar.GetToolBarCtrl();
  tbc.SetImageList(&m_imgToobar);
  */
  乡亲们,不求看懂但求看过。。。。
  
  下面是有用的代码
  //MainFrm.cpp
  static TCHAR ToolbarStyle[][20] =
  {
  _T("AlienMorph"),
  _T("Gant 风格版"),
  _T("Milk 风格版"),
  _T("PixOS 风格版"),
  _T("Jr_32x32"),
  _T("OS_X_32x32"),
  _T("Smile_d_32x32"),
  _T("XP_32x32")
  };
  static TCHAR BmpName[][20] =
  {
  _T("Add.bmp"),
  _T("Benchmark.bmp"),
  _T("Comment.bmp"),
  _T("Convert.bmp"),
  _T("Delete.bmp"),
  _T("Exit.bmp"),
  _T("Extract.bmp"),
  _T("ExtractTo.bmp"),
  _T("Find.bmp"),
  _T("Info.bmp"),
  _T("Lock.bmp"),
  _T("Print.bmp"),
  _T("Protect.bmp"),
  _T("Repair.bmp"),
  _T("Report.bmp"),
  _T("SFX.bmp"),
  _T("Test.bmp"),
  _T("View.bmp"),
  _T("VirusScan.bmp"),
  _T("Wizard.bmp")
  };
  static TBBUTTON tb[] =
  {
  {  0,  4000, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  1,  4001, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },//改变第二个参数为下拉菜单ID如ID_FILE_OPEN才能给力
  {  2,  4002, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  3,  4003, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  4,  4004, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  5,  4005, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  6,  4006, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  7,  4007, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  8,  4008, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  9,  4009, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  10, 4010, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  11, 4011, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  12, 4012, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  13, 4013, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  14, 4014, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  15, 4015, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  16, 4016, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  17, 4017, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  18, 4018, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
  {  19, 4019, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 }
  };
  int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  {
  if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  return -1;
  if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC|CBRS_BORDER_TOP) ||
  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  {
  TRACE0("未能创建工具栏\n");
  return -1;      // 未能创建
  }
  if (!m_wndStatusBar.Create(this) ||
  !m_wndStatusBar.SetIndicators(indicators,
  sizeof(indicators)/sizeof(UINT)))
  {
  TRACE0("未能创建状态栏\n");
  return -1;      // 未能创建
  }
  // TODO: 如果不需要工具栏可停靠,则删除这三行
  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  EnableDocking(CBRS_ALIGN_ANY);
  DockControlBar(&m_wndToolBar);
  m_wndStyleToolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_TOP
  |CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);
  m_imgToobar.Create(32, 32, ILC_COLOR32|ILC_MASK, 0, 0);
  LoadImageList(m_iIndex);
  SetStyleToolbar();
  m_wndStyleToolbar.SetSizes(CSize(32+7, 32+6), CSize(32, 32));
  m_wndStyleToolbar.EnableDocking(CBRS_ALIGN_ANY);
  DockControlBar(&m_wndStyleToolbar);
  return 0;
  }
  //这是自己下拉菜单选项的消息处理函数,这里只写一个
  void CMainFrame::OnAlienmorph()
  {
  // TODO: 在此添加命令处理程序代码
  if(m_iIndex != 0)
  {
  m_iIndex = 0;
  LoadImageList(m_iIndex);
  SetStyleToolbar();
  }
  }
  //下面是主要函数,只可意会不可言传,嘿嘿
  BOOL CMainFrame::LoadImageList(int iIndex)
  {
  int   iTotal    = sizeof(BmpName) / sizeof(BmpName[0]);
  int   i     = 0;
  TCHAR  strPath[MAX_PATH] = { 0 };
  TCHAR  strFull[MAX_PATH] = { 0 };
  HBITMAP  hBitmap    = NULL;
  while(m_imgToobar.Remove(0));
  GetCurrentDirectory(MAX_PATH, strPath);
  StrCat(strPath, _T("\\Themes\\"));
  StrCat(strPath, ToolbarStyle[iIndex]);
  StrCat(strPath, _T("\\Toolbar\\"));
  for(i=0; ibmp;
  bmp.Attach(hBitmap);
  m_imgToobar.Add(&bmp, RGB(0, 0, 0));
  bmp.DeleteObject();
  }
  return TRUE;
  }
  BOOL CMainFrame::SetStyleToolbar()
  {
  CToolBarCtrl& tbc = m_wndStyleToolbar.GetToolBarCtrl();
  while(tbc.DeleteButton(0));
  tbc.SetImageList(&m_imgToobar);
  int  i   = 0;
  int  iButtons = sizeof(tb) / sizeof(tb[0]);
  for(i=0; i<iButtons; ++i)
  {
  tbc.AddButtons(1, &tb);
  }
  return TRUE;
  }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics