1 Программирование на языке Си++
Модуль 9. ИСПОЛЬЗОВАНИЕ Microsoft Developer Studio Интерфейс Developer Studio (Мастерской разработчика) Создание консольного приложения и приложения Win32 Понятие проекта и просмотр компонентов проекта Виды ресурсов Developer Studio Формирование визуального графического интерфейса в редакторе ресурсов 2
3 Структура проекта Структура проекта приложения для платформы Win32 –исходные тексты программы на языке Си++ (папка Source Files) обычно один или несколько файлов с расширениями *.c, *.cpp; –заголовочные файлы (папка Header Files) обычно один или несколько файлов с расширением *.h; –один или несколько файлов ресурсов (обычно с расширением.rc) (папки Source Files и Resource Files) диалоги, пиктограммы, меню, строковые таблицы Виды ресурсов –пиктограммы значки для применения в приложении, в том числе значок самого приложения; –меню главное меню приложения и контекстные меню окон; –строковые таблицы таблицы для хранения строковых литералов, предназначенных для использования в различных ситуациях в приложении Модуль 9. ИСПОЛЬЗОВАНИЕ Microsoft Developer Studio
4 Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows Главная функция Windows-приложения WinMain() Структура приложения Windows Загрузка стандартных ресурсов Windows Механизм сообщений Windows, цикл обработки сообщений Функция управления окном приложения Сообщения, посылаемые окну приложения, и их обработка
5 Минимальная структура приложения Win32 Минимальная программа для 32-разрядной платформы Windows (Win32) состоит из главной функции WinMain() / _tWinMain(), предоставляющей точку входа в приложение Win32, а также оконной процедуры, отвечающей за асинхронную обработку системных сообщений Windows Оконная процедура не вызывается из главной функции явно. Взамен этого адрес оконной процедуры (точки входа в нее) сохраняется в объекте класса «окно» и передается Windows при регистрации главного окна приложения Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
6 Функция WinMain: назначение и аргументы (начало) Точкой входа в GUI-приложение Win32 является функция с предопределенным идентификатором WinMain() аналог функции main() для MS DOS / *nix, а также консольного режима Win32 –В инструментальной среде Microsoft Visual C главная функция приложения Win32 получает идентификатор _tWinMain() Назначение функции WinMain –загрузка глобальных ресурсных строк (например, заголовка главного окна приложения); –подготовка и регистрация класса главного окна приложения объекта класса WNDCLASSEX; –инициализация экземпляра программы, включающая создание и отображение на экране главного окна приложения, а также отправку этому окну первого сообщения WM_PAINT; –организация главного цикла обработки сообщений Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
7 Функция 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 режим отображения главного окна программы по умолчанию Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
8 Некоторые типы данных 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 (см.); Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
9 Некоторые типы данных 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; Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
10 Некоторые типы данных Windows API (окончание) –UINT_PTR для Win32 – то же, что unsigned int; для Win64 – то же, что unsigned __int64; –WCHAR то же, что wchar_t; –WNDCLASS, WNDCLASSEX структура с описанием окна приложения –WORD то же, что unsigned short; –WPARAM то же, что UINT_PTR (см.) Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
11 Механизм и очереди сообщений Система Windows обращается к прикладным программам, посылая им сообщения, то есть записывая в доступную для них область памяти определенную информацию. Эта область действует по дисциплине FIFO и называется очередью сообщений программы. Программы также обращаются к Windows посредством сообщений Среди множества видов сообщений особо выделяются те, обработка которых востребована чаще всего: –WM_COMMAND –WM_DESTROY –WM_LBUTTONDOWN –WM_LBUTTONUP –WM_MOUSEMOVE –WM_PAINT –WM_RBUTTONDOWN –WM_RBUTTONUP Модуль 10. СТРУКТУРА ПРИЛОЖЕНИЯ Windows
12 Модуль 11. ГРАФИКА ПОД Windows Контекст устройства Обработка сообщения WM_PAINT Вывод графических образов Битовые образы
13 Список литературы [КР92] Керниган Б., Ритчи Д. Язык программирования Си / Пер. с англ. М.: Финансы и статистика, с. [КР06] Керниган Б., Ритчи Д. Язык программирования C / Пер. с англ. М.: Вильямс, с. [ЛЛ01] Липпман С., Лажойе Ж. Язык программирования C++. Вводный курс. СПб.: Невский диалект, с. [Под03] Подбельский В.В. Язык Си++: Учеб. пособие. 5-е изд. М.: Финансы и статистика, – 560 с., ил. [Под04] Подбельский В.В., Фомин С.С. Программирование на языке Си. – 2-е доп. изд. – М.: Финансы и статистика, – 600 с. [Стр08] Страуструп Б. Язык программирования С++. Специальное издание. СПб.: Невский диалект, с.