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

📄 keyboardview.cpp

📁 VC程序设计技巧与实例(2)关于窗口和桌面系统、文件和系统操作、消息影射的原代码
💻 CPP
字号:
// KeyBoardView.cpp : implementation of the CKeyBoardView class
//

#include "stdafx.h"
#include "KeyBoard.h"

#include "KeyBoardDoc.h"
#include "KeyBoardView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardView
int position = 10;

IMPLEMENT_DYNCREATE(CKeyBoardView, CView)

BEGIN_MESSAGE_MAP(CKeyBoardView, CView)
	//{{AFX_MSG_MAP(CKeyBoardView)
	ON_WM_KEYDOWN()
	ON_WM_KEYUP()
	ON_WM_CHAR()
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardView construction/destruction

CKeyBoardView::CKeyBoardView()
{
	// TODO: add construction code here

}

CKeyBoardView::~CKeyBoardView()
{
}

BOOL CKeyBoardView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardView drawing

void CKeyBoardView::OnDraw(CDC* pDC)
{
	CKeyBoardDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardView printing

BOOL CKeyBoardView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CKeyBoardView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CKeyBoardView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardView diagnostics

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

void CKeyBoardView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CKeyBoardDoc* CKeyBoardView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CKeyBoardDoc)));
	return (CKeyBoardDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardView message handlers

void CKeyBoardView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	//参数nChar存放的是虚拟键码,仅仅由这个参数分不出字符的大小写
	CClientDC  dc(this);
	if (nChar == VK_CAPITAL)
	{
		dc.TextOut(100, 50, "Cap Lock键按下!");
	}
	CView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CKeyBoardView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CView::OnKeyUp(nChar, nRepCnt, nFlags);
}

void CKeyBoardView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	//参数nChar存放的是字符的ASCII码,能直接由这个参数分辨出大小写
	char str = ' ';
	CClientDC  dc(this);
	switch(nChar)	//捕捉键盘的字符消息
	{
	case 0x41:
		str = 'A';
		break;
	case 0x61:
		str = 'a';
		break;
	case 0x42:
		str = 'B';
		break;
	case 0x62:
		str = 'b';
		break;
	case 0x43:
		str = 'C';
		break;
	case 0x63:
		str = 'c';
		break;
	//... 
	case 0x58:
		str = 'X';
		break;
	case 0x59:
		str = 'Y';
		break;
	case 0x5A:
		str = 'Z';
		break;
	}
	if (str != ' ')
	{
		dc.TextOut(100+position, 100, str);
	}
	position += 10;
	CView::OnChar(nChar, nRepCnt, nFlags);
}

⌨️ 快捷键说明

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