C++ 在MFC组合框中设置文本,而不将其添加到列表中
我有一个MFC组合框,特别是从C++ 在MFC组合框中设置文本,而不将其添加到列表中,c++,winapi,combobox,mfc,C++,Winapi,Combobox,Mfc,我有一个MFC组合框,特别是从cmbobox派生的类型,创建为下拉列表框,不可能编辑所选条目,即可选择项的简单列表 我确实支持不选择任何项目的可能性。我知道我可以直接调用SetCurSel(-1),组合框的编辑字段将为空,直到用户从下拉列表中选择“正确”的项目。但我实际上更喜欢显示某种默认文本,而不仅仅是一个空字段。因此,我需要做的是设置编辑字段的文本,而不将该文本添加到项目列表或使项目用户可编辑 我在组合框上尝试了SetWindowText,但没有成功。根据一条评论建议,我还尝试使用GetCo
cmbobox
派生的类型,创建为下拉列表框,不可能编辑所选条目,即可选择项的简单列表
我确实支持不选择任何项目的可能性。我知道我可以直接调用SetCurSel(-1)
,组合框的编辑字段将为空,直到用户从下拉列表中选择“正确”的项目。但我实际上更喜欢显示某种默认文本,而不仅仅是一个空字段。因此,我需要做的是设置编辑字段的文本,而不将该文本添加到项目列表或使项目用户可编辑
我在组合框上尝试了
SetWindowText
,但没有成功。根据一条评论建议,我还尝试使用GetComboBoxInfo
获取编辑框的句柄(在COMBOBOXINFO::hwnItem
中)成员并调用SetWindowText
,但这也不起作用(getcomboxinfo
成功)。但我无法想象这是一个特别奇怪的用例,所以也许可以通过其他方式实现?如果有帮助,组合框实际上是ownerdrawn(CBS\u OWNERDRAWFIXED
)。当您已经绘制组合框时,您会知道
lpdis->itemID==-1
lpdis->itemState
设置了ODS\u COMBOBOXEDIT
因此,您可以绘制任何您想要的内容。当您已经绘制组合框时,您就会知道这一点
lpdis->itemID==-1
lpdis->itemState
设置了ODS\u COMBOBOXEDIT
因此,您可以根据需要绘制任何内容。组合框控件内置了对提示横幅的支持。MFC的
CComboBox
通过成员将其公开:
提示文本是显示在组合框控件的输入区域中的提示。提示文本将一直显示,直到用户提供输入
组合框控件内置了对提示横幅的支持。MFC的
CComboBox
通过成员将其公开:
提示文本是显示在组合框控件的输入区域中的提示。提示文本将一直显示,直到用户提供输入
您是否尝试呼叫,然后在call
SetWindowText
中使用?@RbMm感谢您的建议。但我只是试了一下,似乎不起作用。可能是因为它是ownerdraw?IIRC(可能我没有),编辑框作为itemID-1传递给WM_DRAWITEM
。不管怎样,在上面设置一个断点并检查。您是否尝试调用,然后在callSetWindowText
中使用?@RbMm感谢您的建议。但我只是试了一下,似乎不起作用。可能是因为它是ownerdraw?IIRC(可能我没有),编辑框作为itemID-1传递给WM_DRAWITEM
。不管怎样,在上面放一个断点并检查。