2011-01-24 2 views
1

여러 텍스트 상자에 TAB 효과를 구현하고 싶습니다. 텍스트 상자에 값을 입력 한 다음 Enter 키를 누르면 포커스가 자동으로 다음 텍스트 상자로 이동됩니다 (텍스트 상자에서 포커스가있는 Tab 키를 누를 때와 동일). 현재 내가를 PreTranslateMessage에서이 코드 조각()를 사용하는 것을 시도하고있다 :VC6-MFC에서 Enter 키를 누를 때의 TAB 효과

if ((pMsg->wParam == VK_RETURN)) 
{ 
    if(m_CeditCtrlLlaLatDegrees.GetFocus()) 
    { 
      keybd_event(VK_TAB,0x09,0,0); 
     // keybd_event(VK_TAB,0x09,KEYEVENTF_KEYUP,0); 

    } 
} 

은 위의 코드는 바로 다음 텍스트 상자에 다음 텍스트 상자 위에 초점을 밀어을 (즉 는 앞서 2 개 탭을 이동) (20) 텍스트 상자는 모두있다 CEdit에서 가져온 모든 숫자 값만 받아들입니다.

각 텍스트 상자의 ID는 어떻게 검색합니까? 나는 CEdit (컨트롤 변수)를 할당하고 각각의 텍스트 상자에 대한 ID를 액세스 한 다음 switch-case 문을 통해 어떤 텍스트 상자가 활성 상태인지 확인한 다음 SetFocus()를 바로 옆에있는 PreTranslateMessage()로 체크합니다. 그러나 이것조차도 작동하지 않습니다.

해결 방법을 제안하십시오. 제가 초보자이기 때문에 흐름/코드를 자세히 알려주십시오.

답변

3

이 당신이 원하는 것을 달성해야합니다이를 구현하고 다시 ... 덕분에 얻을 ..will 늦게 회신에 대한 답변

BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) 
{ 
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) 
    { 
     CWnd* pFocus = GetFocus(); 
     if (pFocus && pFocus->IsKindOf(RUNTIME_CLASS(CEdit))) 
     { 
      NextDlgCtrl(); 
      return TRUE; 
     } 
    } 


    return CDialog::PreTranslateMessage(pMsg); 
} 
+0

감사합니다 .... 죄송합니다 – linuxstack