Cchecklistbox сортирует автоматически
Я пытаюсь динамически создать CCheckListBox в C++ MFC, но по какой-то причине он автоматически сортирует записи в алфавитном порядке, что влияет на последующий код. Код, используемый для его создания, таков::
m_List = new(CCheckListBox); m_List->Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | WS_CHILD | BS_CHECKBOX | WS_VISIBLE , CRect(20, 20, 180, 180), this, 1248);
и следующая функция добавляет строки в checklistbox из CEdit.
void CCheckListBoxDlg::addEntry() { CString strTemp; m_Entry->GetWindowTextW(strTemp); m_List->AddString(strTemp); }
Обратите внимание, что это не имеет свойств LBS_SORT или LBS_STANDARD, но все равно сортируется. Тот же код использует CListBox (от которого наследуется CCheckListBox) без этой проблемы.
Что я уже пробовал:
Я воссоздал это из пустого приложения MFC, чтобы подтвердить, что ничто другое в коде не отвечает за это, и что CCheckListBox сортирует в точке входа.
РЕДАКТИРОВАТЬ: Ссылка на GitHub. Содержит форму с CCheckListBox, CEdit и CButton, которая добавляет содержимое CEdit в CCheckListBox.
Я также пытался использовать ModifyStyle/Ex для удаления свойства LBS_SORT, которого у него не должно быть, но это не имеет никакого эффекта.
Shao Voon Wong
Можете ли вы загрузить свое пустое приложение MFC (которое воспроизводит проблему) на GitHub, и мы посмотрим.
Spam78
https://github.com/SPG78/CCheckBoxList/tree/main/CheckListBox
Rick York
Вопрос для вас : правильно ли CCheckListBox визуализирует себя для вас? В течение многих лет он никогда не будет для меня, и это было достаточно раздражающе, что я полностью отказался от его использования некоторое время назад. Я пишу пользовательский, изменяемый размер диалог с производным CListCtrl, который включает в себя флажки, и это работает гораздо лучше для меня.
Spam78
Кажется, это прекрасно работает для меня. Я не играл со шрифтами или чем-то подобным, но стиль по умолчанию отображается правильно.