пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Послідовність роботи з віртуальним вікном. Приклади роботи з віртуальним вікном.

Для организации виртуального окна необходимо:

1. В классе окна объявить объект контекста устройства виртуально окна; объект растрового изображения, соответственно виртуальном окну; объект кисти заполнения виртуального окна.

Это может выглядеть так:

class CMainWin :: CFrameWnd

[Public:

CDC memDC; // Контекст устройства виртуального окна;

CBitmap vbmp; // Растровое изображение виртуального окна;

CBrush mbrush; // Кисть для заполнения виртуального окна;

..................... ..

];

2. В конструкторе главного окна программы осуществить следующие изменения:

- Получить размеры физического окна программы;

- Реализовать совместимость контекста виртуального окна с физическим уик-ном;

- Создать растровое изображение, совместимое с основным окном программы и выбрать его в контекст виртуального окна;

- Создать фон виртуального окна (обычно - белого цвета), сделать его текущим и выбрать в контекст виртуального окна, заполнить выбранным фоном виртуальное окно.

CMainWin::CMainWin()

[Create(NULL,"Image example",WS_OVERLAPPEDWINDOW,rectDefault, NULL, MAKEINTRESOURCE(IDR_MENU1));

 bmp1.LoadBitmap(IDB_BITMAP1);         // завантаження зображення 1

 bmp2.LoadBitmap(IDB_BITMAP2);         // завантаження зображення 2

 m_X=m_Y=0;                                              // поточні координати виведення

 maxX=GetSystemMetrics(SM_CXSCREEN);       // отримання X – розміру

 maxY=GetSystemMetrics(SM_CYSCREEN);       // отримання Y – розміру

 CClientDC dc(this);                                     // отримання контексту головного вікна

 memDC.CreateCompatibleDC(&dc);

 vbmp.CreateCompatibleBitmap(&dc,maxX,maxY);

 memDC.SelectObject(&vbmp);

 mBrush.CreateStockObject(WHITE_BRUSH);

 memDC.SelectObject(&mBrush);

 memDC.PatBlt(0,0,maxX,maxY,PATCOPY);

]

3. В обработчике сообщения WM_PAINT осуществить копирование содержимого виртуального окна физическое окно программы.

void CMainWin::OnPaint()

[CPaintDC dc(this);

 dc.BitBlt(0,0,maxX,maxY,&memDC,0,0,SRCCOPY);

]


22.06.2015; 09:38
хиты: 250
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь