Текущее выделение

Текущее выделение является элементом списка, который выбрал пользователь; в поле Выбор комбинированного окна появится выбранный текст. Однако в случае простым списком или раскрывающегося поля со списком, текущий выбор является лишь одной из форм возможного пользовательского ввода в поле со списком. Пользователь может также ввести текст в поле выбора.

Текущее выделение идентифицируется с нуля индекс элемента, выбранного списка. Приложение может задавать и извлекать его в любое время. Родительского окна или диалогового окна поле процедура получает уведомления, когда пользователь изменяет текущее выделение для поля со списком. Поле родительского окна или диалогового окна не уведомлены, когда приложение изменяет выделение.

Когда поле со списком, не выделен текущий. Это относится также к простой или раскрывающемся списком, если пользователь редактировать содержимое поля выбора. Чтобы установить текущий выбор, приложение отправляет сообщение CB_SETCURSEL поле со списком. Приложение может также использовать CB_SELECTSTRING сообщение для задания выбранного элемента списка, строка которого начинается с указанной строки. Чтобы определить текущий выбор, приложение отправляет сообщение CB_GETCURSEL поле со списком. Если не выделен текущий, это сообщение возвращает CB_ERR.

Когда пользователь изменяет текущее выделение, в поле со списком, родительского окна или диалогового окна-процедура получает WM_COMMAND сообщение с сообщение уведомления CBN_SELCHANGE в старшее слово параметра wParam . Это уведомление сообщение не отправляется, когда текущий фрагмент имеет значение с помощью сообщения CB_SETCURSEL.

Раскрывающийся список со списком или раскрывающемся списке отправляет CBN_CLOSEUP родительского окна или диалоговых процедуры при закрытии раскрывающегося списка. Если пользователь изменяет текущее выделение, поле со списком также отправляет уведомление CBN_SELCHANGE при закрытии раскрывающегося списка. Для выполнения определенного процесса каждый раз, когда пользователь выбирает элемент списка, можно обработать сообщение уведомления CBN_SELCHANGE или CBN_CLOSEUP. Как правило будет ждать CBN_CLOSEUP уведомления перед обработкой изменения в текущем выделении. Это может быть особенно важно, если требуется значительное количество обработки.

Приложение также может обрабатывать сообщения уведомления CBN_SELENDOK и CBN_SELENDCANCEL. Система отправляет CBN_SELENDOK, когда пользователь выбирает элемент списка или выбирает элемент и затем закрывает этот список. Это указывает пользователь закончил, и выбор должен быть обработан. CBN_SELENDCANCEL посылается, когда пользователь выбирает элемент, а затем выбирает другой элемент управления, нажимает клавишу escape в то время как раскрывающийся список является открытым, или закрытие диалогового окна. Это означает, что от выбора пользователя должны быть проигнорированы. В простой списком CBN_SELENDOK отправляется перед каждое сообщение CBN_SELCHANGE. Если для поля со списком указан стиль окна WS_EX_NOPARENTNOTIFY, система не отправляет сообщения CBN_SELENDOK и CBN_SELENDCANCEL.

В простой списком система посылает сообщение уведомления CBN_DBLCLK при двойном щелчке элемента списка. В раскрывающемся поле со списком или раскрывающемся списке одним щелчком скрывает этот список, поэтому невозможно дважды щелкните элемент.