Автор: Пользователь скрыл имя, 21 Ноября 2012 в 08:03, курсовая работа
Код программы
; Пример электронного учебника.
; Компилятор PureBasic
Procedure NavigationCallback(Gadget, Url$) ; В этой процедуре перехватываем клики в браузере-навигаторе.
Создание электронной книги в среде PureBasic
Код программы
; Пример электронного учебника.
; Компилятор PureBasic
Procedure NavigationCallback(Gadget, Url$) ; В этой процедуре перехватываем клики в браузере-навигаторе.
If Url$<>""
; Url$=LCase(Url$)
; Возвращает исходную строку, преобразованную в нижний регистр (если это
; возможно).
; Эта функция также поддерживает символы с диакритическим знаками, так что
; если находится большая 'Й',
; она преобразовывается в 'й'
Url$=LCase(Url$)
pos=FindString(Url$,"about",1)
; Синтаксис:
; Position.l = FindString(String.s, StringToFind.s, StartPosition.l)
; Попытаться найти строку 'StringToFind$' внутри данной строки 'String$'
; начиная с данной позиции
; 'StartPosition'. Если строка найдена, возвращается её позиция
; (в виде смещения, начиная с 1).
; Если строка не найдена, возвращается 0.
; about:blank - Показывает пустой HTML документ
If pos>0
Url$=Right(Url$,Len(Url$)-pos-
; Синтаксис Result$ = Right(String$, Length)
; Возвращает последние 'Length' символов с правого края строки.
; Эта функция безопасна для использования даже если для параметра
; 'Length'
; заданы выходящие за границы значения, в этом случае она просто
; возвращает результат, который даёт наилучшее совпадение.
; Синтаксис Length = Len(String$)
; Описание - Возвращает длину строки в символах. Пример:
; a = Len("This is Art") ; a будет равно 11
EndIf
Select Url$ ; Узнаём какую страничку загрузить из памяти в браузер
; Оператор Select можно считать прямым дополнением к "IF".
; Он удобен только если необходимо проверить несколько условий.
Case "ch1.html" ; выбран html-файл под названием ch1.html
SetGadgetItemText(1,#PB_Web_
; Синтаксис SetGadgetItemText(#Gadget, Item, Text$ [, Column])
; Изменяет текст элемента заданного гаджета #Gadget.
; Это универсальная функция, работающая почти со всеми гаджетами,
; которые манипулируют множеством элементов.
;
; Со значением #PB_Web_HtmlCode параметра 'Item' изменяет код html в
; гаджете.
;
; Синтаксис Text$ = PeekS(*MemoryBuffer [, Length [, Flags]])
; Для опытных программистов. Полезна для чтения строки с заданного
; адреса памяти.
; Строка должна заканчиваться нулевым символом, иначе функция будет
; читать память пока не встретит нулевой символ.
; Можно задать необязательный параметр
; 'Length' - длину строки (в символах).
; Если не задан параметр 'Flags', строка читается как уникодная
; если программа скомпилирована в режиме уникода,
; иначе строка читается как ascii.
; С помощью функции PeekS производится загрузка текста из памяти
; (html код это текст).
; Адрес памяти и длина памяти вычисляется с помощью меток перед и
; после оператора IncludeBinary, о чём писалось выше. Для получения
; адреса метки, перед её именем нужно поставить символ ?.
; Для электронного учебника указываются все html страницы для выбора
; отображения
EndSelect
EndIf
ProcedureReturn 0 ; Запрет открытия ссылки браузером
EndProcedure
; Открываем окно
If OpenWindow(0, 0, 0, 1000, 500, "Автоматизированные
системы контроля и управления: Методические
указания к лабораторным работам", #PB_Window_MinimizeGadget|#PB_
; размер и название общего окна
WebGadget(0, 10, 10, 230, 480, "")
; Браузер-навигатор
; размер малого окна
; Синтаксис Result = WebGadget(#Gadget, x, y, Width, Height, URL$ [, Flags])
; Создаёт гаджет Веб-страница (WebGadget) в текущем списке гаджетов.
; Если для параметра '#Gadget' задано значение #PB_Any, в 'Result' возвращается
; номер нового гаджета.
; Значение параметра #Gadget будет возвращаться из функции EventGadget().
; SetGadgetItemText(0,#PB_Web_
; Загрузка из памяти странички навигации, в данном случае загрузка html-файла
; h.html
SetGadgetAttribute(0,#PB_Web_
; Установка процедуры-
; для того, чтобы в большом окне появилась страничка
; Синтаксис SetGadgetAttribute(#Gadget, Attribute, Value)
; Изменяет значение атрибута 'Attribute' для заданного гаджета #Gadget.
; Эта функция работает со всеми гаджетами, поддерживающими атрибуты:
WebGadget(1, 250, 10, 880-140, 480, "")
; Браузер, отображающий выбираемые странички
; размер большого окна
SetGadgetItemText(1,#PB_Web_
; загруска стартового html-файла ch1.html
SetGadgetAttribute(1,#PB_Web_
; для того, чтобы в большом окне появилась страничка
; если необходимо загрузить с ссылки большого окна html-файл в том же окне
HideWindow(0,0) ; Отображение окна
Repeat ; Это главный цикл прогаммы - обработчик событий. Мы отслеживаем только закрытие окна
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
End ; Типа всё, программа завершает работу
; Вот этот код при компиляции загружает файлы в исполняемый файл.
; Доступ к файлам как к памяти получаем с помощью меток
; Здесь разместим ссылки на файлы лекций и лабораторных работ
DataSection
h:
IncludeBinary "h.html"
hEnd:
ch:
IncludeBinary "main.html"
chEnd:
ch1:
IncludeBinary "ch1.html"
ch1End:
EndDataSection
Для создания книги необходимо скопировать код в среду PureBasic (желательно версии 4.60). Использовать текст книги в форме html-файла. Изменить и добавить в коде программы названия html-файлов (см. комментарии кода).
Отображение изображений
В коде прописаны
только единичные файлы html-
<img src=”data:image/gif;base64, <!—Здесь код картинки в формате base 64 --> ”>
Получение из картинки jpg или bmp кода base64 можно с помощью подпрограммы Total Commander. Для этого в одном окне открываем путь, куда сохранить файл кода картинки, а другом окне просто выделяем нужный файл картинки. Далее переходим в панели инструментов «Файлы→Кодировать (MIME, UUE, XXE)». Появилось окошко, в котором прописан каталог, куда надо сохранить код, и формат кодирования. Нас интересует MIME (Base64). Нажимаем «Ок». Видим, что в первом окне появился файл с одноименным названием картинки и расширением .b64. Выделяем этот файл, нажимаем «F3» и копируем только код (ряд символов, неподдающиеся чтению). Далее вставляем их в ссылку в html-файле вместо <!—Здесь код картинки в формате base 64 --> (см. выше).
У этого метода есть небольшой недостаток, связанный с версией IE. В современных компьютерах на Windows 7 с обновлением стоит IE9, что без проблем открывает емкие рисунки. У версии ниже есть ограничение в размере кода картинки в 32Кб. При этом сама картинка занимает размер на 30% меньше, чем код, т.е. максимально допустимый размер картинки составляет порядка 20Кб. Решить эту проблему можно путем сильного сжатия рисунка (уменьшение качества, размера, цветов и т.д.), а так же просто разделение одной картинки на несколько ее составляющих, которые можно соединить в html-коде. Программ редактирования рисунков много. В Photoshop есть специальный web компрессор, с помощью которого можно подобрать оптимальные качество и размер, а также здесь можно легко «разрезать» картинку.
Ниже изображены рисунки, показывающие последовательность действий кодирования рисунка.
Информация о работе Создание электронной книги в среде PureBasic