美化工具栏摘计

美化工具栏摘计
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;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值