Класс Download можно использовать в любой программе, в которой требуется загрузить файл из Интернета. Например, с помощью загрузчика можно Получать недельные биржевые сводки. Если добавить пользовательский интерфейс, его можно использовать как самостоятельную интернет-утилиту. Оставшаяся часть главы посвящена разработке законченного, основанного На GUI-интерфейсе загрузчика файлов WinDL, предназначенного для работы в системе Windows. Приложение WinDL отображает диалоговое окно (рис. 5.1) для ввода URL-ЗДреса файла, загружаемого из Интернета. Окно также содержит индикатор выполнения процесса (progress bar) для отображения состояния процесса за-ГРУзки и переключатель (check box), позволяющий установить режим полной Сгрузки (reload). Три элемента программы представляют интерес. Во-первых, в нее включен жестко запрограммированный URL-адрес. Он указывает на файл, который содержит бесплатный код к другой моей книге: "С++: The Complete Reference, 4th Edition" ("С++: Полное руководство, 4-е издание"). Этот файл служит подходящим тестом для загрузчика. Естественно, вы можете выбрать собственный URL-адрес. Далее, обратите внимание на функцию showprogress о. Указатель на эту функцию передается в параметре update функции downioado. Это значит, что она вызывается каждый раз при загрузке очередного буфера данных, функция showprogress () выводит на экран число, отображающее процент выполненной загрузки. Наконец, важно отметить, что программа dltest принимает один аргумент командной строки. Если значение аргумента — "reload", файл загружается полностью, независимо от того, есть ли он на диске, или нет. Если аргумент отсутствует, файл (или его оставшаяся часть) загружается, только когда на диске есть неполная копия файла. При компиляции файла dltest.cpp не забудьте добавить библиотеку wininet.lib на этапе компоновки. Например, если вы используете компилятор Visual С++ в режиме командной строки, она должна выглядеть следующим образом: cl -GX dl.cpp dltest.cpp wininet.lib Если вы используете IDE (Integrated Development Environment, Интегрированная среда разработки) компилятора, не забудьте добавить wininet.lib для связывания.
|