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

Тут можно читать онлайн Владимир Волков - Программирование для карманных компьютеров - бесплатно ознакомительный отрывок. Жанр: comp-programming. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование для карманных компьютеров
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.11/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Программирование для карманных компьютеров - описание и краткое содержание, автор Владимир Волков, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Эта книга предназначена для того, чтобы читатель смог быстро научиться создавать мощные и эффективные приложения для наладонных компьютеров Pocket PC. Рынок программ для карманных компьютеров сейчас бурно развивается, и именно в этой отрасли программист-одиночка может успешно соперничать с большими корпорациями, которые создают программное обеспечение. Прочитав эту книгу, читатель сможет уверенно и быстро разрабатывать достаточно сложные приложения для Pocket PC. Огромное количество разнообразных примеров позволит быстро совершенствоваться и развиваться, обогащая свой опыт работы.

Книга предназначена для начинающих программистов.

Программирование для карманных компьютеров - читать онлайн бесплатно ознакомительный отрывок

Программирование для карманных компьютеров - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Владимир Волков
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

text2]//тогда расширяется text2

[#elif cnst_ex3//иначе если cnst_ex3 имеет значение true,

text3]//тогда расширяется text3 … и так далее.

[#elif cnst_exN//если не был расширен ни один из предыдущих блоков,

textN]//расширяем текст textN

#endif//и завершаем блок условной компиляции

Теперь нужно проанализировать реальный код, который приведен в листинге 4.31. Листинг 4.31

/* Если имя __NEWRES_H__ не определено, */

#ifndef __NEWRES_H__

/* Определяем это имя и расширяем текст модуля */

#define __NEWRES_H__

[текст модуля]

#endif //__NEWRES_H__

Если имя __NEWRES_H__ уже было определено в какой-то части программы, то повторной вставки модуля в текст не последует. Такой прием используется для предотвращения многократного расширения в тексте программы одного и того же модуля, на который оказалось несколько ссылок директивы #include. Также этот механизм предотвращает ситуацию, когда два модуля оказались взаимно включены друг в друга. Это вполне возможно в сложных программах, где включаемые модули в свою очередь тоже содержат директивы #include.

Директива #undef удаляет объявление имени, сделанное при помощи директивы #define.

Редко используемая директива #line позволяет изменить нумерацию строк и имя файлов, выводимых макросами____ LINE__ и___ FILE__.

Директива #import предназначена для вставки в текущий файл импортированной из соответствующей библиотеки типов информации. Например, директива

#import..\office\office.olb

вставит описание интерфейсов из файла office.olb в текущий файл.

Директива #pragma позволяет вставлять в текст модулей директивы, свойственные только данной платформе или операционной системе. У каждого компилятора для каждой операционной системы свой набор директив #pragma.

Функции

Функции main() и WinMain()

Функции в C++ являются краеугольным камнем всей концепции программирования. Собственно говоря, функции как раз и выполняют всю работу, которую запланировал для своего приложения разработчик. Само выполнение программы, написанной на С++, начинается с вызова специальной функции. Для консольных приложений это будет функция main О, для приложений Windwos – WinMainO. Модуль, в котором определена эта функция, и является основным модулем программы.

У консольного приложения со стандартным ходом выполнения программы все остальные функции вызываются из функции mainO, и когда все определенные в mainO функции вызваны, завершается выполнение основной функции, а вместе с ней завершается и выполнение программы.

У приложения Windows сценарий работы программы выглядит иначе. Управление программой осуществляется не вызовами функций из основной функции WinMainO, а выполнением обработчиков событий. Запущенное приложение работает до тех пор, пока не получит сообщение WM_QUIT, сигнализирующее о том, что приложению следует закончить работу.

Синтаксис объявления функции WinMain приведен ниже.

int WINAPI WinMain(

HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPWSTR lpCmdLine,

int nShowCmd);

Параметры функции рассматриваются в следующем списке.

? hlnstance – уникальный идентификатор запускаемого экземляра приложения.

? hPrevInstance – уникальный идентификатор предыдущего запущенного экземпляра приложения. Для Pocket PC этот параметр всегда имеет значение NULL.

? lpCmdLine – строка, представляющая собой копию командной строки, при помощи которой было запущено приложение. При помощи этого параметра разработчик может обрабатывать информацию, переданную из командной строки.

? nShowCmd – целочисленная константа, определяющая, как именно основное окно приложения будет показано после запуска. Ее возможные значения перечислены в табл. 4.5.

Таблица 4.5. Параметры запуска приложения

В качестве возвращаемого значения функция WinMainO возвращает целочисленную константу, переданную ей как wParam сообщения WM_QUIT.

Объявление и реализация функций

В стандарте C++ для того, чтобы объявить и реализовать функцию, необходимо разместить как объявление функции, так и реализацию. Реализация и прототип отличаются друг от друга только наличием тела функции, другими словами, реализация – это прототип с телом функции.

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

Упражнение 4.7 (продолжение)

5. В файл advance.срр необходимо внести некоторые изменения. Так, в коде функции WndProc, в блоке обработки сообщения IDM_HELP_ABOUT нужно закрыть комментариями имеющийся код, и добавить одну строку.

MessageBox(hWnd, MyFunk1(), TEXT("MAMA "), 0);

Этот код выводит на экран сообщение, текст которого будет получен как возвращаемое значение функции MyFunkK).

6. Сразу после функции WndProc объявить и определить функцию MyFunkl, как показано в листинге 4.32.

Листинг 4.32

LPCTSTR MyFunk1(){

return (LPCTSTR)TEXT(«MUMU»);

}

7. Запустить программу на выполнение. Вместо этого будет отображено сообщение об ошибке, указывающее, что идентификатор MyFunkl неизвестен. Это позволяет убедиться, что несмотря на достаточную свободу объявления имени функции, это имя все-таки должно быть объявлено раньше, чем оно будет использовано. Поэтому можно либо перенести набранный код функции и поместить его перед WndProc, а можно оставить код на месте и перед WndProc поместить только прототип функции:

LPCTSTR MyFunk1();

8. После установки прототипа перед вызовом функции MyFunkl компиляция будет проходить нормально. Проект будет запущен, и при выполнении команды меню Tools ? About на экран будет выведено сообщение MUMU.

9. Теперь нужно усложнить пример, чтобы показать, как происходит объявление и вызов функции из другого модуля. Для этого нужно добавить к проекту еще один файл исходного кода (File ? New ? Files ? C++ Source File) с именем modl.cpp. Помимо него потребуется еще один заголовочный файл (File ? New ? Files ? С\С++ Header File) с именем modl.h.

10. В файле modl.h нужно объявить новую функцию, как это показано в листинге 4.33.

Листинг 4.33

#ifndef __MOD1_H__

#define __MOD1_H__

LPCTSTR MyFunk2(int x, LPCTSTR y);

#endif //__MOD1_H__

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

11. В файле modl.cpp написать реализацию этой функции, как это показано в листинге 4.34.

Листинг 4.34

#include «stdafx.h»

#include «mod1.h»

#include

wchar_t strA[512];

wchar_t strB[5];

wchar_t *str1 = strA;

wchar_t *str2 = strB;

LPCTSTR MyFunk2(int x, LPCTSTR y){

str2 = wcscpy(str2, y);

for (int i = 0; i

wcscat(str1, str2);

wcscat(str1, TEXT(" "));

}

return LPCTSTR(str1);

};

12. Чтобы данную функцию можно было вызвать из основного модуля программы advance.срр, в него надо включить ссылку на файл modl.h, сделав это в начале кода, как это показано в листинге 4.35. Листинг 4.35

#include «stdafx.h»

#include «advance.h»

#include «mod1.h»

13. И, наконец, надо вызвать эту функцию. Для этого нужно изменить реализацию функции MyFunkl, как это показано в листинге 4.36. Листинг 4.36

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Владимир Волков читать все книги автора по порядку

Владимир Волков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Программирование для карманных компьютеров, автор: Владимир Волков. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x