티스토리 뷰

프로그래밍/MFC

MFC 키보드 문자메시지

에어버스 2016. 6. 18. 17:03

문자 메시지

아래 메시지와 같이 WM_CHAR 또는 WM_SYSCHAR 메시지를 문자 메시지라 한다.

 

R(VK_R) 키를 누른경우 메시지

WM_KEYDOWN
WM_CHAR
WM_KEYUP

Alt+R 키를 누른 경우

WM_SYSKEYDOWN
WM_SYSKEYDOWN
WM_SYSCHAR
WM_SYSKEYUP
WM_KEYUP

 

메시지핸들러

afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnsysChar(UINT nChar, UINT nRepCnt, UINT nFlags);

nChar : 키에 해당하는 문자코드 값을 가진다
nRepCnt : 키를 계속 누른 경우 1보다 큰 값을 가진다
nFlags : 키와 관련된 다양한 정보를 저장한다

 

입력한 문자를 화면에 출력해주는 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class CMFCApplication2View : public CView
{
private:
    CString m_str;
...
}
 
void CMFCApplication2View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    if (nChar == VK_RETURN)
    {
        m_str.AppendChar(nChar);
        Invalidate(TRUE); // WM_PAINT 메시지 발생 시켜 사각형을 다시 그린다.
    }
    CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
 
void CMFCApplication2View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    if (nChar >= 32) // ASCII문자 제외
    {
        m_str.AppendChar(nChar);
        Invalidate(TRUE);
    }
    CView::OnChar(nChar, nRepCnt, nFlags);
}
cs
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30