Win32 api программирование
Скачать 0.78 Mb.
|
Типы данных Win32 Типы данных Windows определены посредством директив #define и typedef в заголовочных файлах Win32, например: #define WINAPI __stdcall, #define CALLBACK __stdcall, #define APIENTRY WINAPI, typedef UINT WPARAM, typedef LONG LPARAM, typedef LONG LRESULT, typedef WORD ATOM. В Win32 все указатели являются ближними, хотя и занимают четыре байта (32-разрядное целое число без знака). Наиболее часто встречающиеся типы данных: BOOL – int (32 бита); BYTE – unsigned char (8 бит); CHAR – char (8 бит); COLORREF – unsigneg long (32 бита); DWORD – unsigned long (32 бита); DOUBLE – вещественное число (double – 64 бита) FLOAT – вещественное число (float – 32 бита) HANDLE – дескриптор объекта (указатель на переменную любого типа – 32 бита); HBITMAP – дескриптор растрового изображения (указатель – 32 бита); HBRUSH – дескриптор кисти (указатель – 32 бита); HCURSOR – дескриптор курсора (указатель – 32 бита); HDC – дескриптор контекста устройства (указатель – 32 бита); HICON – дескриптор пиктограммы (указатель – 32 бита); HFONT – дескриптор шрифта (указатель – 32 бита); HINSTANCE – дескриптор экземпляра приложения (указатель – 32 бита); HMENU – дескриптор меню (указатель – 32 бита); HPEN – дескриптор пера (указатель – 32 бита); HWND – дескриптор окна (указатель – 32 бита); WORD – unsigned short (16 бит); LONG – signed long (32 бита); INT – signed long (32 бита); LPARAM – 32-разрядное целое число без знака (описатель четвертого па- раметра оконной функции); WPARAM – 32-разрядное целое число без знака (описатель третьего пара- метра оконной функции); LRESULT – 32-разрядный описатель возвращаемых значений типа long; LPCSTR – указатель на константную C-строку; LPCWSTR – указатель на константную Unicode-строку; LPSTR – указатель на C-строку; LPCTSTR –константный указатель на строку символов; 90 SHORT – signed short (16 бит); USHORT – unsigned short (16 бит); UCHAR – unsigned char (8 бит) UINT – unsigned long (32 бита); #If defined(_WIN64) typedef _int64 INT_PTR #else typedef int INT_PTR #endif Венгерская нотация Суть венгерской нотации заключается в том, что имя переменной или функции предваряется одной или несколькими строчными буквами – префиксом, говорящим о типе этой переменной. Само имя может состо- ять как из прописных, так и из строчных букв, но первая буква имени все- гда прописная. Имена, состоящие только из префиксов, принято исполь- зовать для временных или вспомогательных переменных. Имя функции может образовываться объединением глагола и суще- ствительного, например: CreateWindow(), DrawText() или LoadI- con(), но может состоять и только из существительных – DialogBox(). Префиксы для имен переменных, соответствующих указанным ти- пам данных, имеют следующие обозначения: а – массив; b – тип данных BOOL; by – BYTE; ch – char; dw – DWORD; fn – функция; h – дескриптор; i – INT; l – LONG; lp – дальний указатель; lpsz – дальний указатель на строку, заканчивающуюся нулевым байтом; n – unsigned short; p – указатель; psz – указатель на строку, заканчивающуюся нулевым байтом; pv – указатель на тип void; sz – строка, которая заканчивается нулевым байтом; u – UINT; v – void; w – WORD; pt – точка с координатами x и y (два 32-битных целых); rgb – длинное целое, содержащее цветовую комбинацию RGB . 91 Библиографический список 1. Биллинг, В.А., Мусикаев И.Х. Visual C++ 4. Книга для программи- стов. М.: Изд. отдел «Русская редакция» Тоо «Channel Trading Ltd.», 1996. 352 с. 2. Саймон, Р. Windows 2000 API. Энциклопедия программиста: пер. с англ. СПб.: ООО «ДиаСофтЮП», 2002. 1088 с. 3. Фролов, Л.В., Фролов Г. В. Операционная система WINDOWS 95. Для программиста. М.: ДИАЛОГ-МИФИ, 1996. 288 с. (Библиотека сис- темного программиста; т. 22). 4. Пирогов, В. Ю. Ассемблер для Windows. 2-е изд., перераб. и доп. СПб.: БХВ–Петербург, 2003. 656 с. 5. Щупак, Ю. А. Win32 API. Эффективная разработка приложений. СПб.: Питер, 2007. 572 с. 6. Юров, В. И. Assembler: учебник для вузов. 2-е изд. СПб.: Питер, 2004. 637 с. 92 О Г Л А В Л Е Н И Е ВВЕДЕНИЕ 3 1. ОБЩАЯ СТРУКТУРА ПРИЛОЖЕНИЯ WINDOWS 5 1.1. Главная функция WinMain() ............................................................. 5 1.2. Класс окна и его характеристики ..................................................... 7 1.3. Создание и показ окна ....................................................................... 13 1.4. Обработка сообщений ....................................................................... 16 1.5. Оконная функция .............................................................................. 20 1.6. Сообщения Windows .......................................................................... 21 1.7. Создание приложения с главным окном ....................................... 28 1.7.1. Окна сообщений ............................................................................ 29 1.7.2. Вывод текстовых строк ................................................................. 31 1.7.3. Атрибуты цвета и фона выводимого текста ............................... 32 1.7.4.Таймеры Windows........................................................................... 32 1.7.5. Приложение с главным окном ..................................................... 33 2. МЕНЮ 40 2.2. Организация и виды меню ............................................................... 41 2.3. Приложение с главным окном и меню .......................................... 46 3. ЭЛЕМЕНТЫ УПРАВЛЕНИЯ ОБЩЕГО ПОЛЬЗОВАНИЯ 57 3.1. Панель инструментов ........................................................................ 58 3.1.1. Приложение с главным меню и панелью инструментов .............. 62 3.2. Строка состояния ............................................................................... 73 3.2.1. Приложение с главным меню, панелью инструментов и строкой состояния ...................................................................................................... 75 П Р И Л О Ж Е Н И Е. ТИПЫ ДАННЫХ WIN32……………... 89 Библиографический список ........................................................................ 91 93 СПбГУ ИТМО стал победителем конкурса инновационных образователь- ных программ вузов России на 2007–2008 годы и успешно реализовал ин- новационную образовательную программу «Инновационная система под- готовки специалистов нового поколения в области информационных и оптических технологий», что позволило выйти на качественно новый уровень подготовки выпускников и удовлетворять возрастающий спрос на специалистов в информационной, оптической и других высокотехно- логичных отраслях науки. Реализация этой программы создала основу формирования программы дальнейшего развития вуза до 2015 года, включая внедрение современной модели образования. КАФЕДРА ПРОЕКТИРОВАНИЯ КОМПЬЮТЕРНЫХ СИСТЕМ 1945–1966 РЛПУ (кафедра радиолокационных приборов и уст- ройств). Решением Советского правительства в августе 1945 г. в ЛИТМО был открыт факультет электроприборостроения. Приказом по институту от 17 сентября 1945 г. на этом факультете была организована кафедра ра- диолокационных приборов и устройств, которая стала готовить инжене- ров, специализирующихся в новых направлениях радиоэлектронной тех- ники, таких как радиолокация, радиоуправление, теленаведение и др. Ор- ганизатором и первым заведующим кафедрой был д.т.н., профессор С. И. Зилитинкевич (до 1951 г.). Выпускникам кафедры присваивалась квалификация инженер-радиомеханик, а с 1956 г. – радиоинженер (специ- альность 0705). В разные годы кафедрой заведовали доцент Б.С. Мишин, доцент И.П. Захаров, доцент А.Н. Иванов. 196–1970 КиПРЭА (кафедра конструирования и производства ра- диоэлектронной аппаратуры). Каждый учебный план специальности 0705 коренным образом отличался от предыдущих планов радиотехнической специальности своей четко выраженной конструкторско-технологической направленностью. Оканчивающим институт по этой специальности при 94 сваивалась квалификация инженер-конструктор-технолог РЭА. Заведовал кафедрой доцент А.Н. Иванов. 1970–1988 КиПЭВА (кафедра конструирования и производства электронной вычислительной аппаратуры). Бурное развитие электронной вычислительной техники и внедрение ее во все отрасли народного хозяй- ства потребовали от отечественной радиоэлектронной промышленности решения новых ответственных задач. Кафедра стала готовить инженеров по специальности 0648. Подготовка проводилась по двум направлениям – автоматизация конструирования ЭВА и технология микроэлектронных устройств ЭВА. Заведовали кафедрой: д.т.н., проф. В.В. Новиков (до 1976 г.), затем проф. Г.А. Петухов. 1988–1997 МАП (кафедра микроэлектроники и автоматизации проектирования). Кафедра выпускала инженеров-конструкторов-техно- логов по микроэлектронике и автоматизации проектирования вычисли- тельных средств (специальность 2205). Выпускники этой кафедры имеют хорошую технологическую подготовку и успешно работают как в произ- водстве полупроводниковых интегральных микросхем, так и при их про- ектировании, используя современные методы автоматизации проектиро- вания. Инженеры специальности 2205 требуются микроэлектронной про- мышленности и предприятиям-разработчикам вычислительных систем. Кафедрой с 1988 г. по 1992 г. руководил проф. С.А. Арустамов, затем снова проф. Г.А. Петухов. С 1997 ПКС (кафедра проектирования компьютерных систем). Кафедра выпускает инженеров по специальности 210202 «Проектирова- ние и технология электронно-вычислительных средств». Область профес- сиональной деятельности выпускников включает в себя проектирование, конструирование и технологию электронных средств, отвечающих целям их функционирования, требованиям надежности, дизайна и условиям экс- плуатации. Кроме того, кафедра готовит специалистов по защите инфор- мации, специальность 090104 «Комплексная защита объектов информати- зации». Объектами профессиональной деятельности специалиста по за- щите информации являются методы, средства и системы обеспечения за- щиты информации на объектах информатизации. С 1996 г. кафедрой заведует д.т.н., профессор Ю.А. Гатчин. За время своего существования кафедра выпустила 4264 инжене- ров. На кафедре защищено 62 кандидатских и 7 докторских диссертаций. 95 Вячеслав Алексеевич Безруков Win32 API. Программирование. Учебное пособие В авторской редакции В.А. Безруков Дизайн В.А. Безруков Верстка В.А. Безруков Редакционно-издательский отдел Санкт-Петербургского государственно- го университета информационных технологий, механики и оптики Зав. РИО Н.Ф. Гусарова Лицензия ИД № 00408 от 05.11.99 Подписано к печати 11.12.09 Заказ № 2174 Тираж 100 экз. Отпечатано на ризографе 96 Редакционно-издательский отдел Санкт-Петербургского государственного уни- верситета информационных технологий, ме- ханики и оптики 197101, Санкт-Петербург, Кронверкский пр., 49 |