- •Оглавление
- •1. Интерфейс графического устройства gdi. Обработка сообщений wm_paint.
- •2. Обмін інформацією між процесами та потоками. Обмін даними за допомогою файлів.
- •3.Створити програму у Windows (Win32 api), яка виводе одне (головне) вікно.
- •4. Обмін інформацією між процесами та потоками. Обмін повідомленнями.
- •5. Створити програму у Windows (Win32 api), яка демонструє основні стилі вікон (вікно верхнього рівня, спливаюче вікно з головним вікном та без нього, дочірнє вікно).
- •6. Процеси та потоки. Створення процесу. Створення потоку
- •7. Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід текстових строк у вікно.
- •8) Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід різноманітних типів ліній у вікно.
- •9. Робота з файлами. Асинхронні операції з файлами.
- •10. Створити простішу програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід простих геометричних фігур у вікно.
- •11. Створити програму у Windows (Win32 api), яка забезпечує обробку повідомлень wm_paint, wm_destroy, wm_create, wm_command. Другі повідомлення передати на обробку стандартній функції вікна.
- •№ 12 Стандартні елементи керування. Графічний список. Індикатор прогресу. Складальний лічильник.
- •13. Створити простішу програму у Windows (Win32 api), яка забезпечує обробку повідомлень миші (wm_lbuttondown, wm_rbuttondown) у вікні.
- •15. Базові команди. Класифікація команд. Команди передачі даних. Команди обміну процесора з пам'яттю. Команди передачі кодів між процесором і периферією.
- •16. Команди обробки даних. Базові арифметичні команди.
- •17. Створити програму у Windows (Win32 api), яка забезпечує обробку повідомлень клавіатури (wm_keyup, wm_keydown) у вікні.
- •18. ВікнаWindows.Процедура створенняд очірнього вікна. Повідомлення wm_create.
- •19. Створити програму у Windows (Win32 api), яка забезпечує роботу з таймером.
- •20.Таймери Windows і служба часу.
- •24. Інтерфейс графічних пристроїв gdi. Обробка повідомлень wm_paint.
- •26. Створити простішу програму у Windows (Win32 api), яка забезпечує роботу з стандартним елементом керування - графічний список.
- •27. Основи розробки Windows-додатків. Головна функція WinMain(). Повідомлення Windows.
- •29 Створити програму у Windows (Win32 api), яка забезпечує роботу з стандартним елементом керування - набірний лічильник.
1. Интерфейс графического устройства gdi. Обработка сообщений wm_paint.
GDI (GraphicsDeviceInterface, GraphicalDeviceInterface) — один из трёх основных компонентов или «подсистем», вместе с ядром и Windows API составляющих пользовательский интерфейс (оконный менеджер GDI) MicrosoftWindows. GDI — это интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие как мониторы и принтеры.
GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры. Он не отвечает за отрисовку окон, меню и т. п., эта задача закреплена за пользовательской подсистемой, располагающейся в user32.dll и основывающейся на GDI. GDI выполняет те же функции, что и QuickDraw в Mac OS.
Одно из преимуществ использования GDI вместо прямого доступа к оборудованию — это унификация работы с различными устройствами. Используя GDI, можно одними и теми же функциями рисовать на разных устройствах, таких, как экран или принтер, получая на них практически одинаковые изображения. Эта возможность лежит в центре всех WYSIWYG-приложений для Windows.
Обработка сообщения WM_PAINT крайне важна для программирования под Windows. Это сообщение уведомляет программу, что часть или вся клиентская область окна недействительна (invalid) и ее следует перерисовать.В каких ситуациях клиентская область окна становится недействительной? Очевидно, что при создании окна недействительна вся его клиентская область, поскольку в ней еще ничего не нарисовано. Это раз. Если вы меняете размеры окна, клиентская область также объявляется системой недействительной, что обусловлено комбинацией стилей CS_HREDRAW | CS_VREDRAW в поле styleструктуры класса окна. Это два. Когда вы минимизируете окно программы, сворачивая его на панель задач, а затем снова разворачиваете до начального размера, то Windows объявляет клиентскую область окна недействительной. Это три.
Во всех перечисленных случаях, кроме первого, операционная система автоматически помечает клиентскую область окна как недействительную, что влечет за собой посылку сообщения WM_PAINT. В первом случае, когда окно только что было создано, аналогичный эффект достигается вызовом функции ShowWindow. В процессе ее выполнения генерируются сообщения WM_SIZE и WM_M0VE, а обрабатывая WM_SIZE, система автоматически генерирует сообщение WM_PAINT.Обработкусообщения WM_PAINT рекомендуетсявсегданачинать с вызовафункции Begin Paint:
hDC - BeginPainUhWnd, &ps);
Первыйпараметрфункциисодержитдескрипторокна, полученныйчерезаргументоконнойпроцедуры, а второй — адресструктурыpsтипа PAINTSTRUCT.Поляэтойструктуры, заполняемые в результатевыполненияфункцииBeginPaint, в дальнейшемиспользуютсяоперационнойсистемой.
2. Обмін інформацією між процесами та потоками. Обмін даними за допомогою файлів.
Процессом называют экземпляр выполняемой программы - не ход выполнения программы, а именно саму программу вместе с ее ресурсами. В понятие процесса включаютвиртуальное адресное пространство, коды и данные, принадлежащие программе, а такжетакие системные ресурсы, как файлы, синхронизирующие объекты, библиотеки динамического связывания и др.
Потоком называют ход выполнения программы. Поток выполняется в рамкахвладеющего им процесса или, как говорят, в контексте процесса. Именно потоку операционная система выделяет кванты процессорного времени.
Как правило, потоки, сосуществующие в рамках одного процесса, выполняют взаимосвязанные задачи и работа одного потока может зависеть от хода или результатов работы другого. В этом случае необходимо организовать передачу информации из потока впоток. В качестве передаваемой информации часто выступают данные, подготовленные,например, в одном потоке, но используемые в другом. Однако из потока в поток (и изпроцесса в процесс) можно передавать не только данные, но и приказы на выполнение
заданных действий.
В тех случаях, когда скорость обработки данных не имеет решающего значения, обменданными между процессами можно выполнять через разделяемые файлы. Для того чтобысделать файл разделяемым, достаточно при его открытии указать флаги FILE_SHARE_READ или FILE_SHARE_WRITE (или их комбинацию).
