У меня есть визуальное приложение C ++, которое использует производный класс CView для визуализации своего отображения, которое в основном состоит из трехмерных векторных данных и текста истинного типа. Используемый режим отображения - MM_ANISOTROPIC или MM_LOMETRIC. Я не могу использовать MM_TEXT, так как я использую один и тот же код для печати и печати данных, а также для преодоления проблем, связанных с пикселями на экране без квадратов.
Код для рисования в настоящее время рисуется непосредственно на экран с помощью метода CViews OnDraw и предоставленного объекта CDC. Я пытаюсь заменить это рисованием на растровое изображение и перетаскиванием растрового изображения на экран, используя комбинацию CreateCompatibleDC / CreateCompatibleBitmap, как описано в документации MS и других местах.
Проблема в том, что контроллеры домена несовместимы с режимами отображения, отличными от MM_TEXT, так что мое представление отображается вверх ногами и в неправильном масштабе. Расследование показывает следующее:
void CMyView::OnDraw(CDC *pDC)
{
CDC MyDC = CreateCompatibleDC(pDC); // Create a new memory DC;
int a = pDC->GetMapMode(),b = MyDC.GetMapMode();
'
'
'
}
a = 2
b = 1
Вызов SetMapMode на MyDC приводит к тому, что дисплей отображается полностью черным. Должен ли я переписать свой код в соответствии с MM_TEXT для рисования в растровое изображение, или есть другой способ преодоления этой проблемы.