У меня была эта проблема, и я решил ее двумя способами, в зависимости от # элементов. Настройка «не рисовать» и «инициализировать хранилище» не имела для меня никакого значения. Сделать так, чтобы владелец нарисовал один, также жизнеспособно, но у меня было множество полей со списком. Предполагая фиксированный список для каждого поля со списком, который не меняет содержимое, список устанавливается один раз.
Очень большие # Элементы: Поле со списком сделано простым/отключенным с помощью SetWindowText для установки исходной строки, а маленькая кнопка рядом с ним открывает диалоговое окно, позволяющее выбрать элемент из списка в режиме отчета для данных, которые будут я был в поле со списком (может быть что-нибудь сделать в диалоговом окне).
Умеренное количество элементов: создан собственный производный класс со списком, который переопределяет AddString, SelectString и обрабатывает OnDropDown. Когда вы добавляете элементы, он помещает их во временный вектор, а затем в SelectString (также можно выполнить переопределение SetCurSel) добавляет один элемент, который он находит и выбирает. При выпадании он сбрасывает поле со списком, добавляет все элементы и выбирает выбранный в данный момент. При сбросе выпадающего списка есть небольшое замедление, но при небольшом количестве элементов это не заметно.
Это заставило мои диалоги загружаться намного быстрее и по-прежнему полностью функционировать без рисования владельца.
person
Mary Ellen Bench
schedule
10.11.2017