Как в окне программы отобразить процесс загрузки

Тема в разделе "WASM.BEGINNERS", создана пользователем assch, 4 окт 2011.

  1. assch

    assch Member

    Публикаций:
    0
    Регистрация:
    17 мар 2011
    Сообщения:
    192
    Например нужно поработать с файлом формата AVI весом полтора гига
    Кидаем его мышкой в окно программы

    Код (Text):
    1. invoke DragQueryFile,wParam,0,addr Buffer,sizeof Buffer
    Получаем хендл файла

    Код (Text):
    1. invoke CreateFile,addr Buffer,GENERIC_READ,0,0,3,80h,0
    2. mov fHandle,eax
    Узнаём размер

    Код (Text):
    1. invoke GetFileSize,fHandle,0
    2. mov dwSize,eax
    Выделяем память этого размера

    Код (Text):
    1. invoke HeapAlloc,hHeap,8,dwSize
    2. mov hBuf,eax
    Считываем файл в эту память

    Код (Text):
    1. invoke ReadFile,fHandle,hBuf,dwSize,addr dwTemp,0
    По времени это примерно займёт секунд 20 или 30

    Кто нибудь в курсе как в окне программы сделать
    какую нибудь индикацию которая бы отображала
    процесс загрузки
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Например, читать из файла порциями, прочитал - отобразил.
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Полтора гига всосать в память единым куском - это сурово. Непрерывного и свободного места таких размеров в адресном пространстве может просто не найтись. Если программа реально предназначена для работы с файлами больше гигабайта, лучше пересмотреть алгоритм, чтобы они обрабатывались по частям.
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Не просто в память. В кучу!
     
  5. assch

    assch Member

    Публикаций:
    0
    Регистрация:
    17 мар 2011
    Сообщения:
    192
    Просто пробую сделать утилитку которая бы резала бы файл AVI на две части
    Не исключено что я иду не правильным путём (буду рад любым советам)
    Алгоритм у меня построен так:
    Если файл полтора гига то соответственно чтобы получить первую часть
    нужно в память загнать первую половину файла (это примерно 700 мегабайт)
    потом из этой памяти загнать данные в первый созданный файл
    Потом анологично выкачать вторую половину файла и загнать данные
    во второй созданный файл
    Поэтому если файл большой то приходится ждать
    Поэтому и хочется сделать хоть какую нибудь визуализацию процесса
    Это конечно не критично просто так полегче проходит ожидание
     
  6. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    http://msdn.microsoft.com/en-us/library/windows/desktop/bb760816%28v=vs.85%29.aspx