30
StockObject, BitBlt, CreateCompatibleBitmap та PatBlt. Розглянемо
порядок їх використання в реальному додаткові.
Робота з віртуальним вікном у програмі організується в два
етапи: створення віртуального вікна та організація безпосередньої
роботи з ним. Створити віртуальне вікно раціонально при оброб-
ці повідомлення WM_CREATE, тобто в момент створення вікна
додатка. Працювати з цим вікно можна у будь-який час, коли не-
обхідно виконати виведення у вікно.
Фізично віртуальне вікно являє собою растрове зображення,
яке зберігається в пам’яті. Робота з цією областю пам’яті органі-
зується так само, як і з вікном додатка на екрані монітора. Це
означає, що для роботи з ним необхідно створити контекст при-
строю пам’яті, сумісний із контекстом вікна. Ця дія реалізується
двома функціями: GetDC, за допомогою якої додаток отримує
контекст вікна, і CreateCompatibleDC, яка створює сумісний із
контекстом вікна контекст пам’яті memdc. Після цього функцією
CreateCompatibleBitmap створюється сумісне з реальним вікном
на екрані растрове зображення. Його розміри повинні відповідати
розміру вікна, для роботи з яким будується растрове зображення.
Тому попередньо за допомогою функції GetSystemMetrics повинні
бути отримані і передані як параметри у CreateCompatibleBitmap
розміри вікна. Функція CreateCompatibleBitmap повертає дескрип-
тор на створене растрове зображення. Після цього функція Selec-
tObject вибирає створене растрове зображення в контекст пам’яті,
який, в свою чергу, сумісний із контекстом вікна. Завдяки такому
ланцюгу зв’язків звернення до растрового зображення в пам’яті
виконується аналогічно зверненню до реального вікна. На прак-
тиці це означає, що у всіх функціях, які виводять зображення у
вікно, на місці параметра, що відповідає контексту пристрою, не-
обхідно вказувати контекст пристрою пам’яті. Наприклад, функ-
ція TextOut буде викликатися так:
TextOut(memDC,10,150,@t_o+1,length(t_o));. Видно, що функції
TextOut передається не контекст вікна, а контекст віртуального
вікна, що і приводить до виведення не в реальне вікно, а у віртуа-
льне, яке є растровим зображенням. Як уже зазначалося, в про-
грамі є лише одне місце, де виконується виведення в реальне вік-