⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 view2.cpp

📁 《面向对象程序设计实用教程》一书的源码
💻 CPP
字号:
// View2.cpp : implementation file
//

#include "stdafx.h"
#include "cge.h"
#include "View2.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CView2

IMPLEMENT_DYNCREATE(CView2, CView)

CView2::CView2()
{
}

CView2::~CView2()
{
}


BEGIN_MESSAGE_MAP(CView2, CView)
	//{{AFX_MSG_MAP(CView2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CView2 drawing
/* LL
void CView2::OnDraw(CDC* pDC)
{	
	HBRUSH m_hBrush;    
	m_hBrush = (HBRUSH) GetStockObject(WHITE_BRUSH);
	SelectObject(m_MemDC,m_hBrush);
	PatBlt(m_MemDC,0,0,m_nMaxX,m_nMaxY,PATCOPY);	   
	CCgeDoc* pDoc = (CCgeDoc* )GetDocument();

	if(!pDoc->blank)
	{
		DrawNo(pDoc, &m_MemDC);
	}
	   int d= pDoc->VPos;	  
	  // 将变化的部分从内存位图拷贝到屏幕上
	   rect.left = 0 + d;
	   rect.top = 0;
	   rect.right = m_nMaxX;
	   rect.bottom = m_nMaxY;       
	   pDC->BitBlt( 0,0,//rect.left, rect.top,
		20,600,  //取目的图和原图的宽和高(一样)
		//rect.Width(), rect.Height(),		
		&m_MemDC,  //原设备的描述表
		0, d,  //取原图的起点(宽和高同目的图一样)
		//rect.left, rect.top,
		SRCCOPY );	  
	  

	  //DrawNo(pDoc, pDC);

}*/
// LL
void CView2::OnDraw(CDC* pDC)
{	
	CCgeDoc* pDoc = (CCgeDoc* )GetDocument();
	CPen pen;
	pen.CreatePen(PS_SOLID, 1, RGB(255,0,0));	
   	CRect rect;
	GetClientRect(&rect);
	CString s,s0;
	int n0;
	n0 = pDoc->s[0].FindOneOf ("-");
	s0 = pDoc->s[0].Left (n0);
	n0 = atoi(s0) - 1;
	if(!pDoc->m_CMyLineList.IsEmpty())
	{
		CRect rect;
		GetClientRect(&rect);
		CString s;
		CPen* pold = pDC->SelectObject(&pen);
		pDC->SetBkColor(RGB(0,255,0));//青色
		for(int  i = pDoc->m_FirstBase; i <= rect.bottom; i+=pDoc->basline)
		{
			int n = pDoc->m_nCurChannel+1+(i - pDoc->m_FirstBase)/pDoc->basline;
			if(n <= pDoc->Num_Line)
			{
				pDC->MoveTo(rect.left,i);
				pDC->LineTo(rect.right, i);
				s.Format("%d", n0+pDoc->m_nCurChannel+1+(i - pDoc->m_FirstBase)/pDoc->basline);
				pDC->TextOut(rect.left+1, i+1,s);
			}
		}
		pDC->SelectObject(pold);
	}
	pen.DeleteObject();

}

/////////////////////////////////////////////////////////////////////////////
// CView2 diagnostics

#ifdef _DEBUG
void CView2::AssertValid() const
{
	CView::AssertValid();
}

void CView2::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CView2 message handlers
/*
int CView2::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	CCgeDoc* pDoc = (CCgeDoc* )GetDocument();	
	CDC* pDC = GetDC();
	CBitmap  m_Bitmap;
    HBRUSH m_hBrush;     
	
    m_nMaxX = 20;
	//m_nMaxX = pDoc->Num_Pointes;//GetSystemMetrics(SM_CXSCREEN);
	m_nMaxY =2500; 
		//GetSystemMetrics(SM_CYSCREEN);	
	
	//创建显示DC的兼容内存DC
    m_MemDC.CreateCompatibleDC(pDC);
	// 创建显示内存位图
	m_Bitmap.CreateCompatibleBitmap( pDC,
								m_nMaxX,
								m_nMaxY );
	// 将设备和位图产生关联
	CBitmap* pOldBitmap = m_MemDC.SelectObject( &m_Bitmap );

	//设色为白色
    m_hBrush = (HBRUSH) GetStockObject(WHITE_BRUSH);
	SelectObject(m_MemDC,m_hBrush);
	PatBlt(m_MemDC,0,0,m_nMaxX,m_nMaxY,PATCOPY);	   
    
   	
	return 0;
}
*/

/*
void CView2::DrawNo(CCgeDoc *pDoc, CDC *pDC)
{
     CPen* pOldPen;
	 CPen NewPen;
	 int i,No;
	 CString sb;
	 char str_No[10];
	 CPoint fpoint;
	 i = pDoc->m_No.Find("-");		 
	 sb = pDoc->m_No.Left(i);
	 No = atoi(sb);
	 NewPen.CreatePen(PS_SOLID,1,RGB(255,0,0)); 
	 pOldPen = pDC->SelectObject(&NewPen);	 
	 pDC->SetBkColor (16776960);//(RGB(0,0,255));青色
	 for (i=0;i<pDoc->Num_Line;i++)
	 {   fpoint.x = 20;
	     fpoint.y = i*pDoc->basline+pDoc->m_viewY0;

		 pDC->MoveTo(0,fpoint.y);
		 itoa(No,str_No,10);
	     pDC->TextOut(0,fpoint.y,str_No);
	     pDC->LineTo(fpoint.x,fpoint.y);		          
	     No++; 
	 }
     	 
	 pDC->SelectObject(pOldPen);  
}
*/
void CView2::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	//pen.CreatePen(PS_SOLID, 1, RGB(255,0,0));	
    CCgeDoc* pDoc = (CCgeDoc* )GetDocument();
    pDoc->view2 =(CView2*) this;	
}

BOOL CView2::DestroyWindow() 
{
//	pen.DeleteObject();
	return CView::DestroyWindow();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -