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

📄 bottomview.cpp

📁 VC.net 的一些有用的技巧
💻 CPP
字号:
// BottomView.cpp : 实现文件
//

#include "stdafx.h"
#include "SplitWindow.h"
#include "BottomView.h"


// CBottomView

IMPLEMENT_DYNCREATE(CBottomView, CScrollView)

CBottomView::CBottomView()
: m_nHSBPos(0)
, m_nVSBPos(0)
{
}

CBottomView::~CBottomView()
{
}


BEGIN_MESSAGE_MAP(CBottomView, CScrollView)
	ON_WM_KEYDOWN()
	ON_WM_VSCROLL()
	ON_WM_HSCROLL()
END_MESSAGE_MAP()


// CBottomView 绘图

void CBottomView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	// TODO: 计算此视图的总大小
	m_sizeTotal.cx = m_sizeTotal.cy = 1000;
	m_sizePage.cx = m_sizePage.cy = 100;
	m_sizeLine.cx = m_sizeLine.cy = 10;
	SetScrollSizes(MM_TEXT, m_sizeTotal, m_sizePage, m_sizeLine);	
}

void CBottomView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: 在此添加绘制代码
	CBrush brush(RGB(0,255,0));
	CBrush* pOldbrush;
	pOldbrush = pDC->SelectObject(&brush);
	pDC->Rectangle(m_bottomrect);
	pDC->SelectObject(pOldbrush);
}


// CBottomView 诊断

#ifdef _DEBUG
void CBottomView::AssertValid() const
{
	CScrollView::AssertValid();
}

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


// CBottomView 消息处理程序

void CBottomView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/)
{
	// TODO: 在此添加专用代码和/或调用基类
	m_bottomrect = GetDocument()->m_docrect;
	Invalidate();
}

CSplitWindowDoc* CBottomView::GetDocument(void)
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSplitWindowDoc)));
	return (CSplitWindowDoc*)m_pDocument;
}

void CBottomView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	switch(nChar)
	{
	case VK_PRIOR:
		OnVScroll(SB_PAGEUP,0,NULL);
		break;
	case VK_NEXT:
		OnVScroll(SB_PAGEDOWN,0,NULL);
		break;
	case VK_HOME:
		OnHScroll(SB_PAGEUP,0,NULL);
		break;
	case VK_END:
		OnHScroll(SB_PAGEDOWN,0,NULL);
		break;
	case VK_UP:
		OnVScroll(SB_LINEUP,0,NULL);
		break;
	case VK_DOWN:
		OnVScroll(SB_LINEDOWN,0,NULL);
		break;
	case VK_LEFT:
		OnHScroll(SB_LINELEFT,0,NULL);
		break;
	case VK_RIGHT:
		OnHScroll(SB_LINERIGHT,0,NULL);
		break;
	}
	CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
}


void CBottomView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	int pos=0;
	switch(nSBCode)
	{
	case SB_LINEDOWN:
		pos+=m_sizeLine.cy;
		break;
	case SB_LINEUP:
		pos-=m_sizeLine.cy;
		break;
	case SB_PAGEDOWN:
		pos+=m_sizePage.cy;
		break;
	case SB_PAGEUP:
		pos-=m_sizePage.cx;
		break;
	case SB_THUMBTRACK:
	case SB_THUMBPOSITION:
		pos=nPos-m_nVSBPos;
		break;
	default:
		return;
	}
	if(pos==0)
	{
		return;
	}
	m_nVSBPos+=pos;
	if(m_nVSBPos<0)
	{
		m_nVSBPos=0;
	}
	if(m_nVSBPos>m_sizeTotal.cy)
	{
		m_nVSBPos=m_sizeTotal.cy;
	}
	SetScrollPos(SB_VERT,m_nVSBPos);   
	Invalidate();
	CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}

void CBottomView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	int pos=0;
	switch(nSBCode)
	{
		case SB_LINELEFT:
			pos-=m_sizeLine.cx;
			break;
		case SB_LINERIGHT:
			pos+=m_sizeLine.cx;
			break;
		case SB_PAGELEFT:
			pos-=m_sizePage.cx;
			break;
		case SB_PAGERIGHT:
			pos+=m_sizePage.cx;
			break;
		case SB_THUMBTRACK:
		case SB_THUMBPOSITION:
			pos=nPos-m_nHSBPos;
			break;
		default:
			return;
	}
	if(pos==0)
	{
		return;
	}
	m_nHSBPos+=pos;
	if(m_nHSBPos<0)
	{
		m_nHSBPos=0;
	}
	if(m_nHSBPos>m_sizeTotal.cx)
	{
		m_nHSBPos=m_sizeTotal.cx;
	}
	SetScrollPos(SB_HORZ,m_nHSBPos);
	Invalidate();
	CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
}

⌨️ 快捷键说明

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