Окно непосредственного выполнения (Immediate Window) – еще один удобный инструмент отладки в eVB. Оно выводится на экран командой меню View ? Immediate Window.
Поскольку Basic является интерпретируемым языком, то после выполнения любой строки кода можно изменить значение любой доступной в контексте выполнения переменной или выполнить любую команду. Для этого надо ввести в окно Immediate соответствующую команду и нажать клавишу Enter, после чего команда будет выполнена. Также можно в этом окне просмотреть значение любой переменной, выполнив команду? <���имя переменной>, например? В. Чтобы посмотреть, как функционирует окно Immediate, нужно снова запустить проект с установленной точкой останова. Когда выполнение программы дойдет до этой точки, следует вывести на экран окно Immediate, ввести в этом окне команду MsgBox «Это сообщение из окна непосредственного выполнения!»,vbOKOnly и нажать клавишу Enter. На экран эмулятора будет выведено соответствующее сообщение.
Еще один инструмент отладки – окно стека вызовов подпрограмм. Установив точку останова в теле подпрограммы или функции, в этом окне можно увидеть последовательность вызовов, которая привела программу в эту точку (рис. 3.37).
Рис. 3.37. Окно стека вызовов в точке останова.
Глава 4 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual C++ 3.0
По сравнению с eVB язык C++, безусловно, предоставляет разработчику больше возможностей. Несмотря на то что в eVB можно было сделать почти все, что можно сделать в eVC (так в этой главе будет называться eMbedded Visual C++ 3.0), широта возможностей eVB практически полностью опирается на компоненты и библиотеки, написанные на C++.
Одно из главных преимуществ eVC состоит в том, что он создает исполняемые файлы, непосредственно выполняемые процессором, а не промежуточный интерпретируемый код. Однако кроме преимуществ, у eVC есть и отдельные недостатки. Для тех, кто пришел в eVC из eVB или Delphi, программирование на этом языке на первых порах покажется ужасным. Громоздкие конструкции и необходимость все прописывать вручную в коде могут обескуражить начинающего программиста. Но за все надо платить. Если вы хотите получить программу маленького размера и доступ к любой возможности устройства, то придется привыкать к сложностям многострочного кода и тяжеловесным конструкциям, дающим в награду контроль за каждым байтом вашего кода.
Эта глава будет достаточно обширной. В ней мы рассмотрим язык и среду eVC, что послужит фундаментом для следующей главы, в которой мы сможем сосредоточиться только на особенностях среды eVC++ 4.0 для Pocket PC 2003.
Введение в язык или первая программа
Для того, чтобы понять все инструменты среды eVC, необходимо знать язык С++. Но для того чтобы узнать С++, необходимо на нем хоть что-то написать, а для этого надо понимать, как работает среда. Поэтому сначала мы приведем пример создания первой программы, которая просто выведет на форму текст, затем кратко рассмотрим основы языка С++, и только после этого можно будет приступить к подробному изучению среды eVC. Такой порядок работы нам кажется самым оптимальным.
Упражнение 4.1
1. Запустить среду eVC и выполнить команду меню File ? New. На экран будет выведено окно New. В этом окне следует активировать вкладку Projects и на этой вкладке выбрать пиктограмму WCE Pocket PC 2002 Application. В поле ввода Project Name следует указать имя нового проекта MyExp. После этого нужно нажать кнопку OK.
2. В следующем окне мастера создания проекта нужно выбрать пиктограмму An Empty Project и нажать кнопку Finish.
3. Снова выполнить команду File ? New. В активированном диалоговом окне нужно перейти на вкладку Files и в списке выбрать C++ Source File. Затем нужно взвести флажок Add To Project и указать имя файла MyExp.
4. И еще раз выполнить команду File ? New. В диалоговом окне, которое будет выведено на экран, перейти на вкладку Files и выбрать элемент C/С++ Header File. Взвести флажок Add To Project и указать имя файла MyExp. Эти действия привели к созданию наиболее простой структуры проекта в eVC. Теперь нужно заполнить эту структуру кодом.
5. В файле MyExp.h ввести код, приведенный в листинге 4.1.
Листинг 4.1
// Блок 1
#define dim(x) (sizeof(x) / sizeof(x[0]))
// Блок 2
struct decodeUINT {
UINT Code;
LRESULT (*Fxn)(HWND, UINT, WPARAM, LPARAM);
};
// Блок 3
struct decodeCMD {
UINT Code;
LRESULT (*Fxn)(HWND, WORD, HWND, WORD);
};
// Блок 4
int InitApp (HINSTANCE);
int InitInstance (HINSTANCE, LPWSTR, int);
int TermInstance (HINSTANCE, int);
int MyPaint (HWND, UINT, WPARAM, LPARAM);
// Блок 5
LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM);
// Блок 6
LRESULT DoDestroyMain (HWND, UINT, WPARAM, LPARAM);
LRESULT CharRec (HWND, UINT, WPARAM, LPARAM);
Читать дальше
Конец ознакомительного отрывка
Купить книгу