General/C, C++, C#
[MFC] 문자열 입력, 이동, 이벤트 처리
croute
2010. 10. 13. 03:17
document class에 변수 추가
- CString m_strOutText;
view class에 변수 추가
- CPoint m_ptNow
- CPoint 클래스는 x, y값을 지정하는 클래스. POINT 구조체의 파생 클래스이다.
typedef struct tagPOINT {
LONG x;
LONG y;
} POINT;
m_ptNow.x 를 통해서 x좌표를 설정
m_ptNow.y 를 통해서 y좌표를 설정
- 메시지 핸들러 함수에 코드 추가
- OnChar
CPractice_3_3Doc* pDoc = GetDocument(); // 도큐먼트의 포인터 얻기
pDoc->m_strOutText += nChar; // 키보드로 입력된 문자를 문자열에 추가
Invalidate(false); // 화면 갱신
OnDraw(CDC *pDC)
- 코드 추가
pDC->TextOut(m_ptNow.x, m_ptNow.y, pDoc->m_strOutText);
WM_KEYDOWN
- 메시지 핸들러 함수에 코드 추가
- OnKeyDown
switch(nChar)
{
case VK_LEFT :
m_ptNow.x--;
break;
case VK_RIGHT :
m_ptNow.x++;
break;
case VK_UP :
m_ptNow.y--;
break;
case VK_DOWN :
m_ptNow.y++;
break;
case VK_PRIOR :
m_ptNow.y -= 50;
break;
case VK_NEXT :
m_ptNow.y += 50;
break;
case VK_HOME :
m_ptNow = CPoint(0, 0);
break;
}
if ( m_ptNow.x < 0 )
{
m_ptNow.x = 0;
AfxMessageBox("왼쪽으로 더이상 못감.");
}
if ( m_ptNow.y < 0 )
{
m_ptNow.y = 0;
AfxMessageBox("위쪽으로 더이상 못감.");
}
Invalidate();
실행 결과