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좌표를 설정




WM_CHAR
- 메시지 핸들러 함수에 코드 추가
- 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();






실행 결과