Ответ 1
В дизайне макета диалогового окна при разработке диалогового окна нажмите "стрелка вниз" в выпадающем списке. Затем вы можете перетащить нижнюю часть контура combobox, чтобы увеличить его высоту.
Я кодирую приложение в 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 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.
Теперь, когда я создаю приложение и нажимаю стрелку вниз, раскрывающееся поле показывает ТОЛЬКО первый вариант (так как я выбрал это через мой код). Но, если я нажимаю клавишу со стрелкой вниз на клавиатуре, она циклически проходит через параметры в том порядке, в который я вставил, но никогда не показывает более одного параметра в поле. Итак, в случае, если пользователь хочет выбрать опцию3, он должен перебирать варианты 1 и 2! Хотя, как только я выбираю любую опцию с помощью клавиатуры, соответствующие обработчики событий увольняются, меня это раздражает, как это понятно.
Я также перечисляю свойства управления combo-box - только истинные свойства (для остальных установлено значение false):
Это беспокоило меня уже несколько недель. Может ли кто-нибудь просветить меня?
В дизайне макета диалогового окна при разработке диалогового окна нажмите "стрелка вниз" в выпадающем списке. Затем вы можете перетащить нижнюю часть контура combobox, чтобы увеличить его высоту.
Вам нужно увеличить высоту выпадающего списка в конструкторе.
Посредством конструктора по умолчанию вы можете просто изменить размер ширины ComboBox. Если вы хотите изменить размер высоты выпадающего списка, вам нужно щелкнуть стрелку вниз по экрану справа, после чего вы сможете изменить размер сброшенной высоты управления. Это кажется таким простым, но если никто не говорит вам ничего, кроме интуитивного.
Надеюсь, вы поняли мою мысль.
Другой способ установить высоту выпадающего списка со списком - это ручной файл rc. Вы можете установить 5-й параметр, который отвечает за высоту падения (72 в этом примере).
COMBOBOX IDC_COMBOBOX1,17,35,157,72,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
Я также пострадал от этой проблемы, и, наконец, я нашел решение для своих приложений MFC. Проблема в том, что я не применял манифест версии 6 к моим приложениям. Чтобы решить эту проблему, я добавил код, чтобы отметить манифест следующим образом:
ifdef _UNICODE
if defined _M_IX86
pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
elif defined _M_X64
pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
else
pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
endif
endif
Это сработало. Вы можете обратиться к ссылке [здесь] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx) для более подробной информации. Надеюсь, что это поможет.