Установить текст в поле со списком MFC, не добавляя его в список - PullRequest
0 голосов
/ 18 мая 2018

У меня есть комбинированное окно MFC, в частности тип, полученный из CComboBox, созданный в виде выпадающего списка без , возможность редактировать выбранную запись, то есть простой список выбираемых элементов.

I do поддерживает возможность none выбранных элементов.Я знаю, что могу просто позвонить SetCurSel(-1), и поле редактирования поля со списком будет пустым, пока пользователь не выберет «правильный» элемент из выпадающего списка.Но я бы предпочел показывать какой-то текст по умолчанию вместо пустого поля.Поэтому мне нужно установить текст поля редактирования без добавления этого текста в список элементов или сделать элемент доступным для редактирования пользователем .

Я пытался SetWindowText на поле со списком, без успеха.Основываясь на предложении комментария, я также пытался использовать GetComboBoxInfo, чтобы получить дескриптор для поля ввода (в элементе COMBOBOXINFO::hwndItem) и вызывать SetWindowText, но это тоже не сработало (GetComboBoxInfo было успешно, хоть).Но я не могу себе представить, что это особенно странный вариант использования, так что, возможно, это возможно другими способами?Если это помогает, поле со списком фактически извлекается владельцем (CBS_OWNERDRAWFIXED).

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Элемент управления combo box имеет встроенную поддержку баннеров-подсказок.CComboBox MFC предоставляет его через CComboBox :: SetCueBanner member:

Текст подсказки - это приглашение, отображаемое в области ввода элемента управления поля со списком.Текст метки отображается до тех пор, пока пользователь не введет данные.

0 голосов
/ 18 мая 2018

Когда вы уже рисуете комбинированный список, чем вы знаете, что

  1. Ничего не выбрано, если lpdis->itemID == -1
  2. Вы получаете сообщение, когда должна быть нарисована часть управления редактированием,В этом случае lpdis->itemState имеет ODS_COMBOBOXEDIT.

Таким образом, вы можете рисовать все, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...