При предосмотре все отлично, а на принтере малоцвет (на лазерном — черный и белый, а на струйнике — синий, красный, белый)
void CPeopleFormView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
CCardPhotoDoc *pDoc = (CCardPhotoDoc *)GetDocument();
int iFirst = -1,
iLast = 0;
COnePeople *p=NULL;
for (int i=0; i<m_PrintArray.GetSize(); i++) {
p=(COnePeople *)m_PrintArray.GetAt(i);
if (iFirst==-1 && p->m_iPage == (int)pInfo->m_nCurPage)
iFirst=i;
if (p->m_iPage == (int)pInfo->m_nCurPage)
iLast=i;
}
CDC dc;
dc.CreateCompatibleDC(pDC);
for(i=iFirst;i<=iLast;i++) {
p=(COnePeople *)m_PrintArray.GetAt(i);
CDrawPage *pPage=pDoc->m_pDrawPageList->GetPageByID(p->m_iMaket);
ASSERT(pPage!=NULL);
CDrawPage page;
page.Duplicate(pPage);
page.SetRatio(pDC);
page.PreparePrint(p,&pDoc->m_listPeople,&g_dServer);
CBitmap bitmap,*pBitmap;
bitmap.CreateCompatibleBitmap(pDC,page.Width(),page.Height());
pBitmap=dc.SelectObject(&bitmap);//->DeleteObject();
page.DrawAll(&dc);
int x,y;//,xs,ys;
x=MulDiv(m_Mergins.left+p->m_iX+page.GetOriginXMM(),pDC->GetDeviceCaps(HORZRES),pDC->GetDeviceCaps(HORZSIZE)*100);
y=MulDiv(m_Mergins.top+p->m_iY+page.GetOriginYMM(),pDC->GetDeviceCaps(VERTRES),pDC->GetDeviceCaps(VERTSIZE)*100);
pDC->SetStretchBltMode(COLORONCOLOR);
pDC->BitBlt(x,y,page.Width(),page.Height(),&dc,0,0,SRCCOPY);
OnDraw(pDC);
dc.SelectObject(pBitmap);
bitmap.DeleteObject();
}
ReleaseDC(&dc);
}
Причем pDC->GetCurrentBitmap() дает двухцветный битмап, т.е. он там, видимо, при создании выбран (SelectObject), а другой битмап выбрать не получается...