C++ 按C+中的tab键时,将焦点从CIPAddressCtrl切换到另一个控件+;MFC

C++ 按C+中的tab键时,将焦点从CIPAddressCtrl切换到另一个控件+;MFC,c++,mfc,C++,Mfc,如何使用制表符从一个控件切换到另一个控件? 就像当用户在IP地址字段的结束位进行制表符时,焦点应该转移到下一个控件。 使用父控件访问的GetNextDlgTabItem返回当前CIPAddressCtrl的ID,而不是下一个控件的ID 这是适用于自定义编辑框的代码: CWnd *pWndCtrl = GetFocus(); CWnd* pParent = pWndCtrl->GetParent(); CWnd *pNext = pParent->GetNextDlgTabItem(p

如何使用制表符从一个控件切换到另一个控件? 就像当用户在IP地址字段的结束位进行制表符时,焦点应该转移到下一个控件。 使用父控件访问的GetNextDlgTabItem返回当前CIPAddressCtrl的ID,而不是下一个控件的ID

这是适用于自定义编辑框的代码:

CWnd *pWndCtrl = GetFocus();
CWnd* pParent = pWndCtrl->GetParent();
CWnd *pNext = pParent->GetNextDlgTabItem(pWndCtrl); 
pNext->SetFocus(); 

我找到了解决方案,GetParent()方法返回的是组控件的父ID,而不是所需的父对话框的父ID。 GetParent()->GetParent()提供正确的父Id

CWnd *pWndCtrl = GetFocus();
CWnd* pParent = pWndCtrl->GetParent()->GetParent();
CWnd *pNext = pParent->GetNextDlgTabItem(pWndCtrl); 
pNext->SetFocus();

CIPAddressCtrl是这样设计的,不要反对。我有另一个自定义控件,CustomIPAddressCtrl,它继承了CIPAddressCtrl。在我的自定义控件中是否有单独实现此功能的方法。这是否回答了您的问题?我提到过,但它只适用于CIPADRESCTRL中的制表符。但是我需要在CIPAddressCtrl内部以及各种CIPAddressCtrl和其他自定义控件之间进行制表。