Структура приложения Windows
Прикладная программа, разработанная специально для Windows95 или Windows NT называется приложением WIN32 (WIN32 application). Поэтому в дальнейшем мы будем использовать термин “приложение” вместо термина “прикладная программа”.
Архитектура приложения представляет собой архитектуру программы, управляемой событиями. Ключевую роль в организации работы всех подсистем и приложений Windows играет система сообщений. Процесс обработки сообщений представлен на рис. 1.
6
|
|
|
|
Рис. 1. Процесс обработки сообщений
7
В Windows95 и Windows NT реализована вытесняющая мультизадачность на уровне потоков. Поток (thread) описывает последовательность исполнения кода внутри процесса. В соответствии с установленным приоритетом система выделяет каждому потоку кванты процессорного времени, задаваемые системным таймером. Любому потоку в приложении соответствует некоторая функция - функция потока. При запуске приложения создается процесс, а в его рамках – первичный поток, который и получает управление. Приложение должно состоять как минимум из одной функции – функции первичного потока, которая при программировании на языке С заменяет функцию main и должна быть определена следующим образом:
int WINAPI WinMain (HINSTANCE hinstance , HINSTANCE hPrevinstance,
LPSTR lpszCmdLine, int nCmdShow)
{ // Тело функции }
Все параметры , получаемые функцией WinMain , формируются операционной системой. Параметры hinstance и hPrevinstance представляют собой соответственно идентификаторы текущей и предыдущей копии приложения. Приложения WIN32 функционируют в изолированных виртуальных адресных пространствах и в силу этого не имеют возможности определить через параметр hPrevinstance, не запущено ли приложение вторично. Этот параметр использовался в предыдущих версиях Windows, для приложений WIN32 он всегда равен нулю. Параметр lpszCmdLine - дальний указатель на строку запуска приложения , параметр nCmdShow указывает рекомендуемый приложению способ представления главного окна при запуске. Приложение может игнорировать этот параметр, однако это не является хорошим стилем программирования. Обычно значение данного параметра передается без изменений функции ShowWindow для отображения на экране главного окна приложения. Ниже приведены возможные значения параметра nCmdShow, определенные как константы с префиксами SW_ :
предыдущаяследующая