На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Жутко медленно чистится ListView (DeleteAllItems))
    11 тыс элементов удалются чуть не минуту. Пишу на мфц но компонент это стандартный виндовый, и мфц ничего такого не добавляет (просто шлет мессагу)
    Что делать ?
      Попробуй отправить сообщение WM_SETREDRAW, запретишь перерисовку окна потом сотрешь все элементы и этой же мессагой разрешишь перерисовку.
        Цитата DmitryR, 26.02.02, 11:34:13
        11 тыс элементов удалются чуть не минуту. Пишу на мфц но компонент это стандартный виндовый, и мфц ничего такого не добавляет (просто шлет мессагу)
        Что делать ?

        В принципе, ничего не делать, потому что скорость удаления (11 тыс. элементов ???) упирается в быстродействие Windows. Если я ничего не путаю, то функция DeleteAllItems() в MFC устроена в виде цикла типа while (т.е пока что-то есть его надо удалить [сообщением DeleteItem]). А прохождение 11 ТЫСЯЧ сообщений занимает определенное время. Единственное, что я могу посоветовать, так это избавиться от каркаса MFC для обработки этого сообщения (поскольку обработка 11 ТЫСЯЧ вызовов функции DeleteItem опять-таки занимает какое-то время и писать отправку сообщения функцией ::SendMessage (стандартной, а не MFC-шной) в цикле...
          Что-то вы пургу гоните, товарищи!

          Цитата


          LVM_DELETEALLITEMS


          Removes all items from a list-view control. You can send this message explicitly or by using the ListView_DeleteAllItems macro.

          LVM_DELETEALLITEMS
             wParam = 0;
             lParam = 0;

          Return Values
          Returns TRUE if successful, or FALSE otherwise.

          Remarks
          When a list-view control receives the LVM_DELETEALLITEMS message, it sends the LVN_DELETEALLITEMS notification message to its parent window.

          Requirements
           Windows NT/2000: Requires Windows NT 3.51 or later
           Windows 95/98/Me: Requires Windows 95 or later
           Header: Declared in commctrl.h.

            2 CodeMaster & Dmitry
            Sorry  :o
            Действительно, это одно сообщение... Значит Windows глючат сами по себе.
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0190 ]   [ 15 queries used ]   [ Generated: 18.05.24, 09:37 GMT ]