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

标签 c++ winapi combobox mfc

我有一个 MFC 组合框,特别是从 CComboBox 派生的类型,创建为下拉列表框没有编辑所选条目的可能性,即一个简单的列表可选择的项目。

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

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

最佳答案

当你已经绘制了组合框时,你就会知道

  1. 如果 lpdis->itemID == -1 则没有选择任何内容
  2. 当必须绘制编辑控件部分时,您会收到消息。在这种情况下,lpdis->itemState 设置了 ODS_COMBOBOXEDIT

所以你可以随心所欲地画画。

关于c++ - 在 MFC 组合框中设置文本而不将其添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50409803/

相关文章:

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - WS_EX_COMPOSITED - 高 CPU

delphi - 如何截断delphi组合框中选定的文本?

mysql - 如何从 ComboBox 返回对象

c++ - 从函数参数推断模板类型

c++ - 将字符串拆分为两个不同的 vector C++

c - 哪里可以下载 dwmapi.lib?

java - 填写 Freemarker 模板上的组合框

c++ - 用于构建 cuda .so 文件(共享库)的 Makefile

c++ - Win32 窗口不显示