本人在一个m_pPrintDC上画上一些对象并重复贴到另一个pDC上;可是这个pDC预览有东西,打印出来却是空白的。请问为什么?及如何解决?void CRightUpView::OnDraw(CDC* pDC,int a_iSide)
{
int iRow,iCol; //行列ループの変数
CBrush cbTmp(RGB(255, 255, 255)); //刷子を色
CPoint cpTmp;
CRect crSheet,crSheetTmp; //印刷用のDC対象
CBitmap BmpPrint;
CBitmap *BmpOldPrint;
CDC DcPrint;
//対象用のDC対象
CBitmap BmpObject;
CBitmap *BmpOldObject;
CDC DcObject;
BCSheetType* pTmpPos;
int iHScrollPos = m_HScrollPos;
int iVScrollPos = m_VScrollPos;
double dScale = m_dScale; m_HScrollPos = 0;
m_VScrollPos = 0;
m_dScale = 0;
CBusinessCardDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// この場所にネイティブ データ用の描画コードを追加します。
pDC->SetMapMode(MM_LOMETRIC);
//メモリDCの実体となるビットマップを作成
BmpObject.CreateCompatibleBitmap(pDC, m_crClinetRect.right, m_crClinetRect.bottom);
DcObject.CreateCompatibleDC(pDC);
//指定されたデバイスコンテキスト
BmpOldObject = DcObject.SelectObject(&BmpObject);
m_DcObject = &DcObject;
m_DcObject->PatBlt(0,0,m_crClinetRect.right, m_crClinetRect.bottom,WHITENESS);
//指定された描画コード
DcObject.SetMapMode(MM_LOMETRIC);

//シート類型の対象
pTmpPos = (BCSheetType*)(m_plSheetType[m_pstLayout->usSheetType]);
crSheet.left = 0;
crSheet.right = (long)(pTmpPos->dSheetWidth * 10);
crSheet.top = 0;
crSheet.bottom = (-1) * (long)(pTmpPos->dSheetHeight * 10);

//メモリDCの実体となるビットマップを作成
crSheetTmp = crSheet;
pDC->SetMapMode(MM_LOMETRIC);
pDC->DPtoLP(&crSheetTmp);
pDC->SetMapMode(MM_LOMETRIC); BmpPrint.CreateCompatibleBitmap(pDC, crSheetTmp.right, crSheetTmp.bottom);
DcPrint.CreateCompatibleDC(pDC);
//メモリDCにビットマップを選択
BmpOldPrint = DcPrint.SelectObject(&BmpPrint);
m_pPrintDC = &DcPrint;
DcPrint.SetMapMode(MM_LOMETRIC);
m_pPrintDC->PatBlt(0,0,crSheet.right, crSheet.bottom, WHITENESS);

//白色区を描く
pDC->FillRect(&crSheet, &cbTmp);
pDC->MoveTo(crSheet.left, crSheet.top);
pDC->LineTo(crSheet.right, crSheet.top);
pDC->LineTo(crSheet.right, crSheet.bottom);
pDC->LineTo(crSheet.left, crSheet.bottom);
//对象描画函数
DrawObjects(a_iSide);
//指定された描画コード
for(iRow=0; iRow < pTmpPos->iMaxRow; iRow++){
for(iCol=0; iCol < pTmpPos->iMaxCol; iCol++){
cpTmp.x = (long)((pTmpPos->dLeftBlank + m_pstLayout->dEquipBlankLeft) * 10 + (pTmpPos->dSheetWidth + pTmpPos->dCowInterval) * 10 * iCol);
cpTmp.y = (long)((pTmpPos->dTopBlank + m_pstLayout->dEquipBlankTop) * (-10) + (pTmpPos->dSheetHeight + pTmpPos->dRowInterval) * (-10) * iRow);
//貼る範囲を計算する
pDC->BitBlt(cpTmp.x, cpTmp.y, crSheet.right, crSheet.bottom, m_pPrintDC, 0, 0, SRCCOPY);
}
} //メモリDCのビットマップを戻す
DcPrint.SelectObject(BmpOldPrint);
DcObject.SelectObject(BmpOldObject);
m_HScrollPos = iHScrollPos;
m_VScrollPos = iVScrollPos;
m_dScale = dScale;
}