processeventview.cpp
来自「深入浅出Visual C++入门进阶与应用实例 随书光盘 作者 何志丹」· C++ 代码 · 共 160 行
CPP
160 行
// ProcessEventView.cpp : implementation of the CProcessEventView class
//
#include "stdafx.h"
#include "ProcessEvent.h"
#include "ProcessEventDoc.h"
#include "ProcessEventView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CProcessEventView
IMPLEMENT_DYNCREATE(CProcessEventView, CView)
BEGIN_MESSAGE_MAP(CProcessEventView, CView)
//{{AFX_MSG_MAP(CProcessEventView)
ON_COMMAND(ID_PROCESS, OnProcess)
ON_COMMAND(ID_EVENT, OnEvent)
ON_WM_DESTROY()
ON_WM_TIMER()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CProcessEventView construction/destruction
CProcessEventView::CProcessEventView()
{
m_nXPos = 0 ;
m_uOffSet = 28 ;
}
CProcessEventView::~CProcessEventView()
{
}
BOOL CProcessEventView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CProcessEventView drawing
void CProcessEventView::OnDraw(CDC* pDC)
{
CProcessEventDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//m_nXPos是横坐标,50是纵坐标,第三个参数是输出字符串
pDC->TextOut(m_nXPos,50,"www.vcshare.net 欢迎你!");
}
/////////////////////////////////////////////////////////////////////////////
// CProcessEventView printing
BOOL CProcessEventView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CProcessEventView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CProcessEventView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CProcessEventView diagnostics
#ifdef _DEBUG
void CProcessEventView::AssertValid() const
{
CView::AssertValid();
}
void CProcessEventView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CProcessEventDoc* CProcessEventView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CProcessEventDoc)));
return (CProcessEventDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CProcessEventView message handlers
void CProcessEventView::AdjustXPos()
{
if(NULL == GetSafeHwnd())
return ;
CRect rClient;
GetClientRect(&rClient);//得到客户区大小
int nWidth = rClient.Width();//客户区的宽度
UINT uOffSet = m_uOffSet ;
if(nWidth < uOffSet + m_nXPos )
uOffSet -= nWidth ;//超过最右端,移动左边
m_nXPos += uOffSet ;
}
void CProcessEventView::OnProcess()
{
for(int i = 0 ; i < 100 ; i++ )//滚动100次
{
//调整横坐标
AdjustXPos();
//停一会,以免刷新过快
Sleep(500);
//刷新
Invalidate();
UpdateWindow();
}
}
void CProcessEventView::OnEvent()
{
m_uTimer = SetTimer(1,500,NULL);
}
void CProcessEventView::OnDestroy()
{
CView::OnDestroy();
if(0 != m_uTimer )
KillTimer(m_uTimer);//释放记数器
}
void CProcessEventView::OnTimer(UINT nIDEvent)
{
AdjustXPos();
Invalidate();
CView::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?