![]() |
|
|
![]()
|
|
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Такая вот проблемка возникла. Создаю комбобокс, помещаю в него строки. Затем мне нужно его переместить методом MoveWindow, после чего текст в комбобоксе выделяется.
и вот, что, примерно, у меня получается в итоге ![]() может кто-то сталкивался с подобным? как убрать выделение? пробовал снимать выделение сразу после перемещение - всё ужасно мерцает. -------------------- ![]() |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Ты-же сам выделяешь айтем Добавлено через 54 секунды Или попробуй сразу после перемещения снимать фокус с комбобокса -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Andrey44, SetCurSel не выделяет, а устанавливает тест из списка. Фокус снимать пробовал - не помогает, да и нет на нём фокуса.
И, кстати, если MoveWindow убрать, то всё отлично. Это сообщение отредактировал(а) Cheloveck - 24.4.2009, 15:41 -------------------- ![]() |
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
По-моему со стилем DROPDOWN выбранный итем всегда выделен. Попробуй другой стиль (DROPLIST кажется)
|
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Не DROPLIST, а DROPDOWNLIST, но в них разница лишь в том, что второй создаёт ридонли комбобокс, а первый - редактируемый, выделяемость тут не при чём. -------------------- ![]() |
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Да, это так. Я когда-то боролся с этим делом, сейчас поднял свой проект, там я использовал Ownerdraw Fixed комбобокс, выделение появляется только при получении фокуса - меня это устроило. |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Cheloveck, используй не MoveWindow, а ::SetWindowPos с флагом SWP_NOACTIVATE.
Потому-что MoveWindow использует именно ::SetWindowPos но не известно с какими флагами. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Andrey44, не помогло, эффект тот же :-(
-------------------- ![]() |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Cheloveck, у комбобокса есть метод SetEditSel
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Не может быть, чтобы убирание фокуса с комбобокса не убирало выделения. Значит, фокус неправильно убрал. Когда окно в фокусе - обязательно будет выделен элемент. Если у тебя Drop List можно только вместо выделения всего элемента поставить каретку.
-------------------- ... |
|||
|
||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
результат смотри выше. voov, метод SetEditSel это не то. да и не получится у меня снимать выделение после перемещения каждый раз. У меня комбобокс перемещается когда меняется размер формы, поэтому перерисовка очень частая и если снимать каждый раз выделение, то получается жуткая картина. -------------------- ![]() |
||||
|
|||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
а если SetCurSel заменить на SetWindowText?
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вообще-то этот кусок кода ни о чем не говорит. Контекст-то неизвестен. Например, если этот код находится в функции OnInitDialog, и ты возвращаешь TRUE, можешь хоть обставиться фокусами, все равно фокус будет на другом контроле... Или если кнопка OK недоступна, можешь хоть 10 раз на нее фокус ставить. Но это так, к слову. Проверить-то просто. Табом перейди на следующий контрол и посмотри, во-первых, кто это будет, а во-вторых, не исчезнет ли выделение. Далее, если до перемещения комбобокс был не в фокусе, то нужно выяснить, почему на него фокус ставится. Тебе уже предлагали использовать SetWindowPos, и есть сомнения, что сделал это коррекстно. В любом случае, можно словить SetFocus на комбе и посмотреть что в стеке - откуда он приходит-то. А попытки тыкать пальцем в небо и искать какие-то эзотерические рецепты - заведомо бесполезны. -------------------- ... |
|||
|
||||
| Cheloveck |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Тогда я не буду знать какой айтем выбран и программа допишет в файл строку, которая там уже есть.
У меня в этом сомнений нет, я не только сделал, что советовали, но и прочитал MSDN и сделал ещё много вариантов. Ладно буду дебажить. Добавлено через 3 минуты и 10 секунд
В данном случае - да, это OnInitDialog, но это лишь пример, реально этот код находится в обработчике OnSize. Фокус ещё раз повторяю отсутствует на комбобоксе, кнопка доступна и фокус на ней!!! В проекте перекидывал фокус на другие контролы. -------------------- ![]() |
||||||
|
|||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Чего я не понимаю - это как сохраняется выделение при отсутствии фокуса...
Мне на стандарных комбобоксах добиться такого эффекта не удалось... -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |