|
-
August 5th, 2005, 05:44 AM
#1
Problem with OnPrint in MFC
Greetings.
I have the problem that my OnPrint-methode don't print my Bitmap. It's shown in the printpreview, but not printed. I didn't see the fault, cause it goes well. Without changing anything now it isn't printing the picture.....
Thx for help
Puppet
_____________________________________________________________________________-
Here the source:
void COutput2::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
int nSavedDC = pDC->SaveDC();
// Fussnoten setzen
CFont* pOldFont = pDC->SelectObject(&m_fontSet);
pDC->SetTextAlign(TA_LEFT|TA_BASELINE);
pDC->TextOut(HORZ_MARGIN,VERT_MARGIN,srkChange.strStatus);
// Tree initialisieren
CTreeCtrl& Tree = m_TreeWnd.GetTreeCtrl();
HTREEITEM hItem=Tree.GetRootItem();
int maxItemCnt = (prntY-VERT_MARGIN*2)/m_nRowHeight-2;
// Position im Tree ermitteln
for(int pos=0; posm_nCurPage-1); pos++)
{
Tree.Expand(hItem,TVE_EXPAND);
hItem = Tree.GetNextItem(hItem,TVGN_NEXTVISIBLE);
}
// Bildquelle übergeben
bm.LoadBitmap(IDB_TREE_ICON);
BITMAP bmpInfo;
bm.GetBitmap(&bmpInfo);
// Speicher anlegen und alten sichern
CDC SpeicherDC;
SpeicherDC.CreateCompatibleDC(pDC);
CBitmap * oldbm = SpeicherDC.SelectObject(&bm);
int ItemCnt=0;
do
{
ItemCnt++;
// Position ermitteln
int x = HORZ_MARGIN+CalculateRootCnt(hItem)*20;
int y = VERT_MARGIN+m_nRowHeight*(ItemCnt+1);
// Bild ermitteln
int nImage, nSelectedImage;
Tree.GetItemImage(hItem,nImage,nSelectedImage);
// Bild transparent machen (rosa->weiss)
for(int picx=0;picx for(int picy=0;picy if(SpeicherDC.GetPixel(picx,picy)==RGB(255,0,255))
SpeicherDC.SetPixel(picx,picy,RGB(255,255,255));
// Bild an DC übergeben
pDC->BitBlt(x,y,bmpInfo.bmWidth/4,bmpInfo.bmHeight,
&SpeicherDC,bmpInfo.bmWidth/4*nImage,0,SRCCOPY);
// Tree-Text verarbeiten
CString text = Tree.GetItemText(hItem);
char tmp[256];
strcpy(tmp,text);
text = strtok( tmp, "\t" );
pDC->TextOut(x+25,y+BIAS,text);
text = strtok( NULL, "\t" );
pDC->TextOut(x+25+300,y+BIAS,text);
// Tree "aufklappen", nächstes Item
Tree.Expand(hItem,TVE_EXPAND);
hItem = Tree.GetNextItem(hItem,TVGN_NEXTVISIBLE);
}
while(hItem && ItemCnt
// Fusszeile -> Seitenanzahl
CString nPage;
nPage.Format(" %d",pInfo->m_nCurPage);
nPage = UINTtoCString(IDS_OUT_PAGE) + nPage;
pDC->TextOut(prntX/2-nPage.GetLength(),prntY-20,nPage);
// alte Objekte zurücksetzen
pDC->SelectObject(pOldFont);
//pDC->SelectObject(oldbm);
pDC->RestoreDC(nSavedDC);
}
//OnPrint///////////////////////////////////////////////////////////////////
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|