在MFC组合框中设置文本而不将其添加到列表中

问题描述 投票:0回答:3

我有一个 MFC 组合框,特别是从

CComboBox
派生的类型,创建为下拉列表框没有编辑所选条目的可能性,即可选项目的简单列表。

do支持“没有”项目被选择的可能性。我知道我可以只调用 SetCurSel(-1) 并且组合框的编辑字段将为空,直到用户从下拉列表中选择“正确的”项目。但我实际上更愿意显示某种默认文本,而不仅仅是一个空字段。所以我需要做的是

设置编辑字段的文本
而不将该文本添加到项目列表或使项目用户可编辑 我在组合框上尝试了

SetWindowText

,但没有成功。根据评论建议,我还尝试使用

GetComboBoxInfo
获取编辑框(在
COMBOBOXINFO::hwndItem
中)成员的句柄并调用
SetWindowText
,但这也不起作用(
GetComboBoxInfo
成功了) , 尽管)。但我无法想象这是一个特别奇怪的用例,所以也许可以通过其他方式实现?如果有帮助的话,组合框实际上是所有者绘制的(
CBS_OWNERDRAWFIXED
)。
    

c++ winapi combobox mfc
3个回答
2
投票

如果
    lpdis->itemID == -1
  1. ,则未选择任何内容
    
    当需要绘制编辑控制部分时,您会收到消息。在这种情况下,
  2. lpdis->itemState
  3. 已设置
    ODS_COMBOBOXEDIT
    
    
    
  4. 所以你可以画任何你想画的东西。


2
投票
CComboBox

通过

CComboBox::SetCueBanner
成员公开它:

提示文本是显示在组合框控件的输入区域中的提示。提示文本将一直显示,直到用户提供输入。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.