Чтение онлайн

на главную

Жанры

Программирование для карманных компьютеров

Волков Владимир

Шрифт:

imLst.Add (App.Path + «\white.bmp»)

imLst.Add (App.Path + «\yellow.bmp»)

imLst.Add (App.Path + «\green.bmp»)

MenuBar1.ImageList = imLst.hImageList

Создание приложения без формы

В некоторых случаях необходимо иметь приложение, которое, запустившись, не выводит на экран форму или вообще не имеет и не создает форм. Создать такое приложение очень просто. Эта технология рассматривается в следующем упражнении.

Упражнение 3.7

1. Создать новый проект. Для этого нужно выполнить команду File ? New Project и в окне мастера создания проектов выбрать тип проекта Windows CE Formless Project.

2. После завершения работы мастера будет открыто окно с кодом, в котором всего три строчки, приведенные в листинге 3.28.

Листинг 3.28

Option Explicit

Sub Main

End Sub

3. Проект нужно сохранить в файле с именем FLess.ebp. После этого нужно

ввести код, показанный в листинге 3.29. Листинг 3.29

Sub Main

MsgBox «Сообщение из проекта без формы», vbOKOnly

End Sub

4. Запустить проект. На экран будет выведено заданное сообщение, а после нажатия кнопки OK приложение завершит свою работу.

5. Подпрограмма Main вызывается при запуске проекта без формы. В теле этой подпрограммы можно писать любой допустимый в eVB код и вызывать любые подпрограммы. К основному модулю проекта можно подключать другие модули. Более того, в проекте без формы могут быть модули, выводящие формы, но вызываемые только тогда, когда это необходимо.

Добавление формы к проекту без формы

6. К проекту нужно добавить новую форму, после чего проект нужно снова сохранить. Код в основном модуле должен соответствовать коду, приведенному в листинге 3.30.

Листинг 3.30

Sub Main

If MsgBox(«Вывести на экран форму?», vbYesNo) = vbYes Then

Form1.Show

Else

App.End

End If

End Sub

7. В код модуля формы добавить подпрограмму, чтобы закрытие формы приводило к завершению работы приложения, как это показано в листинге 3.31. Листинг 3.31

Private Sub Form_OKClick

App.End

End Sub

8. Запустив приложение, можно убедиться, что на экран выводится сообщение. При нажатии кнопки No приложение завершает свою работу, а при нажатии кнопки Yes на экран выводится новая форма.

Вызов из проекта eVB функций CE API

Несмотря на то, что eVB это очень простой язык, он позволяет применять в проектах компоненты ActiveX и вызывать функции из библиотек, написанных на других языках. К библиотекам, из которых eVB может вызывать функции, относятся и системные библиотеки Windows CE, содержащие функции CE API.

Для вызова функций CE API надо объявить функцию при помощи директивы declare и вызвать функцию, передав ей правильные параметры.

В нашем приложении будет использован вызов функции CE API PlaySound в той ветви выбора If, где форма на экран не выводится. Соответствующий код приведен в листинге 3.32.

Сразу после строки Option Explicit из библиотеки Coredll.dll была вызвана функция PlaySoundW, которую потом объявили заново с именем PlaySound. В приложении эту функцию вызывали четыре раза для проигрывания четырех звуковых файлов, входящих в стандартную поставку Pocket PC.

Список функций CE API и назначение передаваемых параметров можно найти в файле справочной системы WCESDKR.CHM, который располагается в подкаталоге \Windows CE Files\Htmlhelp\emtools установочного каталога SDK. Также стоит посмотреть файл WINCEAPI.TXT (подкаталог Windows CE Files\BIN установочного каталога SDK), в котором уже декларированы большинство функций и констант CE API.

Листинг 3.32

Option Explicit

Declare Function PlaySound Lib «Coredll» Alias «PlaySoundW» (ByVal lpszName As String,

ByVal hModule As Long, ByVal dwFlags As Long) As Long

Sub Main

If MsgBox(«Вывести на экран форму?», vbYesNo) = vbYes Then

Form1.Show

Else

PlaySound «Alarm1.wav», 0, 0

PlaySound «Alarm2.wav», 0, 0

PlaySound «Alarm3.wav», 0, 0

PlaySound «Alarm4.wav», 0, 0

App.End

End If

End Sub

Отладка приложений в eVB

Отладка приложений в eVB довольно проста. После нажатия кнопки

режим отладки включается автоматически. В зависимости от того, какое устройство было выбрано в списке Devices, отладка происходит на эмуляторе или на подключенном к настольному компьютеру Pocket PC. Разработчик должен лишь расставить в нужных местах программы точки останова, проследить за правильностью передачи управления, корректностью передаваемых параметров и предсказуемостью изменения значений переменных. В eVB для этого есть все необходимые инструменты.

Упражнение 3.8

1. Изменить код проекта, который был создан в упражнении 3.7, так, как это показано в листинге 3.33.

Листинг 3.33

Sub Main

Dim A, B As Integer

Dim C As Double

If MsgBox(«Вывести на экран форму?», vbYesNo) = vbYes Then

Form1.Show

Else

PlaySound «Alarm1.wav», 0, 0

PlaySound «Alarm2.wav», 0, 0

PlaySound «Alarm3.wav», 0, 0

PlaySound «Alarm4.wav», 0, 0

A = 10

B = 20

C = Mult(A, B)

App.End

End If

End Sub

Function Mult(ByVal One, Two As Integer) As Double

One = One + 5

Two = Two – 3

Mult = (One * 10 + Two * 10) / Add(One, Two)

End Function

Function Add(ByVal my1, my2 As Integer) As Double

Add = Sqr(my1) + Sqr(my2)

End Function

2. В

коде были объявлены переменные A, B и C. Также были объявлены функции Mult и Add, которые вызываются из подпрограммы Main. То, что эти функции очень просты и имеют мало смысла (как и само приложение) сейчас не так уж и важно. Они помогут проиллюстрировать процесс отладки.

3. Когда приложение будет запущено для отладки, то конфигурация среды изменится. Ненужные для отладки окна дизайнеров будут скрыты, а на экран будет выведена панель инструментов отладки (рис. 3.31).

Рис. 3.31. Отладочная панель инструментов.

В следующем списке рассматривается предназначение перечисленных инструментов.

1) продолжить выполнение программы после останова;

2) прервать выполнение приложения;

3) установить точку останова на этой строке кода;

4) пошаговое выполнение с заходом в подпрограммы и функции;

5) пошаговое выполнения без захода в подпрограммы и функции;

6) выход из текущей подпрограммы;

7) вывести на экран окно непосредственного выполнения;

8) вывести на экран окно отслеживания значений переменных;

9) вывести на экран значение помеченной переменной или объекта;

10) вывести на экран окно стека вызовов.

4. Прежде всего для отладки нужно установить точки останова. Чтобы поставить точку останова, необходимо щелкнуть правой кнопкой мыши слева от строки кода на левом поле редактора кода (рис. 3.32).

Рис. 3.32. Установка контекстного меню.

В контекстном меню надо выполнить команду Toggle ? Breakpoint. В этом же меню можно выбрать, при каких типах исключительных ситуаций будет происходить автоматическая остановка выполнения приложения. Также можно щелкнуть на инструменте (3) из панели инструментов отладки или произвести двойной щелчок левой клавишей мыши на левом поле напротив строки кода.

О том, что точка останова установлена, можно судить по появлению точки красного цвета на левом поле и красной подсветки строки, на которой установлена точка останова.

На левом поле может появляться не только точка, но и стрелка. Цвет подсветки строки и стрелки может быть желтым (это показывает текущее место выполнения программы в пошаговом режиме) или зеленым (это показывает место входа в подпрограмму или в функцию).

5. Установить точку останова на строку кода А = 10. После того как необходимые точки останова будут расставлены, можно приступить к процессу отладки. Щелкнув на кнопке со стрелкой на панели инструментов или нажав клавишу F5, нужно запустить приложение в режиме отладки. Когда выполнение приложения дойдет до того места, где была установлена точка останова, программа остановится, в точке останова появится стрелка желтого цвета, а строка кода будет подсвечена желтым цветом. Пошаговое выполнение без входа в подпрограммы удобнее всего выполнять нажатием сочетания клавиш Shift+F8, а если нужно продолжать отладку и в подпрограммах – нажатием клавиши F8. Стоит проделать оба варианта трассировки, чтобы увидеть, как в подпрограммы передается управление.

6. Если первая по важности задача отладки – проследить логику передачи выполнения в коде, то вторая – отследить значение переменных. Существует несколько способов узнать значение переменной или состояние объекта во время пошагового выполнения. Проще всего использовать инструмент Watch Window. Для этого надо выполнить команду View ? Watch Window, которая выведет на экран окно отслеживания значений переменных Watches, а затем добавить в это окно необходимые переменные. Для добавления переменной к списку Watches, нужно выделить эту переменную объекта в окне редактора кода и выполнить команду контекстного меню Add Watch. На экран будет выведено окно добавления переменной (рис. 3.33).

Рис. 3.33. Окно добавления переменной к списку Watches.

ВНИМАНИЕ! Если к списку Watches добавляется переменная, которая является свойством объекта, то нужно указывать полное имя переменной с префиксом имени объекта, например, Form1.Color. Кроме переменных в окно Watches можно добавлять вычисляемые выражения. В окне мониторинга будет показано вычисленное значение этого выражения.

На рис. 3.34 показано окно Watches во время пошагового выполнения проекта.

Рис. 3.34. Активное окно Watches.

Поделиться:
Популярные книги

Магия чистых душ 2

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.56
рейтинг книги
Магия чистых душ 2

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Адепт: Обучение. Каникулы [СИ]

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.15
рейтинг книги
Адепт: Обучение. Каникулы [СИ]

Газлайтер. Том 4

Володин Григорий
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 4

Провинциал. Книга 7

Лопарев Игорь Викторович
7. Провинциал
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Провинциал. Книга 7

Назад в СССР 5

Дамиров Рафаэль
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Назад в СССР 5

Темный Лекарь 3

Токсик Саша
3. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 3

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Долг

Кораблев Родион
7. Другая сторона
Фантастика:
боевая фантастика
5.56
рейтинг книги
Долг

Жребий некроманта 2

Решетов Евгений Валерьевич
2. Жребий некроманта
Фантастика:
боевая фантастика
6.87
рейтинг книги
Жребий некроманта 2

Путь (2 книга - 6 книга)

Игнатов Михаил Павлович
Путь
Фантастика:
фэнтези
6.40
рейтинг книги
Путь (2 книга - 6 книга)

Гром над Империей. Часть 1

Машуков Тимур
5. Гром над миром
Фантастика:
фэнтези
5.20
рейтинг книги
Гром над Империей. Часть 1

Великий род

Сай Ярослав
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Великий род