Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

Структура приложения Windows

            #define STRICT

Кроме того при именовании переменных следует придерживаться так называемой “венгерской нотации”, согласно которой имя переменной должно начинаться с одной или нескольких строчных букв, отражающих ее тип. Так, в параметре hInstance функции WinMain префикс h  означает идентификатор   (handle), а префикс lpsz в lpszCmdLine означает дальний указатель на ASCIIZ-строку (long pointer on string zero).

            Отметим, что в рамках одного процесса программист имеет возможность создать несколько параллельных потоков. Мы отложим рассмотрение мультипотоковых приложений до специальной главы, а пока остановимся на приложениях использующих только первичный поток.

            Для нормальной работы приложения функция потока (то есть в нашем случае – функция WinMain) должна обрабатывать сообщения. Сообщение представляет собой сформированную операционной системой информацию о некотором событии во “внешнем” (по отношению к потоку) мире, о котором, по мнению ОС, должен “узнать” поток. Имеется три основных источника сообщений : аппаратура, потоки других процессов (или одного процесса – в случае мультипотоковых приложений) и сама ОС.

При нажатии клавиши на клавиатуре, кнопки мыши, перемещении мыши или при других операциях с аппаратурой драйвер устройства распознает соответствующее аппаратное событие и помещает информацию о нем в очередь системного потока необработанного ввода (RIT – raw input thread). Главной задачей RITявляется определение потока, которому необходимо направить информацию об аппаратном событии. Так, в случае сигнала от мыши, RIT определяет поверх какого окна находится курсор мыши, а в случае сигнала от клавиатуры RITопределяет, какой поток является приоритетным потоком (foreground thread), т.е. с каким потоком пользователь работает в данный момент.  Затем RIT направляет информацию о событии в виртуальную очередь ввода выбранного потока. ОС преобразует эту информацию в сообщение, которое направляется в очередь сообщений потока, которому принадлежит виртуальная очередь ввода.

предыдущаяследующая