|
간단한 방법이 있어요
1. Form의 속성에서 KeyPreview 를 true로 설정하시구요
; Form위의 모든 Control의 Key이벤트를 먼저 Form에서 점검하겠다는 뜻입니다
2. Form의 OnKeyPress 이벤트에 아래와 같이 넣어주세요
void __fastcall TQH_MAIN::FormKeyPress(TObject *Sender, char &Key)
{
if (Key == VK_RETURN)
{
Key = 0; //입력된 Key를 무시하도록 하구
// 다음 tab으로
1) Perform(WM_NEXTDLGCTL, 0, 0);
2) SendMessage(Handle,WM_NEXTDLGCTL, 0, 0);
3) SelectNext(ActiveControl, true, true);
// 이전 tab으로
1) Perform(WM_NEXTDLGCTL, VK_SHIFT, 0);
2) SendMessage(Handle,WM_NEXTDLGCTL, VK_SHIFT, 0);
3) SelectNext(ActiveControl, false, true);
}
}
//---------------------------------------------------------------------------
위 1,2,3 번 모두 같은 의미입니다만 저렇게 쓸수 있다는 것입니다.
그럼
그럼
초보자 님이 쓰신 글 :
: 폼에서 작업을 하다가 엔터키를 치면 다음 입력창으로 포커스가 이동하도록 하고 싶은데요
:
: (다음 입력창으로 이동은 Tab키로 가능함)
:
: 컨트롤 마다 이벤트를 걸어서 다음 입력창으로 이동하도록 코딩하기엔 너무 번거롭고
:
: 메시지를 바꾸어 전달해서 엔터키를 탭키로 인식하게 하면 가능한데 함수 부분을 잘 모르겠습니다.
:
: 비쥬얼 C++에서는 메시지의 PreTranslateMessage 를 선택해서 다음과 기능추가를 해주면 됩니다.
:
:
: if(pMsg->message==WM_KEYDOWN && pMsg->wParam==13)
: {
: if(GetDlgItem(IDC_EXIT)->m_hWnd != pMsg->hwnd) pMsg->wParam=9;
: }
:
: return CDialog::PreTranslateMessage(pMsg);
:
: BC++ 빌더에서는 어떻게 해야 하는지 고수님들의 지도 부탁드립니다
|