Index
rozdzial 04 (21)
rozdzial 29 (21)
141 21 (10)
tip7 (21)
21 (201)
21 (36)
21 (394)
21 (142)
21 kaz (3)
dzien (21)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • materaceopole.pev.pl

  • [ Pobierz caÅ‚ość w formacie PDF ]
    .// Poniewa¿ skalowanie na ekranie ró¿ni siê od skalowania// w drukarce, ponownie oblicz wartoœæ w IfHeight.LOGFONT IfPrintFont;memcpy(&lfPrintFont, &m_logfont, sizeof(IfPrintFont));if (m_pPrintFont != NULL)delete m_pPrintFont; m_pPrintFont = new CFont; IfPrintFont.IfHeight = MulDiv(m_nPointSize,pDC->GetDeviceCaps(LOGPIXELSX), 720); m pPrintFont->CreateFont!ndirect(&lfPrintFont);// Pobieramy to znów, gdy¿ u¿ytkownik móg³ zmieniæ drukarkê // od czasu jej poprzedniego wybrania.CalcPageCount(pDC, plnfo);}void CHexView: :OnEndPrinting (CDC* pDC, CPrintlnfo* /*pInfo*/){delete m_pPrintFont; m_pPrintFont = NULL;}void CHexView: : OnViewFont ( ) {// Pozwolenie u¿ytkownikowi na zmianê decyzji co do czcionkiLOGFONT 1fCopy;memcpy (slfCopy, &m_logfont, sizeof (1fCopy) );// Wybranie czcionki w oknie dialogowym.CFontDialog dlg ( SlfCopy) ;dlg.m_cf.Flags |= CF_FORCEFONTEXIST|CF_FIXEDPITCHONLY;// Jeœli u¿ytkwonik wybierze czcionkê, utworzymy j¹// i umieœcimy w zmiennej sk³adowej do póŸniejszego// u¿ytku.if (dlg.DoModal () == IDOK) {CFont* pFontCopy = new CFont;if (pFontCopy->CreateFont!ndirect (&lfCopy) ){m_nPointSize = dlg.GetSize ( ) ; i f (m_pFont != NULL} delete m_pFont;m_pFont = pFontCopy;memcpy (&m_logf ont, &lfCopy, sizeof (1fCopy) ); Invalidate ( ) ;}else {delete pFontCopy;MessageBox(_T("Nie powiod³o siê stworzenie nowej" " czcionki!")};}}}void CHexView::OnPrepareDC(CDC* pDC, CPrintInfo* plnfo) {CScrollView::OnPrepareDC(pDC,pInfo);// Zapamiêtanie, czy jesteœmy w trakcie drukowania.if (plnfo == NULL)m_bPrinting = FALSE; else{// Jeœli drukujemy, sprawdzamy, od której linii pliku powinniœmy // zacz¹æ drukowanie.int nHeight = MeasureFontHeight(m_pPrintFont, pDC);m_nPrintLine = : :MulDiv(plnfo->m_nCurPage-1, m_nPageHeight,nHeight); m_bPrinting = TRUE;}}void CHexView::CalcPageCount(CDC* pDC, CPrintInfo* pInfo) {// Pobranie wskaŸnika do dokumentuCHexViewDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);// Pobranie szerokoœci i wysokoœci strony.// Pamiêtaj, ¿e fizyczna strona nie da siê zadrukowaæ w ca³oœci,// musimy wiêc odj¹æ wielkoœæ obszaru nie nadaj¹cego siê// do zadrukowania.m_nPageWidth = pDC->GetDeviceCaps(PHYSICALWIDTH)-2*(pDC->GetDeviceCaps(PHYSICALOFFSETX)); m_nPageHeight = pDC->GetDeviceCaps(PHYSICALHEIGHT)- 2*(pDC->GetDeviceCaps(PHYSICALOFFSETY));// Pobranie wysokoœci czcionki.// Obliczenie iloœci linii, jaka przy tej czcionce zmieœci siê// na stronie.int nHeight = MeasureFontHeight(m_pPrintFont, pDC) ;int nPages;nPages = (pDoc->m_lFileSize/16*nHeight + (m_nPageHeight-1)) /m_nPageHeight;// Przygotowanie struktury informacji o wydruku.p!nfo->SetMinPage (1); pInfo->SetMaxPage(nPages);return;}int CHexView::MeasureFontHeight(CFont* pFont, CDC* pDC) {// Jak wysoka jest dana czcionka w danym kontekœcie urz¹dzenia?CFont* pOldFont;pOldFont = pDC->SelectObject(pFont);CRect rectDummy;CString strRender = _T("1234567890ABCDEF- "); int nHeight = pDC->DrawText(strRender, -1, rectDummy,DT_TOP | DT_SINGLELINE | DT_CALCRECT); pDC->SelectObject(pOldFont);return nHeight;}PodsumowanieWiêkszoœæ tworzonych przez Ciebie aplikacji, korzystaj¹cych zarówno z MFC, jak i z Windows API, wymaga tworzenia jakichœ trwa³ych wyników pracy.Win32 API umo¿liwia zarz¹dzanie wydrukami poprzez konteksty urz¹dzeñ drukarek, podobnie jak w przypadku rysowania na ekranie - mimo ¿e pos³ugiwanie siê fizycznymi arkuszami papieru ró¿ni siê czasem od pracy na stronach na ekranie.Jak dowiedzia³eœ siê z tego rozdzia³u, w swoich aplikacjach mo¿esz obs³u¿yæ wydruk na dwa sposoby - poprzez wsparcie ze strony API lub poprzez wsparcie ze strony klas MFC.Jeœli skorzystasz ze wsparcia ze strony API, zwykle wykorzystasz funkcje Windows API, takie jak startDoc (), Enc³Doc (), StartPage (), EndPage () itd., razem z funkcjami takimi jak DeviceCapabilities () oraz GetDeviceCaps ().Jeœli do zarz¹dzania wydrukiem u¿yjesz MFC, ca³e zadanie staje siê nieco ³atwiejsze.MFC samodzielnie obs³uguje wiêkszoœæ procesów zwi¹zanych z drukowaniem, mo¿esz wiêc skupiæ siê na samym tworzeniu obrazu wydruku i umieszczeniu go na odpowiedniej stronie.Przes³oniêcie funkcji onPrint (), OnPreparePrinting (), OnDraw () i innych funkcji w swojej klasie widoku pozwala na ³atwe dodanie mo¿liwoœci wydruku do swojej aplikacji.Dziêki MFC mo¿esz tak¿e ³atwo dodaæ do wydruku w³asne nag³Ã³wki oraz stopki [ Pobierz caÅ‚ość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • aceton.keep.pl
  • 
    Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl.