Почему у меня фон дочернего окна становится черным после применения этого кода:
RECT Rect;
GetClientRect(&Rect);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap(pDC,Rect.right,Rect.bottom);
CBitmap *pOldBitmap=MemDC.SelectObject(&MemBitmap);
...............
//тут я рисую....
...............
pDC->BitBlt(0,0,Rect.right,Rect.bottom,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
Может я чего не дописываю?

Подскажите пожалуйста...
Здравствуйте, Mailin, Вы писали:
M>Почему у меня фон дочернего окна становится черным после применения этого кода:
M>M>RECT Rect;
M>GetClientRect(&Rect);
M>CDC MemDC;
M>MemDC.CreateCompatibleDC(pDC);
MemDC.SetMapMode(MM_TEXT); // возможно, не помешает
MemDC.SetBkMode(TRANSPARENT); // может этого не хватает ?
M>CBitmap MemBitmap;
M>MemBitmap.CreateCompatibleBitmap(pDC,Rect.right,Rect.bottom);
M>CBitmap *pOldBitmap=MemDC.SelectObject(&MemBitmap);
M>...............
M>//тут я рисую....
M>...............
pDC->>BitBlt(0,0,Rect.right,Rect.bottom,&MemDC,0,0,SRCCOPY);
M>MemDC.SelectObject(pOldBitmap);
M>MemBitmap.DeleteObject();
M>MemDC.DeleteDC();
M>
M>Может я чего не дописываю?
Подскажите пожалуйста...
Здравствуйте, Mailin, Вы писали:
M>Почему у меня фон дочернего окна становится черным после применения этого кода:
M>M>RECT Rect;
M>GetClientRect(&Rect);
M>CDC MemDC;
M>MemDC.CreateCompatibleDC(pDC);
M>CBitmap MemBitmap;
M>MemBitmap.CreateCompatibleBitmap(pDC,Rect.right,Rect.bottom);
M>CBitmap *pOldBitmap=MemDC.SelectObject(&MemBitmap);
M>...............
M>//тут я рисую....
M>...............
pDC->>BitBlt(0,0,Rect.right,Rect.bottom,&MemDC,0,0,SRCCOPY);
M>MemDC.SelectObject(pOldBitmap);
M>MemBitmap.DeleteObject();
M>MemDC.DeleteDC();
M>
M>Может я чего не дописываю?
Подскажите пожалуйста...
У Вас пустой (черный) MemDC после создания. Если Вы хотите сохранить предыдущее содержимое окна, скопируйте его из pDC.
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap(pDC,Rect.right,Rect.bottom);
CBitmap *pOldBitmap=MemDC.SelectObject(&MemBitmap);
MemDC.BitBlt(0,0,Rect.right,Rect.bottom,pDC,0,0,SRCCOPY);
...............
//тут я рисую....
...............
Здравствуйте, Аноним, Вы писали:
А>А>CDC MemDC;
А>MemDC.CreateCompatibleDC(pDC);
А>CBitmap MemBitmap;
А>MemBitmap.CreateCompatibleBitmap(pDC,Rect.right,Rect.bottom);
А>CBitmap *pOldBitmap=MemDC.SelectObject(&MemBitmap);
А>MemDC.BitBlt(0,0,Rect.right,Rect.bottom,pDC,0,0,SRCCOPY);
А>...............
А>//тут я рисую....
А>...............
А>
Спасибо, помогло. Только далее проблемы возникли... Ничего не выводится

У меня есть некая функция в которой записаны 4 массива координат newx[i],newy[i] newx1[i],newy1[i]. Если у меня нажата кнопка ОК на диалоге, то я вызываю перерисовку. Почему-то безрезультатно,конечно предыдущий код сожержится в OnDraw

. Может я рисую не правильно?
for (i=0;i<p;i++)
{
MemDC.MoveTo(newx[i],newy[i]);
MemDC.LineTo(newx1[i],newy1[i]);
}
Подскажите плиз...