MFC RIbbon - 同一面板上的多个CMFCRibbonComboBox,响应在任何onComboBox上执行的selectitem动作

时间:2012-04-18 19:20:25

标签: c++ mfc ribbon mfc-feature-pack

我在功能区的同一面板上有2个CMFCRibbonComboBox - 例如:

CMFCRibbonComboBox *individualComputers = 
   new CMFCRibbonComboBox(-1,FALSE, 100, "Individual Computers", -1);

individualComputers->AddItem("Computer 1");
individualComputers->AddItem("Computer 2");
individualComputers->AddItem("Computer 3");
individualComputers->SelectItem(0); 

CMFCRibbonComboBox * groupNames = 
   new CMFCRibbonComboBox (-1, FALSE, 100, "Computer Group Names", -1);

groupNames->AddItem("GROUP 1");
groupNames->AddItem("GROUP 2");
groupNames->AddItem("GROUP 3");
groupNames->SelectItem(0);

CMFCRibbonPanel* pComputerGroups =  cComputerGroups->AddPanel("All Groups"); 
//cComputerGroups is a Category

pComputerGroups->Add(individualComputers);
pComputerGroups->Add(groupNames);

问题在于,当我从UI(USer Interface)中选择groupNames组合框中的“Group 1”时,甚至选择了来自groupsComputers组的“Computer 1”。如何使每个组合框组独立于另一组?感谢。

1 个答案:

答案 0 :(得分:1)

我怀疑你不想将你的组合框添加到自己individualComputers->Add(individualComputers);应该是pComputerGroups->Add(individualComputers);

否则,您的错误可能是您的命令中的其他位置或未显示的updateUI处理代码。这可能是因为您使用相同的ID -1来识别两个组合框。

此外,CMFCRibbonComboBox没有重载的构造函数,它会为groupNames显示另外两个参数。

将来请在SSCCE

后面显示实际代码

编辑:以前未解决的评论粗体,因为它可能是您的剩余问题。考虑使用const UINT CB_COMP_ID = 1;const UINT CB_GROUP_ID = 2;,然后您可以使用邮件地图中的CB_COMP_IDCB_GROUP_ID分别引用每个组合框。