Введение в язык или первая программа
Введение в язык или первая программа
Для того, чтобы понять все инструменты среды 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);
ВНИМАНИЕ! Не забывайте как можно чаще нажимать кнопку Save All в процессе ввода кода. Набирать такой объем кода второй раз после сбоя питания – не самое веселое занятие.
6. В файле MyExp.cpp ввести код, приведенный в листинге 4.2. Листинг 4.2
// Блок 1
#include <windows.h>
#include «MyExp.h»
// Блок 2
const TCHAR szAppName[] = TEXT («MyExp»);
HINSTANCE hInst;
const struct decodeUINT MainMessages[] = {
WM_DESTROY, DoDestroyMain,
WM_CHAR, CharRec,
};
// Блок 3
wchar_t *szStr;
// Блок 4
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow) {
MSG msg;
int rc = 0;
rc = InitApp (hInstance);
if (rc) return rc;
if ((rc = InitInstance (hInstance, lpCmdLine, nCmdShow))!= 0)
return rc;
while (GetMessage (&msg, NULL, 0, 0)) {
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return TermInstance (hInstance, msg.wParam);
}
// Блок 5
int InitApp (HINSTANCE hInstance) {
WNDCLASS wc;
HWND hWnd = FindWindow (szAppName, NULL);
if (hWnd) {
SetForegroundWindow ((HWND)(((DWORD)hWnd) | 0x01));
return -1;
}
wc.style = 0;
wc.lpfnWndProc = MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL,
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
if (RegisterClass (&wc) == 0) return 1;
return 0;
}
// Блок 6
int InitInstance (HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow){
HWND hWnd;
hInst = hInstance;
hWnd = CreateWindow (szAppName,
TEXT(«My Experimental Programm»),
WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if ((!hWnd) || (!IsWindow (hWnd))) return 0x10;
ShowWindow (hWnd, nCmdShow);
UpdateWindow (hWnd);
return 0;
}
// Блок 7
int TermInstance (HINSTANCE hInstance, int nDefRC) {
return nDefRC;
}
// Блок 8
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
INT i;
for (i = 0; i < dim(MainMessages); i++) {
if (wMsg == MainMessages[i].Code)
return (*MainMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
}
return DefWindowProc (hWnd, wMsg, wParam, lParam);
}
// Блок 9
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
PostQuitMessage (0);
return 0;
}
// Блок 10
LRESULT DoCharRecieveMain (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
RECT rectCli;
GetClientRect (hWnd, &rectCli);
ps.rcPaint = rectCli;
InvalidateRect (hWnd, &rectCli, true);
hdc = BeginPaint (hWnd, &ps);
szStr = L" GiGoGa";
DrawText (hdc, (const unsigned short *)szStr, – 1, &rectCli,
DT_CENTER | DT_SINGLELINE);
EndPaint (hWnd, &ps);
return 0;
}
// Блок 11
LRESULT CharRec (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
switch ((TCHAR)wParam){
case 49: { szStr = L" Нажата клавиша 1 на клавиатуре";}
break;
case 50: { szStr = L" А теперь на клавиатуре нажата клавиша 2";}
break;
}
MyPaint (hWnd, wMsg, wParam, lParam);
return 0;
}
// Блок 12
int MyPaint (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
RECT rectCli;
GetClientRect (hWnd, &rectCli);
ps.rcPaint = rectCli;
InvalidateRect (hWnd, &rectCli, true);
hdc = BeginPaint (hWnd, &ps);
DrawText (hdc, (const unsigned short *)szStr, – 1, &rectCli,
DT_LEFT | DT_WORDBREAK);
EndPaint (hWnd, &ps);
return 0;
}7. Да, кода получилось много. Почти все, что делает этот код, в eVB можно было сделать без написания кода вообще. Но в eVC практически каждое действие нужно прописывать при помощи серьезных блоков кода. Если вы пишете консольное приложение, то можно обойтись для начала несколькими строками кода. Но если нужно сделать приложение с оконным интерфейсом Windows – засучите рукава, писать придется много. Код, приведенный в листинге, всего лишь создает приложение Windwos CE с одним окном, которое реагирует на нажатие клавиш клавиатуры. Эта заготовка позволит одновременно на практике «прощупать» язык C++ и получить первые навыки работы со средой eVC. После нажатия кнопки Execute Programm программа будет скомпилирована и запущена. При нажатии цифровых клавиш 1 или 2 на виртуальной или на реальной клавиатуре программа выводит на экран соответствующие сообщения.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Глава 7 Введение в таблицы стилей и язык CSS
Глава 7 Введение в таблицы стилей и язык CSS 7.1. Встраивание CSS в HTML7.2. Синтаксис CSS7.3. Селекторы7.4. Псевдоэлементы и псевдоклассы7.5. Правило @media7.6. Правила!important7.7. Правило @imporВ этой главе вы изучите основы языка CSS. Вы увидите, насколько легко разрабатываются таблицы стилей. Для
ГЛАВА 14. Введение в Web-программирование. Язык JavaScript
ГЛАВА 14. Введение в Web-программирование. Язык JavaScript Web-дизайн состоит из трех частей: содержимого, представления и поведения. Это мы узнали еще в главе 1. Содержимому была посвящена часть I, представлению — часть II. Теперь настала очередь обсудить поведение.Поведение — это
ГЛАВА 14. Введение в Web-программирование. Язык JavaScript
ГЛАВА 14. Введение в Web-программирование. Язык JavaScript Web-дизайн состоит из трех частей: содержимого, представления и поведения. Это мы узнали еще в главе 1. Содержимому была посвящена часть I, представлению — часть II. Теперь настала очередь обсудить поведение.Поведение — это
17.5. Введение в язык SQL
17.5. Введение в язык SQL 17.5.1. Общие понятия Если вы раньше работали с какой-нибудь СУБД (Система Управления Базой Данных), вы смело можете пропустить этот пункт — ничего нового для себя вы не прочитаете. Но если вы сталкиваетесь с СУБД впервые, без основных терминов вам не
23.3. Первая программа на GTK+
23.3. Первая программа на GTK+ 23.3.1. Виджиты Перед написанием самой простой GTK-программы нужно разобраться с терминологией GTK. Элементы графического интерфейса пользователя — окна, кнопки, поля ввода, переключатели и тому подобное — называются виджитами.Основным элементом
Часть первая Язык программирования Pascal
Часть первая Язык программирования Pascal 1. Структура программы на языке Pascal В программе на Pascal выделяют следующие основные разделы: заголовок программы, описания, операторы. Разделы отделяются друг от друга точкой с запятой. В конце программы ставится точка. Каждый
Ваша первая программа на Bash
Ваша первая программа на Bash Нашей первой программой будет классическая «Hello World». Конечно, если уже вы программировали раньше, вы должно быть устали от таких примеров. Однако это — традиция и кто я такой, чтобы менять ее? Программа «Hello World» просто выводит слова «Hello World» на
Первая попытка
Первая попытка Существует несколько способов упорядочения слов по алфавиту. Зайдите в книжный магазин и посмотрите, как расставлены книги на полках. Предшествует ли имя1 См. статью Александреску A. (Andrei Alexandrescu) в майском номере «С++ Report» за 2000 г. [19].Mary McCarthy имени Bernard Malamud или
2. Введение в язык Си
2. Введение в язык Си СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ, ОПИСАНИЕ ПЕРЕМЕННЫХ, ИСПОЛЬЗОВАНИЕ КОММЕНТАРИЕВ, ЧИТАЕМОСТЬ ПРОГРАММ,
Урок 3. Ваша первая программа на ActionScript
Урок 3. Ваша первая программа на ActionScript Первая команда, которую вы изучите, – trace, которая предназначена для передачи информации в окно Flash Output. Окно Output представляет собой небольшое текстовое окно, выводимое на экран во время предварительного просмотра ролика во Flash.
Часть Первая
Часть Первая «Как же это, как же так? Я была одна, А теперь во мне живет ОН или ОНА...» Песня Тересы («Звезда и смерть Хоакина Мурьеты») Вот и случилось… Не было у дядьки печали, так черти накачали! Как и планировал – поселил в своем доме HP iPaq hx4700, но чтобы это сожительство
Программа Nero Express Лучшая программа для записи дисков
Программа Nero Express Лучшая программа для записи дисков Записывать диски средствами Windows неинтересно. Во-первых, скучно, а во-вторых, вам недоступны какие-либо настройки записи, вы даже не можете указать скорость, не говоря уже о выборе формата диска, методе записи. Вот
Глава первая
Глава первая Быть может, именно мы сможем изменить этот мир, и поменять систему ценностей (с) Изя Питерский (из размышления о несовершенстве человеческой морали и излишнем влиянии денег) Вот, новый поворот… (с) Макаревич Лес. Очень много леса. Сплошное зеленое покрывало
3. Введение в язык Pascal
3. Введение в язык Pascal Основные символы языка – буквы, цифры и специальные символы – составляют его алфавит. Язык Pascal включает следующий набор основных символов:1) 26 латинских строчных и 26 латинских прописных букв:2) _ (знак подчеркивания);3) 10 цифр: 0 1 2 3 4 5 6 7 8 9;4) знаки