我在功能区的同一面板上有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”。如何使每个组合框组独立于另一组?感谢。
答案 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_ID
或CB_GROUP_ID
分别引用每个组合框。