jjzjj

CComboBox

全部标签

c++ - CComboBox 的自定义下拉列表

我正在尝试为CComboBox的派生物创建自定义下拉列表。下拉列表将是一个日历控件加上一些“热点”,例如所以我认为实现此目的的最佳方法是拥有一个简单的CWnd派生类,它充当日历控件的父类,并让它自己绘制热点。窗口需要是弹出窗口-我认为-而不是子窗口,这样它就不会被剪裁。但是这样做会导致对话框(放置组合框控件的对话框)不再是最顶层(前景?)窗口,从而导致其框架的绘制方式不同:alttexthttp://img693.imageshack.us/img693/3474/35148785.png这破坏了下拉菜单是组合框的一部分的错觉,因为此时它的行为更像是一个模态对话框。关于如何使自定义下拉

c++ - CComboBox 下拉时不选择 CurSel

我在对话框中有一个按字母顺序排序的组合框。这个组合包含多个字符串,但有些字符串在不同情况下是重复的。即我们有一个“开”和一个“开”,一个“关”和一个“关”。这似乎是多余的,但这是有原因的,尽管现在这并不重要。重复项显然在列表中一个接一个出现,大写字符串在前。即:OFFOffONOn当用户选择“On”(小写)时,正确的索引设置为CurSel并显示正确的字符串。但是,当我单击组合框的箭头以下拉列表时,它不会突出显示CurSel,而是突出显示它前面的大写字符串。请参见下图。这是在下拉列表中选择的:这是展开下拉列表时在组合框中选择的内容。我已经捕获了ON_CBN_DROPDOWN消息,并检查了

c++ - 在 CComboBox (MFC) 中通过文本设置选择

我有一个DropList类型的CComboBox(即不可编辑)。通过字符串设置当前选择的最简单方法是什么?我知道我可以使用SetCurSel()按索引设置它,但我希望该函数按字符串搜索列表项并进行设置。 最佳答案 您可以调用FindStringExact()获取要选择的字符串的索引,然后将该索引传递给SetCurSel():yourComboBox.SetCurSel(yourComboBox.FindStringExact(0,yourString));请注意,如果在组合框中找不到该字符串,-1将传递给SetCurSel(),这将

windows - 如何在 CComboBox 控件中正确使用 DDX(数据交换)?

MFC提供了一个名为DDX_CBIndex的函数来获取当前选定的ComboBox项的索引。但在大多数情况下,我对索引不感兴趣,相反我想获得32位应用程序提供的值,这是我在调用GetItemData时获得的。因此,我总是必须覆盖OnOk并使用GetCurSel和GetItemData来检索此值。是否有更优雅的方式来获取/设置CComboBox项目而不取决于索引但取决于应用程序提供的32位值?谢谢! 最佳答案 我有一个部分解决这个问题的方法,但是根据@taspeotis的建议,我写了这个,它似乎工作得很好。templatevoidDDX