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

? 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__

Перейти на страницу:

Похожие книги