现在有Dialog A,B 
其中B是A的子窗体,镶嵌在A中。A,B各自都有一些button或者其他控件。默认的情况是:TAB键只能在A内部,或者B内部切换焦点。如何做到:
A,B之间的控键也能用TAB切换焦点?谢谢~

解决方案 »

  1.   

    你用ctrl+D,判断对话框A或者B的第一个控件和最后一个控件。
    当焦点在a最后一个控件时,那么下一个tab操作就setfocus到b的第一个控件上
    b到a同理
      

  2.   

    在PreTranslateMessage中截获tab键BOOL CMainDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )

    if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd)
    {
    switch( pMsg->wParam )
    {
    case VK_TAB:
    子对话框句柄.GetDlgItem(IDC_BUTTON1)->SetFocus();
    }
    }
    } return CDialog::PreTranslateMessage(pMsg);
    }以上代码为在主对话框中当焦点在最后一个控件IDC_EDIT1上时按tab键,则焦点转到子对话框的第一个控件IDC_BUTTON1上
      

  3.   

    在子对话框中用((CFatherDlg*)(CDialog*)GetParent())可以得到父对话框的指针
      

  4.   

    error C2065: 'CFatherDlg' : undeclared identifier???:
    msdn里面没有找到CFatherDlg需要什么.h或者.lib吗?
      

  5.   

    CFatherDlg就是你的主对话框的类也就是我的代码里面的CMainDlg