Mfc - малювання у вікні

Сьогодні розберемо як за допомогою бібліотеки MFC можна малювати різні елементи. Я цю лібу сам тільки вивчаю і не сильно знаю. У MFC використовується контекст пристроїв windows, за допомогою нього, використовуючи його функції ми будемо малювати різні елементи.

Отже почнемо, створіть додаток MFC на основі декількох документів, тільки без вкладок, в майстра додатки у вкладці "Тип додатка" виставите настройки як на скрині нижче і натисніть готовий

Далі скомпілюйте створене додаток (Ctrl + F5) і у вас повинно з'явиться наступна програма.

Як малює MFC в вікні

У mfc додатку для малювання викликається функція onDraw () класу CView, тобто у нас створений в додатку клас CtestView спадкоємець класу Cview і в ньому перевизначена функція

Вона віртуальна як видно і її визначення має наступний вигляд:

CDC * - це покажчик на контекст пристрою windows. Контекст пристрою - це така фігня в виндовс яка однаково виводить вид на будь-яких пристроях будь то жк монітор або принтер, картинка буде одна і таж, картинка то повинна бути і так одна і таж, тут найголовніше що код для принтера не потрібно переписувати, він буде один і той же, припустимо, як для принтерів так і для моніторів код буде однаковий. Ну в загальному CDC * - це покажчик на контекст устройсва CDI - content divace instryment як то так воно розшифровується. А CDC-це такий якийсь клас в виндовс, у якого існують різні методи.

тут створюється покажчик на об'єкт документа який належить поточному увазі або можна сказати пов'язаний з поточним виглядом. Функція GetDocument () повертає покажчик на поточний документ про людське око.

Перевіряє на валідність покажчик.

Ну в загальному хлопці додамо замість рядка

І скомпілюємо програму Ctrl + F5, ну і подивимося що у нас вийшло. А у нас вийшла програма яка нормально працює. Але справа в тому що у нас вікно - його область коли ховається допустимо за кордону найголовнішого фрейма наприклад як на малюнку нижче

то ми коли будемо назад витягати мишкою це віконце з прихованою області у нас виндовс повинен перемальовувати дану область і обробляти повідомлення WM_PAINT в mfc при обробці цього повідомлення викликається функція OnDraw () класу уявлення, ну ви з цим можете поекспериментувати наприклад коли ви будите висовувати віконце з за меж вікна, то буде постійно викликатися функція AfxMessageBox (), так само саме викликається функція OnDraw () і при зміні розмірів області виду, якщо ви потягніть мишкою за край вікна намагаючись змінити його розмір, то віконце сначал а повністю очиститися, а потім як би повинна викликатися функція OnDraw () для його перемальовування. Ну це такі невеликі тонкощі які потрібно знати, і так давайте розберемо як все таки здійснюється малювання в віконці.

режими малювання

Точка відліку в виндовс віконці починається з лівого верхнього кута, за замовчуванням це точка з координатами (0,0). Це як би центр площині. За замовчуванням режим відображення у вікні windows встановлений MM_TEXT - Логічною одиницею є один піксель пристрою з позитивними напрямками x зліва направо і позитивними y зверху вниз клієнтської області.

Схожі статті