Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.36.203] |
|
Сообщ.
#1
,
|
|
|
Добрый день. Мне нужно, чтобы пользователь не мог менять значение в строке руками, а только выбирать из списка. Делаю вот так:
BOOL CCfgSettingsDlg::OnInitDialog() { CPropertyPage::OnInitDialog(); // TODO: Add extra initialization here m_cbEnqCfg.AddString("Да"); m_cbEnqCfg.AddString("Нет"); m_cbEnqCfg.SetCurSel(0); m_cbEnqCfg.ModifyStyle(CBS_DROPDOWN | CBS_SIMPLE, CBS_DROPDOWNLIST): return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } То есть стиль устанавливаю в CBS_DROPDOWNLIST, который и отвечает за такое поведение... но почему то руками все равно можно менять текст... И еще вопрос: как поставить высоту выпадающего списка такой, чтобы все элементы были видны, без скроллинга? А ТО У МЕНЯ ЛИШЬ 2 ЭЛ-ТА, А ПРИХОДИТСЯ ПРОКРУЧИВАТЬ... Не нашел в MSDN методов типа SetDropDownHeight... |
Сообщ.
#2
,
|
|
|
Цитата ГостьПроездом @ То есть стиль устанавливаю в CBS_DROPDOWNLIST, который и отвечает за такое поведение... но почему то руками все равно можно менять текст... А ты уверен что стиль установился? Посмотри что возвращает команда. Цитата ГостьПроездом @ И еще вопрос: как поставить высоту выпадающего списка такой, чтобы все элементы были видны, без скроллинга? А ТО У МЕНЯ ЛИШЬ 2 ЭЛ-ТА, А ПРИХОДИТСЯ ПРОКРУЧИВАТЬ... Не нашел в MSDN методов типа SetDropDownHeight... Если ты его создаешь не программно, то просто ручками вытяни нужный размер. Иначе - задай соответствующий параметр. |
Сообщ.
#3
,
|
|
|
Цитата ГостьПроездом @ То есть стиль устанавливаю в CBS_DROPDOWNLIST, который и отвечает за такое поведение... но почему то руками все равно можно менять текст... m_cbEnqCfg.ModifyStyle(CBS_DROPDOWN | CBS_SIMPLE, CBS_DROPDOWNLIST,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); Цитата ГостьПроездом @ И еще вопрос: как поставить высоту выпадающего списка такой, чтобы все элементы были видны, без скроллинга? А ТО У МЕНЯ ЛИШЬ 2 ЭЛ-ТА, А ПРИХОДИТСЯ ПРОКРУЧИВАТЬ... Не нашел в MSDN методов типа SetDropDownHeight... m_cbEnqCfg.SendMessage(CB_SETMINVISIBLE ,100,0); |
Сообщ.
#4
,
|
|
|
Цитата m_cbEnqCfg.ModifyStyle(CBS_DROPDOWN | CBS_SIMPLE, CBS_DROPDOWNLIST,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); Все по-прежнему. Проверял результат: ModifyStyle возвращает истину, то есть все успешно, но поведение то не меняется. Спасите, люди!!! |
Сообщ.
#5
,
|
|
|
Цитата ГостьПроездом @ Все по-прежнему. Проверял результат: ModifyStyle возвращает истину, то есть все успешно, но поведение то не меняется. Спасите, люди!!! поменяй в редакторе ресурсов этот стиль Добавлено type -> DropList должен быть |
Сообщ.
#6
,
|
|
|
Вот теперь -ОК
|