winapi po rusku.pdf
(
803 KB
)
Pobierz
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ
В.А. Безруков
WIN32 API
ПРОГРАММИРОВАНИЕ
Учеб�½ое пособие
Са�½кт-Петербург
2009
УДК
681.3.06(035.5)
Безруков В.А.
Win32 API.
Программирова�½ие
/учеб�½ое
пособие.
–
СПб:
СПбГУ ИТМО,
2009. – 90
с.
Рассмотре�½ы ос�½ов�½ые при�½ципы программирова�½ия
Microsoft Windows
�½а языке
C++
с приме�½е�½ием
Win32 API.
в
среде
Пособие пред�½аз�½аче�½о для студе�½тов, обучающихся по специаль�½о-
стям
210202.65 «Проектирова�½ие
и тех�½ология вычислитель�½ых средств»
и
0900104.65 «Комплекс�½ая
защита объектов и�½формации», а также для
студе�½тов других специаль�½остей изучающих дисципли�½у
«Программи-
рова�½ие �½а языках высокого уров�½я».
Рекоме�½дова�½о к печати Советом факультета компьютер�½ых тех�½ологии
и управле�½ия, протокол №
5
от
08
декабря
2009
г.
СПбГУ ИТМО стал победителем ко�½курса и�½�½овацио�½�½ых образо-
ватель�½ых программ вузов России �½а
2007-2008
годы и успеш�½о реализо-
вал и�½�½овацио�½�½ую образователь�½ую программу
«И�½�½овацио�½�½ая
систе-
ма подготовки специалистов �½ового поколе�½ия в области и�½формацио�½-
�½ых и оптических тех�½ологий», что позволило выйти �½а качестве�½�½о �½о-
вый урове�½ь подготовки выпуск�½иков и удовлетворять возрастающий
спрос �½а специалистов в и�½формацио�½�½ой, оптической и других высоко-
тех�½ологич�½ых отраслях �½ауки. Реализация этой программы создала ос-
�½ову формирова�½ия программы даль�½ейшего развития вуза до
2015
года,
включая в�½едре�½ие совреме�½�½ой модели образова�½ия.
©Са�½кт-Петербургский
государстве�½�½ый у�½иверситет и�½форма-
цио�½�½ых тех�½ологий, меха�½ики и оптики,
2009
©Безруков
В.А.,
2009
2
ВВЕДЕНИЕ
В операцио�½�½ой системе
Windows
реализова�½а объект�½о-
орие�½тирова�½�½ая идеология. Базовый объект системы
–
ок�½о, поведе�½ие
которого определяется методом, �½азываемым фу�½кцией ок�½а. Графиче-
ский образ ок�½а �½а экра�½е дисплея
–
прямоуголь�½ая рабочая область.
Независимо от своего типа любой объект
Windows
иде�½тифициру-
ется описателем или дескриптором
(
handle
).
Дескриптор
–
это ссылка
�½а объект. Все взаимоот�½оше�½ия программ�½ого кода с объектом осущест-
вляются только через его дескриптор.
И�½терфейс приклад�½ого программирова�½ия
(API – Application Pro-
gramming
Interface)
представляет
собой
совокуп�½ость
32-бит�½ых
фу�½кций
(Win32 API),
которые пред�½аз�½аче�½ы для созда�½ия
приложе�½ий
(программ),
работающих под управле�½ием
Microsoft Win-
dows.
Фу�½кции объявле�½ы в заголовоч�½ых файлах. Глав�½ый из �½их −
файл
windows.h,
в котором содержатся ссылки �½а другие заголовоч�½ые
файлы.
В
Win32
еди�½ицей работы компьютера является
поток
− ход вы-
пол�½е�½ия программы в рамках процесса
(в
ко�½тексте процесса). Поток
выпол�½яет программ�½ый код, при�½адлежащий процессу.
Процесс
− это
экземпляр выпол�½яемой программы
(�½о
�½е ход ее выпол�½е�½ия). О�½ �½е яв-
ляется ди�½амическим объектом и включает виртуаль�½ое адрес�½ое про-
стра�½ство, код и да�½�½ые, файлы, си�½хро�½изирующие объекты, ди�½амиче-
ские библиотеки.
Каждое приложе�½ие создает, по ме�½ьшей мере, оди�½ первич�½ый
поток, �½о может создать и м�½ого потоков.
Любое приложе�½ие
Windows
представле�½о �½а экра�½е дисплея как
ми�½имум од�½им ок�½ом с �½абором ста�½дарт�½ых элеме�½тов управле�½ия.
Различают следующие типы око�½:
•
перекрывающие
(
overlapped window
);
•
всплывающие
(
pop–up window
);
•
дочер�½ие
(
child window
);
•
слоистые
(
layered window
) –
особые ок�½а, которые позволяют
улучшить визуаль�½ый эффект, включая прозрач�½ость.
Перекрывающие ок�½а создаются фу�½кцией
CreateWindowEx()
со стилем
WS_OVERLAPPEDWINDOW
.
Этот стиль определяет �½аличие за-
головка, систем�½ого ме�½ю, к�½опок ми�½имизации и максимизации, к�½опки
закрытия ок�½а и
«толстой»
рамки, позволяющей изме�½ять размеры ок�½а.
Перекрывающие ок�½а пред�½аз�½аче�½ы для глав�½ых око�½ приложе�½ий и
могут иметь ме�½ю.
Всплывающие ок�½а создаются фу�½кцией
CreateWindowEx()
со
стилем
WS_POPUP
и пред�½аз�½аче�½ы для око�½ диалогов, око�½ сообще�½ий
и других око�½ време�½�½ого использова�½ия, которые могут �½аходиться в�½е
глав�½ого ок�½а приложе�½ия. Для того чтобы време�½�½ое ок�½о имело заго-
3
ловок, рамку и систем�½ое ме�½ю, �½еобходимо при его созда�½ии использо-
вать комби�½ацию стилей
WS_POPUPWINDOW | WS_CAPTION.
Дочер�½ие ок�½а создаются фу�½кцией
CreateWindowEx()
со стилем
WS_CHILD
и обыч�½о используются для разделе�½ия
клие�½тской области родительского ок�½а �½а отдель�½ые фу�½кцио�½аль�½ые
области.
Дочер�½ие
ок�½а
могут
иметь
заголовок,
систем�½ое ме�½ю, к�½опки ми�½имизации и максимизации, рамку и полосы
�½е
могут
иметь
ме�½ю.
Дочер�½ие
ок�½а
прокрутки,
�½о
всегда �½аходятся в пределах клие�½тской области родитель-
ского ок�½а, т.е. их коорди�½аты всегда отсчитываются от левого верх�½его
угла
родительского
ок�½а.
Родительское
ок�½о
может
быть перекрывающим, всплывающим или даже другим дочер�½им ок�½ом.
Виды приложе�½ий:
•
SDI
(Single Document Interface) –
приложе�½ие с од�½о–докуме�½т�½ым
и�½терфейсом;
•
MDI
(Multiple Document Interface) –
приложе�½ие с м�½огодокуме�½т-
�½ым и�½терфейсом;
•
диалоговое приложе�½ие
(Based Dialog)
− содержит только диалого-
вое ок�½о с элеме�½тами управле�½ия, �½е имеет глав�½ого ок�½а, а з�½ачит, �½е
имеет ме�½ю.
Windows
поддерживает работу с символами как в традицио�½�½ой
ANSI
кодировке, так и в кодировке
UNICODE.
В ста�½дарте
UNICODE
каждый символ кодируется двумя байтами, что позволяет определить
65536
символов.
Чтобы была возмож�½ость компилировать приложе�½ие как
ANSI
версию или как
UNICODE
версию без изме�½е�½ия приложе�½ия �½еобхо-
димо:
1.
включить в приложе�½ие файл
tchar.h;
2.
при определе�½ии символов и строк использовать типы
TCHAR,
LPTSTR
и
LPCTSTR;
3.
при определе�½ии символь�½ых или строковых литералов исполь-
зовать макрос
_TEXT
(или
просто
_T);
4.
�½еобходимо пом�½ить, что
sizeof(szBuffer) –
размер буфера в бай-
тах, а
sizeof(szBuffer)/sizeof(TCHAR) –
размер буфера в симво-
лах.
Типы да�½�½ых
TCHAR, LPTSTR
и
LPCTSTR
определе�½ы следую-
щим образом:
typedef unsigned short wchar_t;
typedef wchar_t
WCHAR;
#define UNICODE
typedef WCHAR TCHAR;
//UNICODE
кодировка
#else
typedef char
TCHAR;
//ANSI
кодировка
#endif
4
typedef WCHAR* LPWSTR;
typedef CHAR*
LPSTR;
#define UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR
LPTSTR;
#endif
typedef CONST WCHAR* LPCWSTR;
#define UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif
//UNICODE
кодировка
//ANSI
кодировка
//UNICODE
кодировка
//ANSI
кодировка
Почти все фу�½кции, получающие в качестве аргуме�½та адрес
строки, имеют
ANSI
и
UNICODE
версии, �½апример, прототип фу�½к-
ции
lstrcat
ко�½кате�½ации символь�½ых строк имеет вид:
LPTSTR lstrcat (
LPTSTR lpString1,
LPTSTR lpString2
);
Фу�½кции
Win32
также имеют
ANSI
и
UNICODE
версии, �½а-
пример, фу�½кция
DispatchMessage():
# ifdef
#define
#else
#define
#endif
UNICODE
DispatchMessage
DispatchMessage
DispatchMessageW
DispatchMessageA
Приложе�½ия, приведе�½�½ые как примеры в пособии, могут компи-
лироваться без изме�½е�½ия исход�½ого текста в
ANSI
версии или в
UNICODE
версии, и протестирова�½ы �½а компьютере с операцио�½�½ой сис-
темой
Microsoft Windows XP Professional
в среде
Microsoft Visual Studio
2005.
1.
ОБЩАЯ СТРУКТУРА ПРИЛОЖЕНИЯ
WINDOWS
Windows
�½акладывает жесткие огра�½иче�½ия �½а структуру приложе-
�½ия, которое, как правило, содержит ми�½имум две при�½ципиаль�½о важ-
�½ые фу�½кции: глав�½ую
WinMain()
и фу�½кцию ок�½а
WndPoc()
.
1.1.
Глав�½ая фу�½кция
WinMain()
Фу�½кция
WinMain()
долж�½а быть в каждом приложе�½ии. Ее прото-
тип описа�½ в файле
winbase.h
следующим образом:
int WINAPI WinMain(
HINSTANCE hInstance,
//дескриптор
экземпляра
//приложе�½ия
HINSTANCE hPrevInstance,
//дескриптор
предыдущего
//экземпляра
приложе�½ия
LPSTR lpszCmdLine,
//указатель
�½а параметры
//кома�½д�½ой
строки
int nCmdShow
//ко�½ста�½та,
характеризующая
5
Plik z chomika:
jacekplacekjacek
Inne pliki z tego folderu:
Windows via C、C++, Fifth Edition.pdf
(6622 KB)
windows via c++.pdf
(5456 KB)
Charles Petzold - Programming Windows - 5th Ed.pdf
(3058 KB)
Sop_02_wyk_1.0.pdf
(3363 KB)
Windows_Programming.pdf
(1614 KB)
Inne foldery tego chomika:
Arduino
Asembler
C++
DirectX
GDB
Zgłoś jeśli
naruszono regulamin