Як змінити колір фону вікна в mfc - все про it і програмуванні

Щоб змінити колір фону для об'єктів CView, CFrameWnd, або CWnd, необхідно обробити повідомлення WM_ERASEBKGND. Приклад, наведений нижче, демонструє, як це зробити.

приклад коду

Для зміни фонового кольору вікна для CMDIFrameWnd, необхідно створити підклас (subclass) клієнтського вікна в багатодокументна інтерфейсі (MDI) (вікно в клієнтської області CMDIFrameWnd) і обробити повідомлення WM_ERASEBKGND. Більш докладно про сабклассінге вікна MDICLIENT дивіться статтю з Microsoft Knowledge Base:

Q129471 Сабклассінг (SubClass) MDIClient в MFC

Для зміни фонового кольору сліентского вікна MDI (клієнтська область CMDIFrameWnd), виконайте наступні кроки, використовуючи візард:

  1. За допомогою ClassWizard створіть універсальний клас CWnd.
  2. У класі CMainFrame створіть змінну-челен типу CWnd з пункту 1.
  3. У функції OnCreate класу CMainFrame після виклику базового класу CMDIFrameWnd :: OnCreate (), додайте виклик SubclassWindow (). наприклад:

m_hWndMDIClient це змінна-член CMDIFrameWnd яка містить дескриптор клієнтського вікна MDI. Так само, замініть "m_wndNewClient" тієї змінної, яку Ви створили в пункті 2.

ЗАУВАЖЕННЯ: Замініть "CNewClientWnd" на ім'я Вашого класу.

Інформацію про сабклассінге вікон за допомогою MFC можна подивитися в наступних матеріалах:

  • "Class Library Reference" для функцій CWnd :: SubclassWindow (), CWnd :: GetSuperWndProcAddr (), і CWnd :: SubclassDlgItem ()
  • Пошукати в Microsoft Knowledge Base такі ключові слова:

    subclass and sample and mfc

  • Подивитися MFC приклад CTRLTEST, який поставляється з Visual C ++ for Windows і Visual C ++ 32-bit Edition.
  • Див. Статтю під назвою "Subclassing Windows with the Microsoft Foundation Class Library" на компакт диску Microsoft Developer Network (MSDN).
  • Перевизначите повідомлення WM_ERASEBKGND для універсального класу CWnd, використовуючи код, наведений вище.
  • Щоб змінити фоновий колір об'єкта CFormView, можна обробити повідомлення WM_ERASEBKGND і використовувати код, наведений вище, або обробити повідомлення WM_CTLCOLOR.

    Якщо додаток, яке створило вікно є Windows додатком, то буде повернуто ім'я "ntvdm". Щоб отримати фактичне ім'я файлу, то необхідно породити додаток Win16, яке викликатиме GetModuleFileName () і передавати ім'я файлу назад в Вашу програму за допомогою како.

    Функції загальних діалогів для оновлення списку файлів і директорій є вбудованими в загальні діалоги, тому недоступні для додатків, що працюють з підпрограмами загальних діалогів. Ці функції спрацьовують тільки коли користувач зробить подвійний клік по списку. Наступний код використовує кнопк.

    Це дуже проста функція, що створює регіон з bitmap (.bmp) файлу. Так само в прикладі представлений вдосконалений варіант цієї функції, що дозволяє задавати маску зображення. Компілятор: Visual C ++ 4-6 Функція називається CreateRgn і має два параметри: szFileName - ім'я файлу, що містить кар.

    Якщо у Вас виникла потреба зробити статичну вікно у свого застосування (коли користувач не може змінити розмір і місце розташування головного вікна програми). то вставте наступний код в свій проект. int CMainFrame :: OnCreate (LPCREATESTRUCT lpCreateStruct)

    Схожі статті