
- •1. Windows-как объектно-ориентированная операционная система (трпс)
- •2. Общая схема взаимодействия приложения и ядра Windows. (трпс)
- •3. Общая схема Windows приложения. Цикл обработки сообщения, функция окна, ресурсы. (трпс)
- •4. Синхронные и асинхронные Windows сообщения. Сходства и отличия. Области применения. (трпс)
- •5. Классы и стили окон. Иерархия окон. (трпс)
- •6. Особенности отрисовки для Windows приложения. Контекст устройства, недействительная область, обработка сообщений. (трпс)
- •7. Типы клавиатурных сообщений. Особенности обработки. (трпс)
- •8. Типы сообщений от манипулятора мышь. Особенности обработки. (трпс)
- •9. Реализация корпоративной и вытесняющей многозадачности на Windows платформах. (трпс)
- •10. Основные понятия процесса, потока, фибера (трпс)
- •11. Схема создания рабочего потока (трпс)
- •12. Синхронизация потоков, события, критические секции. (трпс)
- •13. Особенности использования памяти на Windows платформах. Проблема ipc (трпс)
- •14. Общая схема печати документов приложением на Windows платформах. (трпс)
- •2 Создание немодального диалога для отмены печати.
- •16. Типы и области применимости dll. Особенности программной реализации. (трпс)
- •17. Наборы символов для Windows платформ. Сходства и отличия. Области применимости. (трпс)
- •18. Типы диалогов для Windows платформ. Сходства и отличия. Особенности реализации. (трпс)
- •Int DialogBox(hinstance hInst,lpctstr pTemplate, hwnd hWndParent, dlgproc pDlgFunc)
- •Int MessageBox(hwnd hWnd, lpctstr szText, lpctstr szCaption, uint uType);
- •If (!IsDialogMessage(hDlgModaless,&msg)){
- •19. Элементы управления. Общая характеристика и области применимости. (трпс)
- •20. Функции crt и функции ядра Windows для работы с файлами. Особенности применения. (трпс)
4. Синхронные и асинхронные Windows сообщения. Сходства и отличия. Области применения. (трпс)
Асинхронными называются сообщения, помещаемые Windows в очередь сообщений приложения, которая просматривается в цикле обработки сообщений (PostMessage).
Синхронные сообщения передаются непосредственно окну, когда вызывается оконная процедура (SendMessage). Асинхронные сообщения могут помещаться в очередь в одно время а обрабатываться в другое. Синхронные – посылаются напрямую в функцию окна и тут же обрабатываются.
Асинхронные сообщения – результат пользовательского ввода, движения мыши или щелчков кнопок мыши; сообщения таймера или сообщение завершения цикла обработки сообщений WM_QUIT; сообщение результат вызова функции CreateWindowEx() WM_CREATE, сообщение результат вызова функции UpdateWindow() WM_PAINT.
Во время обработки оконной процедурой одного сообщения, приложение не может быть прервано другим сообщением. Только в единственном случае, если оконная процедура сама вызывает функцию, которая становится источником нового синхронного сообщения, то это сообщение начинается обрабатываться еще до того, как функция окна вернет управление Windows.
5. Классы и стили окон. Иерархия окон. (трпс)
Класс окна несет информацию о начальном внешнем виде окна, пиктограмме, курсоре и ресурсе меню, а также об адресе оконной функции.
Существует множество стандартных классов окна. Эти системные глобальные классы реализуют возможности элементов управления. Любое приложение может использовать эти классы в своих окнах, например, реализовать поле ввода, используя класс Edit.
Свои собственные классы окон определяются с помощью функции RegisterClass().
Window позволяет разбивать существующие окна на субклассы и суперклассы. Разбиение на субклассы замещает оконную процедуру для класса окна на другую процедуру. Операция создания суперкласса создает новый класс на основе существующего, сохраняя его оконную процедуру.
В Windows существует три основных стиля окон:
Главное окно (WS_OVERLAPPEDWIMDOW). Оно располагается на “DeskTop” и называется окнами верхнего уровня.
Временное окно (WS_POPUPWINDOW) Принадлежит главному окну приложения, и служат обычно для вывода какой-либо информации. Пример – диалоговое окно.
Дочернее окно (WS_CHILD) не может быть перемещено за границы родительского окна. Пример – элементы управления диалогов/
В Windows поддерживается строгая иерархия окон. Каждое окно должно иметь родительское окно. Единственное исключение “DeskTop”.
6. Особенности отрисовки для Windows приложения. Контекст устройства, недействительная область, обработка сообщений. (трпс)
В любой момент может потребоваться перерисовка любого окна, поэтому обработка сообщения WM_PAINT крайне важна. Это сообщение сигнализирует окну, что вся его рабочая область или некоторая ее часть становится недействительной, и ее следует перерисовать. Перерисовкой неклиентской области окна занимается Windows, перерисовка клиентской части – забота программиста.
Случаи, когда клиентская область становиться недействительной:
при создании окна (UpdateWindow() помещает сообщение WM_PAINT в очередь);
увеличение размеров окна;
минимизация окна программы, а затем его восстановление;
во время перемещения окон, при перекрывании части окна другими;
если при обработке любого сообщения требуется изменить содержимое окна при помощи функции IvalidateRect().
Сообщение WM_PAINT является низкоприритетным. Оно помещается в очередь тогда, когда там нет других необработанных сообщений. Если в окне объявлены несколько областей для перерисования, то приложение получает только одно сообщение WM_PAINT, в котором определена суммарная область, охватывающая все указанные части.
Обработка сообщения WM_PAINT всегда начинается с вызова функции BeginPaint(HWND hWnd,PAINTSTRUCT* lpPaint) и заканчивается – вызовом функции EndPaint(HWND hWnd,PAINTSTRUCT* lpPaint). Первый параметр BeginPaint - дескриптор окна, второй – указатель на структуру PAINTSTRUCT, поля которой содержат информацию, необходимую для отрисовки. Возвращаемым значением BeginPaint() является дискриптор контекста устройства. Этот дискриптор необходим для вывода в рабочую область текста и графики. Функция EndPaint() выполняет обязательное освобождение дискриптора контекста устройства. Если приложению требуется получить контекст устройства клиентской области окна вне WM_PAINT, то для этого необходимо воспользоваться другими функциями Win32 API.
Контекст устройства – это структура данных, связывающая приложение с драйвером устройства и полностью определяющая состояние драйвера и способ вывода информации. Перед тем как приложение начнёт вывод информации в окно, оно должно получить контекст устройства. До этого связи между программой и окном не существует. Таким образом, перед началом любого процесса вывода необходимо получить контекст устройства. Контекст устройства представляет собой путь вывода данных из приложения в рабочую область окна с использованием подходящего драйвера устройства Графический вывод осуществляется через контекст устройства, путем передачи его дескриптора в соответствующую GDI функцию. Через контекст устройства общие, независимые от устройства графические вызовы транслируются в инструкции, представляющие вывод на конкретное устройство. Когда приложение вызывает функцию отрисовки GDI, контекст устройства определяет, какой драйвер устройства выполнит этот вызов. Бывают контексты устройств отображения, контекст памяти, контекст принтера и контекст метафайла.