// 获取下一个可以获取焦点的子控件 CControlBase* CDlgPopup::GetNextFocusableControl() { BOOL bStartSearch = FALSE; // 先按照焦点控件查找一次 for (int i = 0; i < (int)m_vecControl.size(); i++) { CControlBase* pControlBase = m_vecControl.at(i); if (pControlBase && pControlBase->GetVisible() && !pControlBase->GetDisable() && bStartSearch && pControlBase->IsTabStop()) { return pControlBase; }else if (pControlBase && (pControlBase == m_pFocusControl)) { bStartSearch = TRUE; } } // 再遍历子控件查找 if(m_pFocusControl == NULL) { bStartSearch = TRUE; } for (int i = 0; i < (int)m_vecControl.size(); i++) { CControlBase* pControlBase = m_vecControl.at(i); if(m_pControl == NULL) { m_pControl = pControlBase; } if (pControlBase && pControlBase->GetVisible() && !pControlBase->GetDisable() && bStartSearch && pControlBase->IsTabStop()) { return pControlBase; }else if (pControlBase && (pControlBase == m_pControl)) { // 查找子控件 pControlBase = pControlBase->GetNextFocusableControl(m_pFocusControl); if(pControlBase != NULL) { return pControlBase; } //bStartSearch = TRUE; } } return NULL; }