如何影响COMBOBOX窗口类的定义

时间:2012-03-15 23:58:18

标签: c++ visual-studio-2008 mfc visual-studio-2008-sp1

我有一个CComboBox的子类,它在两个不同的行为方面有所不同 上下文 - 都在本机C ++中。在工作(测试)上下文中创建了顶级应用程序 使用VS2008。在非工作情况下,应用程序要复杂得多 并且最初可能是由早期的VS版本创建的。

在失败的情况下,控件不会显示下拉框,但会响应 上/下箭头键控制。同样在失败的情况下,它总是返回零 使用GetMinVisible查询时始终返回失败 SetMinVisibleItems

问题似乎源于COMBOBOX窗口的定义 类。在这两种情况下,我都转储了从::GetClassInfoEx返回的数据。 除wndProc的地址外,还有两个不同之处。一,工作 case设置了样式CS_GLOBALCLASS,而故障情况则没有。还有 工作案例指定4个字节的额外窗口存储(cbWndExtra) 失败案例指定8个字节。

所以我的问题是:1)哪些配置属性可能会影响定义 COMBOBOX窗口类?,以及2)如果我创建自己的窗口类,如何确定要使用的正确wndProc?

编辑:下拉框的行为随着常规属性选项卡中character set属性的规范而变化。如果character setunicode,则按预期工作,not set时失败。组合框子类在ActiveX控件中,但是应用程序级别的设置似乎会影响窗口类,这会弄乱ActiveX控件中的组合框。有趣的是,在应用程序的其他地方,还有其他组合框,虽然在对话框中,似乎表现得很好。

1 个答案:

答案 0 :(得分:0)

SetMinVisibleItems使用CB_SETMINVISIBLE,它需要comctl32 v6,这是你的线索,这是一个视觉样式问题。

组合框的较旧公共控件版本实际上使用控件高度作为下拉列表的大小,因此如果您调整它,则可以在不添加清单的情况下修复它。

相关问题