
Программирование
на языке Си++
1

Модуль 9.
ИСПОЛЬЗОВАНИЕ
Microsoft Developer Studio
Интерфейс Developer Studio (Мастерской разработчика) Создание консольного приложения и приложения Win32 Понятие проекта и просмотр компонентов проекта Виды ресурсов Developer Studio
Формирование визуального графического интерфейса в редакторе ресурсов
2

Модуль 9. ИСПОЛЬЗОВАНИЕ Microsoft Developer Studio
Структура проекта
Структура проекта приложения для платформы Win32
–исходные тексты программы на языке Си++ (папка Source Files) — обычно один или несколько файлов с расширениями *.c, *.cpp;
–заголовочные файлы (папка Header Files) — обычно один или несколько файлов с расширением *.h;
–один или несколько файлов ресурсов (обычно с расширением .rc) (папки Source Files и Resource Files) — диалоги, пиктограммы, меню, строковые таблицы
Виды ресурсов
–пиктограммы — значки для применения в приложении, в том числе значок самого приложения;
–меню — главное меню приложения и контекстные меню окон;
–строковые таблицы — таблицы для хранения строковых литералов, предназначенных для использования в различных ситуациях в приложении
3

Модуль 10.
СТРУКТУРА ПРИЛОЖЕНИЯ Windows
Главная функция Windows-приложения WinMain() Структура приложения Windows
Загрузка стандартных ресурсов Windows
Механизм сообщений Windows, цикл обработки сообщений Функция управления окном приложения Сообщения, посылаемые окну приложения, и их обработка
4

Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
Минимальная структура приложения Win32
Минимальная программа для 32-разрядной платформы
Windows (Win32) состоит из главной функции WinMain() / _tWinMain(), предоставляющей точку входа в приложение Win32, а также оконной процедуры, отвечающей за асинхронную обработку системных сообщений Windows
Оконная процедура не вызывается из главной функции явно. Взамен этого адрес оконной процедуры (точки входа в нее) сохраняется в объекте класса «окно» и передается Windows при регистрации главного окна приложения
5

Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
Функция WinMain: назначение и аргументы (начало)
Точкой входа в GUI-приложение Win32 является функция с предопределенным идентификатором WinMain() — аналог функции main() для MS DOS / *nix, а также консольного режима Win32
–В инструментальной среде Microsoft Visual C++ 2008 главная функция приложения Win32 получает идентификатор _tWinMain()
Назначение функции WinMain
–загрузка глобальных ресурсных строк (например, заголовка главного окна приложения);
–подготовка и регистрация класса главного окна приложения — объекта класса WNDCLASSEX;
–инициализация экземпляра программы, включающая создание и отображение на экране главного окна приложения, а также отправку этому окну первого сообщения WM_PAINT;
–организация главного цикла обработки сообщений
6

Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
Функция WinMain: назначение и аргументы (окончание)
Заголовок функции WinMain()
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
int nCmdShow)
Аргументы функции WinMain()
–HINSTANCE hInstance — описатель экземпляра программы;
–HINSTANCE hPrevInstance — описатель предыдущего экземпляра программы (для обратной совместимости с Windows 3.1; в Win32 имеет нулевое значение);
–LPSTR lpCmdLine — указатель на командную строку запуска;
–int nCmdShow — режим отображения главного окна программы по умолчанию
7

Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
Некоторые типы данных Windows API (начало)
В простейших приложениях Win32 используются следующие нестандартные типы данных:
–ATOM — то же, что WORD (см.);
–BOOL — то же, что int;
–CHAR — то же, что char;
–CONST — то же, что const;
–HANDLE — то же, что PVOID (см.); описатель (экземпляра программы, окна, меню, курсора и пр.);
–HDC — то же, что HANDLE; описатель контекста графического устройства (device context);
–HINSTANCE — то же, что HANDLE (см.);
–HWND — то же, что HANDLE (см.);
–LONG_PTR — для Win32 – то же, что long; для Win64 – то же, что __int64;
–LPARAM — то же, что LONG_PTR (см.);
8
Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
Некоторые типы данных Windows API (продолжение)
–LPCSTR — указатель на неизменяемую строку ANSI-символов с завершающим нулем, то же, что __nullterminated CONST CHAR * (см.);
–LPCTSTR — при использовании Unicode – то же, что LPCWSTR (см.); в иных случаях – то же, что LPCSTR (см.);
–LPCWSTR — указатель на неизменяемую строку Unicode-символов с завершающим нулем, то же, что CONST WCHAR * (см.);
–LPSTR — указатель на строку ANSI-символов с завершающим нулем, то же, что CHAR * (см.);
–LRESULT — то же, что LONG_PTR (см.);
–MSG — структура, содержащая информацию о сообщении из очереди сообщений потока;
–PVOID — то же, что void *;
–TCHAR — при использовании Unicode – то же, что WCHAR (см.); в иных случаях – то же, что CHAR (см.);
–UINT — то же, что unsigned int;
9
Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
Некоторые типы данных Windows API (окончание)
–UINT_PTR — для Win32 – то же, что unsigned int; для Win64 – то же, что unsigned __int64;
–WCHAR — то же, что wchar_t;
–WNDCLASS, WNDCLASSEX — структура с описанием окна приложения
–WORD — то же, что unsigned short;
–WPARAM — то же, что UINT_PTR (см.)
10