Programming/MFC [에디트박스] 엔터 키 입력으로 개행할 시에 중복 입력 방지 푸어맨 2016. 12. 13. 09:53 BOOL CDevelopeNoteDlg::PreTranslateMessage(MSG* pMsg) { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다 const int EnterInputGap = 100; //100ms static int EnterTick = 0; int EnterGap; // ESC Key input if(pMsg->wParam == VK_ESCAPE) { return TRUE; } if(pMsg->wParam == VK_RETURN) { EnterGap = GetTickCount() - EnterTick; // 엔터 키가 EnterInputGap 시간 내에 연속으로 들어올 경우 if ( GetTickCount() - EnterTick < EnterInputGap ) { return TRUE; } if (GetDlgItem(IDC_EDIT4) == GetFocus()) { CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT4); int nLen = edit->GetWindowTextLength(); edit->SetSel( nLen, nLen ); edit->ReplaceSel( _T("\r\n") ); } else if (GetDlgItem(IDC_EDIT5) == GetFocus()) { CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT5); int nLen = edit->GetWindowTextLength(); edit->SetSel( nLen, nLen ); edit->ReplaceSel( _T("\r\n") ); } else if (GetDlgItem(IDC_EDIT6) == GetFocus()) { CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT6); int nLen = edit->GetWindowTextLength(); edit->SetSel( nLen, nLen ); edit->ReplaceSel( _T("\r\n") ); } else if (GetDlgItem(IDC_EDIT7) == GetFocus()) { CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT7); int nLen = edit->GetWindowTextLength(); edit->SetSel( nLen, nLen ); edit->ReplaceSel( _T("\r\n") ); } else if (GetDlgItem(IDC_EDIT8) == GetFocus()) { CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT8); int nLen = edit->GetWindowTextLength(); edit->SetSel( nLen, nLen ); edit->ReplaceSel( _T("\r\n") ); } else if (GetDlgItem(IDC_EDIT9) == GetFocus()) { CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT9); int nLen = edit->GetWindowTextLength(); edit->SetSel( nLen, nLen ); edit->ReplaceSel( _T("\r\n") ); } EnterTick = GetTickCount(); return TRUE; } return CDialogEx::PreTranslateMessage(pMsg); }