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"); }