Параметры функции рассматриваются в следующем списке.
? 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.32LPCTSTR 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__