📄 bottomview.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 + -