c++ - 在 MFC 组合框中设置文本而不将其添加到列表中
问题描述
我有一个 MFC 组合框,特别是从 派生的类型CComboBox
,创建为下拉列表框,无法编辑所选条目,即可选项目的简单列表。
我确实支持不选择任何项目的可能性。我知道我可以调用SetCurSel(-1)
并且组合框的编辑字段将为空,直到用户从下拉列表中选择“正确”项目。但我实际上更喜欢显示某种默认文本,而不仅仅是一个空字段。所以我需要做的是设置编辑字段的文本,而不将该文本添加到项目列表或使项目 user-editable。
我尝试SetWindowText
了组合框,但没有成功。根据评论建议,我还尝试使用GetComboBoxInfo
来获取编辑框(在COMBOBOXINFO::hwndItem
)成员中的句柄并调用SetWindowText
它,但这也不起作用(GetComboBoxInfo
虽然成功)。但我无法想象这是一个特别奇怪的用例,所以也许可以通过其他方式?如果有帮助,组合框实际上是所有者绘制的 ( CBS_OWNERDRAWFIXED
)。
解决方案
当您已经绘制了组合框时,您就会知道
- 如果没有选择任何内容
lpdis->itemID == -1
- 当必须绘制编辑控件部件时,您会收到消息。在这种情况下
lpdis->itemState
已经ODS_COMBOBOXEDIT
设置。
所以你可以画你想要的任何东西。
推荐阅读
- javascript - 如何将日期范围限制为仅 15 天
- jquery - 下拉没有隐藏
- javascript - 如何将此文件导入 VueJS?
- android - 旧设备上的新支持库
- c#-4.0 - 在邮递员的web api c#中将日期格式“2018-09-27T00:00:00”转换为“/日期格式(1468929882237+0530)/”
- php - 在 php 语法中使用 if 和 elseif
- android - 在下一个 activity_main.xml 的 XML 片段中添加一行 XML
- generics - Kotlin 中的泛型问题
- elasticsearch - 使用 td-agent 时,日期未附加到弹性搜索索引名称
- java - JavaFX 应用程序不关闭摆动内容