2011-01-24 60 views
1

我想在多個文本框上實現TAB效果。在文本框中輸入一個值然後點擊回車鍵後,焦點應該自動移動到下一個文本框(與在文本框中按焦點的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

這應該完成你想要的:

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

感謝您的回答....抱歉回覆晚了..will實現這一點,並再次回來...謝謝 – linuxstack 2011-04-02 07:47:57