答案 0 :(得分:3)
如果你真的需要一个组合框,那么(如@nnspectable所说)你需要做一个自定义绘制控件。基本上,您必须存储一些信息,说明哪些项目被禁用/变灰,并根据它们是否启用来适当地绘制项目。
虽然可能会有一些更简单的方法。这通常使用分割按钮完成。这是具有BS_SPLITBUTTON
样式集的按钮。单击按钮的下拉部分时,会发送BCN_DROPDOWN
通知。
您通常会通过显示菜单来回应,通常使用TrackPopupMenu
将其显示在按钮下方(如果您愿意,可以立即显示在右侧)。这是一个普通菜单,因此您可以根据需要启用,禁用,灰显,使用复选框等项目。
如果你正在使用MFC,它有一个CSplitButton
类来包装分割按钮,稍微简化一下代码 - 你可以在创建{时传递菜单和子菜单的标识符{1}}对象,它从那里处理事物。
示例结果可能看起来很熟悉:
注意:MFC也有一个CSplitButton
类。这具有大致相似的功能,但使用起来有点笨拙。如果内存服务,它与旧版本的Windows兼容(但拆分按钮可以回到Vista,所以除非你真的需要支持XP,否则它很好)。