2011-01-24 20 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

関連する問題