Я кодирую приложение в MSVS 2008, которое имеет элемент управления ComboBox, который я инициализирую через код, как показано ниже:
static char* OptionString[4] = {"Opt1",
"Opt2",
"Opt3",
"Opt4"};
BOOL CMyAppDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_Option.AddString(OptionString[0]);
m_Option.AddString(OptionString[1]);
m_Option.AddString(OptionString[2]);
m_Option.AddString(OptionString[3]);
m_Option.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
}
В приведенном выше коде m_Option
- это переменная Control для ComboBox Control.
Теперь, когда я собираю приложение и нажимаю стрелку вниз, в раскрывающемся списке отображается ТОЛЬКО первый вариант (поскольку я выбрал его через мой код). Но если я нажимаю клавишу со стрелкой вниз на клавиатуре, она циклически перебирает опции в порядке, который я вставил, но никогда не показывает больше 1 опции в поле. Таким образом, в случае, если пользователь хочет выбрать вариант 3, он должен циклически переключаться между вариантами 1 и 2 !! Хотя, когда я выбираю любую опцию с помощью клавиатуры, запускаются соответствующие обработчики событий, меня это раздражает, как это понятно.
Я также перечисляю свойства элемента управления combo-box - только те свойства, которые имеют значение true (остальные имеют значение false):
- Тип - Выпадающий
- Вертикальная полоса прокрутки
- Видимая вкладка
Это беспокоило меня уже несколько недель. Может кто-нибудь, пожалуйста, просветите меня?