<<  < 2014 - >  >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30




最近想使用mfc+ribbon的面板格式,看着好看些,可是遇到的问题层出不穷。首先是对Ribbon的菜单按钮添加好看的图标,百度了一下倒是挺简单的,首先是用制作图标的一个工具IconWorkShop将几个制作好的图标(png格式)做成一个连续的大图标,因为ribbon中需要设置catagory的图标,然后可以根据图标的顺序来选着图标,此方法比较简单,
但是问题就出现了,假如我想增加一个按钮,可是原来的“图标序列”中没有想要的图标怎么办。一个办法就是重新制作一个图标序列然后,将想要的图标添加进去。此法可行,但是在开发过程中想改的东西可是比较多,每次更改都重新制作“图标序列”是比较麻烦的。程序员不禁会问,有没有通过程序更改来实现这些功能呢,答案是有的,整体思路是将按钮图标添加到一个图标(ImageList),然后不同的按钮再去使用不同的图标序列,具体步骤如下。
首先,在MainFram.h中新建一个CImageList的对象m_ImageList,并且定义一个初始化函数void InitRibbon(),程序中会自带一个CMFCRibbonBar的对想m_wndRibbonBar,并且在MainFram.cpp 的OnCreate 中也会初始化m_wndRibbonBar对象。
然后在MainFram.cpp的函数中定义InitRibbon();
void MainFram::InitRibbon()
{
  ////初始化m_ImageList对象
  m_Imagelist.Create(32,32,ILC_COLOR32,2,1);
  ////导入图标
  HICON   hIcon   =   AfxGetApp()-> LoadIcon(IDI_ICON1); 
  //将图标添加到m_ImageList序列
  m_Imagelist.Add(hIcon);
/////获取pannel
  CMFCRibbonPanel* p_hotkey= m_wndRibbonBar.GetCategory(1)-           >AddPanel(_T(""),hIcon);
  //////按列居中
    p_hotkey->SetCenterColumnVert(1);
    //添加新的按钮
   CMFCRibbonButton* p_key1=new CMFCRibbonButton(1,_T("帮      助"),hIcon);//这里的第三个参数用第三部的图片句柄
        p_hotkey->Add(p_key1);///将按钮添加到pannel中
/////// 给按钮添加点击事件
     
}

发表评论:
天涯博客欢迎您!