我在功能区的同一面板上有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_IDCB_GROUP_ID分别引用每个组合框。

10-08 08:54