最近几天一直在研究Visual C++ 2010 rc版,特别是Ribbon的界面设计。也查找了不少资料,但是发现大家对于此的研究和讨论还是不够多,遇到几个问题一直备受困惑,还希望得到高手的指教。
Ribbon的界面设计在MFC中至少可以有三种方法,用XML语言编辑的那个没有研究暂且忽略吧,主要就是用Ribbon Designer,这个和对话框界面设计差不多的,就是打开Ribbon资源,然后往里面拖控件,如category、panel、button等,这样进行设计就行了。添加按钮还好说,添加一个事件处理程序就行了。麻烦的是Ribbon上可以添加Edit编辑框控件,但是却没有添加与控件绑定变量的方法,添加上Edit控件却用不了,这个多少有些尴尬。还请高手指引一个解决方法
还有一种设计方法就是实用代码手工处理了,以前有篇文章说,mfc中的CMainFrame类中有一CMainFrame::InitializeRibbon()函数,但是在VC2010 rc版里我找了半天也没有找到,包括添加消息、重载函数都没有找到这个。最后我在CMainFrame::OnCreate()函数里,通过添加代码实现了对于Ribbon的动态设计,不过这种设计并没有在Ribbon Designer中显示出来,只有在运行程序时才能够看到。通过代码动态设计应该说是解决我的第一个问题的一个方法,可以绑定Edit控件和变量了。
我的最大的问题就是不知道如何添加自定义的控件图标,在Ribbon设计时,有大图标和小图标,分别是large image index和small image index,分别对应着两个bitmap资源。但是系统提供的image collection可选的图标个数太少,设置按钮图标用不了几个就不够了,我现在不知道该如何才能多添加几个图标,通过编辑large image index的bitmap资源是没有效果的。
可能我对于mfc中图标相关操作的知识还不够充分,在此还请大家多多指教~~~谢谢~~~~

解决方案 »

  1.   

    这个,ribbon效果暂时还没用过..net下倒是用过(vs9+bcg.netversion),不过添加的都是button,cat什么的.
      

  2.   

    期待啊2010,听说加入了BOOST库,完善多了!!!
      

  3.   

    在vs2008sp1或者vs2010rc中,你可以通过构建一个ribbon示例程序,里面有详细的代码呀,事实上你要做的工作只是设计图标large icon和small icon二个bmp文件,其他基本上照搬代码就可以了
      

  4.   


    我对两个bmp文件进行研究过了,但是没有出现自动的效果~~~能不能给具体传授点图标设计的知识啊,我在这一块学的不够扎实。
      

  5.   

    获得Ribbon上的框架可以通过CMFCRibbonBar::GetElementsByID等函数获得,这些问题仔细参考下相应类的接口应该都可以解决。我觉得Ribbon本质上都是自定义的窗口而已。
      

  6.   

    在VC2010中,如果要获取Ribbon中的某个控件的指针的话,用GetDlgItem函数行不通,我试了很久都不行,最后查了MSDN,发现,用FindByID(nID)可以搞定。例如,如果要改变Ribbon上的一个按钮(按钮ID为 ID_BUTTON1)上显示的字符,这样就行:CMFCRibbonBaseElement* pElement = m_wndRibbonBar.FindByID(ID_BUTTON1);
    pElement->SetText("123456");其中的m_wndRibbonBar是CMFCRibbonBar定义的对象
    这中方法和非Ribbon界面中的GetDlgItem用法类似,很简单。