0

我在功能区的同一个面板上有 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”时,甚至从组 individualComputers 中选择了“Computer 1”。如何使每个组合框组相互独立?谢谢。

4

1 回答 1

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

于 2012-04-18T19:36:59.593 回答