CComboBox клас забезпечує функціональність Windows поле зі списком.
Поле зі списком складається в поєднанні з статичний елемент керування або редагування списку. Список із частину елемент керування може відображатися в усі часи або може тільки падіння вниз, коли користувач вибирає на стрілку розкривного списку поруч з елементом керування.
Наразі виділеного елемента (якщо є) в полі списку відображається в статичного або редагувати елемент керування. Крім того, якщо поле зі списком має стиль списку, користувач може ввести початковий символ одного з елементів у списку та списку, якщо його відображено, буде виділити наступний елемент з початковий символ.
У наступній таблиці порівнюються три списком стилів.
Стиль
Коли відображається список?
Статичний або редагувати елемент керування?
Простий
Завжди
Редагувати
Розкривний
Коли впали вниз
Редагувати
Розкривний список
Коли впали вниз
Статичний
Можна створити об'єкт CComboBox будь-якому діалоговому шаблон або безпосередньо в коді. В обох випадках перший виклик конструктора CComboBox побудувати об'єкт CComboBox ; потім викликати функцію член Створити для створення елемента керування і додайте його до CComboBox об'єкта.
Якщо ви хочете, щоб впоратися з Windows сповіщення про повідомлення, надіслані на поле зі списком своїх батьків (зазвичай клас, отриманих від CDialog), додати повідомлення карта запис і повідомлення обробника член функції батьківського класу для кожного повідомлення.
Кожен запис повідомлення карта має такий вигляд:
ON_Повідомлення про(код,,memberFxn)
де id задає Ідентифікатор дочірнього вікна елемента керування списком надсилання сповіщень і memberFxn -ім'я батьківського член функції, що ви написали обробляти сповіщення.
Прототип функції батьків виглядає наступним чином:
afx_msgнедійснимиmemberFxn();
Порядок, в якому певні повідомлення буде відправлено не може передбачити. Зокрема, CBN_SELCHANGE повідомлення може виникнути перед або після CBN_CLOSEUP повідомлення.
Потенціал повідомлення карта записи є наступні:
O&N_CBN_CLOSEUPnbsp; (Windows 3.1 і пізніше.) Закрив списку поля зі списком. Це сповіщення про повідомлення не надіслано за списком, який має стиль CBS_SIMPLE.
O&N_CBN_DBLCLKnbsp; Користувач double-clicks рядок у списку поля зі списком. Це сповіщення про повідомлення надсилається лише за списком з CBS_SIMPLE стилю. За списком з CBS_DROPDOWN або CBS_DROPDOWNLIST стилю двічі клацніть не може виникнути тому, що одним клацанням приховання списку.
O&N_CBN_DROPDOWNnbsp; Список із списком ось-ось падіння вниз (бути видимі). Це сповіщення про повідомлення може виникнути тільки для поля зі списком до CBS_DROPDOWN або CBS_DROPDOWNLIST стилю.
O&N_CBN_EDITCHANGEnbsp; Користувач взяв дію, яка може мати змінений текст у редагування керування частини поля зі списком. На відміну від CBN_EDITUPDATE повідомлення повідомлення надсилається після Windows оновлення екрана. Він не надсилається, якщо поле зі списком має стиль CBS_DROPDOWNLIST.
O&N_CBN_EDITUPDATEnbsp; Редагування контроль частину зі списком є відображення інший текст. Це сповіщення про повідомлення надсилається після елемент керування має форматування тексту, але перш ніж він відображає текст. Він не надсилається, якщо поле зі списком має стиль CBS_DROPDOWNLIST.
O&N_CBN_ERRSPACEnbsp; Поле зі списком неможливо виділити достатньо пам'яті для задоволення конкретний запит.
O&N_CBN_SELENDCANCELnbsp; (Windows 3.1 і пізніше.) Вказує вибір користувача має бути скасовано. Користувач клацне елемент і потім натискає іншого вікна або елемент керування, щоб приховати список із поля зі списком. Це сповіщення про повідомлення надсилається до CBN_CLOSEUP сповіщення вказує, що вибір користувача повинно бути проігноровані. Повідомлення про CBN_SELENDCANCEL або CBN_SELENDOK надсилається, навіть якщо повідомлення про CBN_CLOSEUP не надсилаються (як у випадку поле зі списком стилем CBS_SIMPLE »).
O&N_CBN_SELENDOKnbsp; Користувач вибере певний елемент і потім натискає клавішу ENTER або натискання клавіші Стрілка вниз, щоб приховати список із поля зі списком. Це сповіщення про повідомлення надсилається до повідомлення CBN_CLOSEUP , показують, що вибір користувача повинна вважатися дійсним. Повідомлення про CBN_SELENDCANCEL або CBN_SELENDOK надсилається, навіть якщо повідомлення про CBN_CLOSEUP не надсилаються (як у випадку поле зі списком стилем CBS_SIMPLE »).
O&N_CBN_KILLFOCUSnbsp; У полі зі списком втрачає фокус вводу.
O&N_CBN_SELCHANGEnbsp; Вибір у списку поля зі списком збирається змінити з користувача або клацнувши в полі списку або зміни виділення за допомогою клавіш зі стрілками. Під час обробки цього повідомлення, текст у полі зі списком, контроль редагування тільки можуть бути отримані через GetLBText або іншої аналогічні функції. GetWindowText не може бути використана.
O&N_CBN_SETFOCUSnbsp; У полі зі списком отримує фокус вводу.
Якщо створюється CComboBox об'єкт у діалоговому вікні (через діалогове вікно ресурсу), CComboBox об'єкт автоматично знищені, коли користувач закриває діалогове вікно.
Якщо вбудувати CComboBox об'єкт у іншому вікні об'єкта, ви не повинні знищити його. Якщо ви створюєте CComboBox об'єкт у стеку, знищити автоматично. Якщо ви створюєте об'єкт CComboBox в купі за допомогою нової функції, ви повинні викликати Видалити на об'єкт, щоб знищити його, коли знищені Windows поле зі списком.