Skirda wrote:NightRoman, расскажи/покажи на пальцах как ты вызываешь диалог и что ты делаешь между вызовами...
как вызываю
Code: Select all
FarDialogItem* items = new FarDialogItem[_items->Count];
:
_hDlg = Info.DialogInit(..,items,..,FarDialogProc,..)
:
int selected = Info.DialogRun(_hDlg);
:
Info.DialogFree(_hDlg);
Все это в цикле, пока пользователь не ENTER или не ESC. FarDialogProc обрабатывает нажатия клавиш. Если была нажата следующая "буква" в фильтре, закрываем диалог по DM_CLOSE, увеличиваем фильтр на соответствующую букву, идем на начало цикла, все повторяется для абсолютно нового с нуля диалога, но новые "items" уже отфильтрованы по новому.
Почему совет
zg в чистом виде не подойдет? Этот диалог работает как меню, скорей, он содержит только список и размеры его подгоняются под этот список по некоторому алгоритму в зависимости от содержимого списка. Так что одной перефильтрации списка не будет достаточно, надо пересчитать весь диалог целиком. Так и придется, конечно, сделать, если новое поведение легально. А если нелегально и все будет как было, то зачем мудрить, прекрасно все работало.