Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Time
- MFC 예제
- 정보처리기사
- 별찍기
- 충무창업큐브
- 김성엽
- mfc 실습
- SSG
- linux
- C
- 도움말
- tips강좌
- 유료강좌
- C++
- 실습
- MyThread
- C언어
- 마이크로소프트
- Tipsware
- do it c
- 포트폴리오
- 정처기 독학
- MyTread
- 핵심 요약
- ListBox
- 미가공
- visual
- win32
- MFC
- mysql
Archives
- Today
- Total
History
[MFC] Edit컨트롤에서 tab키랑 Enter키 입력받는 방법 본문
728x90
반응형
Edit컨트롤을 다루다 보면 tab키랑 enter키를 입력받는 경우가 있는데 아무 예외처리를 하지 않으면 다른 컨트롤로 포커스를 빼앗기거나 프로그램이 IDOK를 만나 꺼지는 경우가 있다. 이러한 경우 PreTranslateMessage 가상함수에서 키보드 관련 이벤트 예외를 처리해줘야 한다. 아래 코드를 보면 WM_KEYDOWN을 사용해서 키보드가 눌렸을 때를 체크한다. 그리고 그 메시지가 VK_TAB(TAB키의 상수값이다.) 인지 확인한다. 마지막으로 현재 메시지의 핸들이 내가 선택한 Edit의 핸들과 같은지 확인하고, 조건문 안에서 원하는 처리를 해주면 된다. 난 들여쓰기 기능과 Enter 기능을 쓰고 싶어서 아래 코드처럼 작성했다.
BOOL CMFCCalenderDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_KEYDOWN&& pMsg->wParam==VK_TAB&& pMsg->hwnd== m_event_edit.m_hWnd){
m_event_edit.ReplaceSel(L"\t");
return 1;
}else if (pMsg->message == WM_KEYUP && pMsg->wParam == VK_TAB && pMsg->hwnd == m_event_edit.m_hWnd) {
return 1;
}else if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN && pMsg->hwnd == m_event_edit.m_hWnd){
m_event_edit.ReplaceSel(L"\r\n");
return 1;
}else if (pMsg->message == WM_KEYUP && pMsg->wParam == VK_TAB && pMsg->hwnd == m_event_edit.m_hWnd) {
return 1;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
728x90
반응형
'MFC > 개념 정리' 카테고리의 다른 글
[MFC]UpdataData() 함수에 대하여 (0) | 2023.09.24 |
---|---|
[MFC] SendMessage와 PostMessage의 각 특징 (0) | 2023.02.01 |
[MFC] WM_CTLCOLOR에서 Static, Edit 배경 설정 (0) | 2023.02.01 |
[MFC] CToolTipCtrl 사용법 (0) | 2023.01.02 |
[MFC] MAKELPARAM에 대해 (0) | 2022.12.31 |
Comments