В MS-DOS использовалось статическое подключение библиотек. При этом на этапе компиляции, т. е. до выполнения программы, осуществлялась сборка всех объектных файлов ( .obj) в один выполняемый модуль.
В многозадачной системе используется динамическое подключение библиотек. DLL - Dynamic Link Libraries.
При этом компоновщик не включает в выполняемый модуль тело вызываемой функции. Вместо этого в библиотеку импорта ( *libw. lib) выбирается имя выполняемого модуля, в котором следует искать функцию или ее порядковый номер. Эта информация помещается в выполняемый файл и используется на этапе загрузке приложения на выполнение.
Типы данных, используемые в Windows
Рассмотрим нестандартные типы данных, которые используются в Windows. Определение типов данных осуществляется при помощи оператора typedef:
typedef int BOOL;
Простые типы данных Windows также напоминают объявления типов данных, используемых в Паскале. Простые типы данных Windows приведены в следующей таблице:
Таблица
Тип
данных
| Определение
| Описание
|
BYTE
| unsigned char
| Однобайтовое беззнаковое целое число
|
WORD
| unsigned short
| Двухбайтовое беззнаковое целое число
|
LONG
| signed long
| Четырехбайтовое знаковое целое число
|
DWORD
| unsigned long
| Четырехбайтовое знаковое целое число
|
NPSTR
| char *
| Ближний (два байта) указатель на
текстовую строку
|
LPSTR
| char far *
| Дальний (четыре байта) указатель на текстовую строку
|
BOOL
| int
| Логическая переменная, принимающая значение TRUE (истина) и FALSE (ложь)
|
Из простых типов данных создаются сложные типы данных Windows. Некоторые из них приведены в таблице:
Таблица
Тип данных
| Описание
|
HANDLE
HWND
FARPROC
MSG
WNDCLASS
PAINTSTRUCT
RECT
| Двухбайтовое беззнаковое целое число, идентифицирующее объект Windows (дескриптор)
Двухбайтовое беззнаковое целое число, идентифицирующее окно (дескриптор окна)
Дальний (четыре байта) указатель на функцию
Структура, определяющая параметры сообщения, Windows
Структура, определяющая класс окна
Структура, предназначенная для подготовки графического вывода в окно
Структура, определяющая параметры прямоугольника
|
Венгерская нотация
Заключается в том, что перед именем переменной ставятся одна или две буквы, соответствующие типу переменной. Такая нотация позволяет по имени переменной сразу определить ее тип и назначение.
Например, переменная lpszCmdLine является дальним указателем на символьную строку,в которой хранится командная строка.
Для обозначения структур используют сокращение их имен.
Например, для именования структурных переменных типа POINT, можно использовать сокращение pt: ptLowerRight, ptPrevious , для структурных переменных типа WORD - w , а типа DWORD - dw: wBufSize, dwFileSize
Венгерская нотация позволяет до компиляции при визуальном просмотре текста программы выявить возможные ошибки.
В следующей таблице приведены основные префиксы, использующиеся в тексте программ для Windows:
Таблица
Префикс
| Тип
| Пояснение
|
c
by
n
i
b
w
h
l
dw
fn
s
sz
| char
BYTE
short или int
int
BOOL
WORD
HANDLE
LONG DWORD
| unsigned char
десятичное целое число
unsigned int
unsigned int
long
Дескриптор
unsigned long
Двойное слово
Имя функции
Строка
Строка, оканчивающаяся нулем
|
Перед этими префиксами могут также указываться префиксы, говорящие о типе указателя:
Таблица
Префикс
| Определение Си
| Пояснение
|
p
lp
np
| *
far *
near *
| Указатель
Дальний указатель
Ближний указатель
|