www.pudn.com > vcppnet.rar > Ex06aView.cpp


// Ex06aView.cpp : implementation of the CEx06aView class 
// 
 
#include "stdafx.h" 
#include "Ex06a.h" 
 
#include "Ex06aDoc.h" 
#include "Ex06aView.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 
 
 
// CEx06aView 
 
IMPLEMENT_DYNCREATE(CEx06aView, CView) 
 
BEGIN_MESSAGE_MAP(CEx06aView, CView) 
END_MESSAGE_MAP() 
 
// CEx06aView construction/destruction 
 
CEx06aView::CEx06aView() 
{ 
	// TODO: add construction code here 
 
} 
 
CEx06aView::~CEx06aView() 
{ 
} 
 
BOOL CEx06aView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CView::PreCreateWindow(cs); 
} 
 
// CEx06aView drawing 
 
void CEx06aView::OnDraw(CDC* pDC) 
{ 
    int nPosition = 0; 
 
    for (int i = 6; i <= 24; i += 2) { 
        ShowFont(pDC, nPosition, i); 
    } 
    TRACE("LOGPIXELSX = %d, LOGPIXELSY = %d\n", 
          pDC->GetDeviceCaps(LOGPIXELSX), 
          pDC->GetDeviceCaps(LOGPIXELSY));  
    TRACE("HORZSIZE = %d, VERTSIZE = %d\n", 
           pDC->GetDeviceCaps(HORZSIZE), 
          pDC->GetDeviceCaps(VERTSIZE));  
    TRACE("HORZRES = %d, VERTRES = %d\n", 
          pDC->GetDeviceCaps(HORZRES), 
          pDC->GetDeviceCaps(VERTRES)); 
} 
 
 
// CEx06aView diagnostics 
 
#ifdef _DEBUG 
void CEx06aView::AssertValid() const 
{ 
	CView::AssertValid(); 
} 
 
void CEx06aView::Dump(CDumpContext& dc) const 
{ 
	CView::Dump(dc); 
} 
 
CEx06aDoc* CEx06aView::GetDocument() const // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx06aDoc))); 
	return (CEx06aDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
 
// CEx06aView message handlers 
 
void CEx06aView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{ 
    pDC->SetMapMode(MM_ANISOTROPIC); 
    pDC->SetWindowExt(1440, 1440); 
    pDC->SetViewportExt(pDC->GetDeviceCaps(LOGPIXELSX), 
                 pDC->GetDeviceCaps(LOGPIXELSY)); 
} 
 
void CEx06aView::ShowFont(CDC* pDC, int& nPos, int nPoints) 
{ 
    TEXTMETRIC tm; 
    CFont      fontText; 
    CString    strText; 
    CSize      sizeText; 
 
    fontText.CreateFont(-nPoints * 20, 0, 0, 0, 400, FALSE, FALSE, 0, 
                        ANSI_CHARSET, OUT_DEFAULT_PRECIS, 
                        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 
                        DEFAULT_PITCH | FF_SWISS, "Arial"); 
    CFont* pOldFont = (CFont*) pDC->SelectObject(&fontText); 
    pDC->GetTextMetrics(&tm); 
    TRACE("points = %d, tmHeight = %d, tmInternalLeading = %d," 
          " tmExternalLeading = %d\n", nPoints, tm.tmHeight, 
          tm.tmInternalLeading, tm.tmExternalLeading); 
    strText.Format("This is %d-point Arial", nPoints); 
    sizeText = pDC->GetTextExtent(strText); 
    TRACE("string width = %d, string height = %d\n", sizeText.cx, 
          sizeText.cy); 
    pDC->TextOut(0, nPos, strText); 
    pDC->SelectObject(pOldFont); 
    nPos += tm.tmHeight + tm.tmExternalLeading; 
}