我在功能区的同一面板上有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 comboBox中选择“ Group 1”时,甚至从group personalComputers中选择了“ Computer 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
分别引用每个组合框。