BEGIN_MESSAGE_MAP(CPractice3_3View, CView)
//{{AFX_MSG_MAP(CPractice3_3View) ON_WM_CHAR() ON_WM_KEYDOWN() ON_WM_LBUTTONDOWN()
...
//}}AFX_MSG_MAP
// Standard printing commands
...
END_MESSAGE_MAP()
...
CPractice3_3View::CPractice3_3View()
{
// TODO: add construction code here
m_ptNow.x = 0;
m_ptNow.y = 0;
}
...
void CPractice3_3View::OnDraw(CDC* pDC)
{
CPractice3_3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
// 윈도우에 문자열 출력
pDC->TextOut(m_ptNow.x, m_ptNow.y, m_strOutText);
}
... void CPractice3_3View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
// {
// 키보드로 입력된 문자를 문자열에 추가
int nCharIndex;
nCharIndex = m_strOutText.GetLength(); //입력된 데이터의 길이를 얻는다.
if(nChar == VK_BACK) //백스페이스가 눌린 경우
m_strOutText.Delete(nCharIndex-1, 1); //한번에 하나씩 지운다.
else //백스페이스 이외의 키가 눌린경우
m_strOutText += nChar; //키보드로 입력된 문자를 문자열에 추가
void CPractice3_3View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
// {
switch(nChar) // 가상키 코드 값에 대해
{
case VK_LEFT: // 왼쪽 화살표 키를 누를 때
m_ptNow.x--; // 왼쪽으로 1 이동
break;
case VK_RIGHT: // 오른쪽 화살표 키를 누를 때
m_ptNow.x++; // 오른쪽으로 1 이동
break;
case VK_UP: // 위쪽 화살표 키를 누를 때
m_ptNow.y--; // 위쪽으로 1 이동
break;
case VK_DOWN: // 아래쪽 화살표 키를 누를 때
m_ptNow.y++; // 아래쪽으로 1 이동
break;
case VK_PRIOR: // Pageup키를 누를 때
m_ptNow.y -= 50; // 위쪽으로 50 이동
break;
case VK_NEXT: // Pagedown키를 누를 때
m_ptNow.y += 50; // 아래쪽으로 50 이동
break;
case VK_HOME: // Home키를 누를 때
m_ptNow = CPoint(0, 0); // 처음위치로 이동
break;
}