

virtual BOOL CreateCompatibleDC( CDC* pDC );
Возвращаемое значение
Отлично от нуля если функция успешна, иначе 0.
Параметры
pDC
Указатель на контекст устройства. Если pDC NULL функция создает контекст устройства памяти, который является совместимым с дисплеем системы.
Замечания
Создает контекст устройства памяти, который является совместимым с устройством, определенным pDC. Контекст устройства памяти - блок памяти, которая представляет поверхность отображения. Это может использоваться, чтобы готовить изображения в памяти перед копированием их к фактической поверхности устройства совместимого устройства.
Когда контекст устройства памяти создан, GDI автоматически выбирает одноцветный точечный рисунок для этого. GDI функции вывода могут использоваться с контекстом устройства памяти только, если точечный рисунок был создан и выбран в тот контекст.
Эта функция может только использоваться, чтобы создать совместимые контексты устройства для операции растра поддержки. Чтобы определять, поддерживает ли контекст устройства, растровые операции, посмотрите RC_BITBLT растровую возможность в функции CDC::GetDeviceCaps.
Пример
// Этот OnDraw () загружает точечный рисунок из ресурсов системы,
// Выравнивает по центру это в просмотре, и использует BitBlt()
// чтобы отрисовать точечный рисунок
void CBlat2View::OnDraw(CDC* pDC)
{
CBlat2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// Загрузите IDB_BITMAP1 из наших ресурсов
CBitmap bmp;
if (bmp.LoadBitmap(IDB_BITMAP1))
{
// Получите размер точечного рисунка
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
// Создать в оперативной памяти DC совместимый с
// экранным DC, который мы используем, чтобы рисовать
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
// Выберите точечный рисунок в в оперативной памяти DC
CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp);
// Найдите центральную точку для точечного рисунка в клиентской области
CRect rect;
GetClientRect(&rect);
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;
// Копировать биты с в оперативной памяти DC на -
// экран DC, чтобы фактически делать рисование. Используйте центральную точку
// что бы вычислили смещения.
pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
}
else
TRACE0("ERROR: Where's IDB_BITMAP1?\n");
}

