// 键盘事件处理 BOOL CControlBase::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { if(!m_bIsVisible || !m_bRresponse) return false; BOOL bRresponse = false; // 判断当前活动控件 if(m_pControl && m_pControl->OnKeyDown(nChar, nRepCnt, nFlags)) { return true; } // 控件自身是否可以处理此事件 if(OnControlKeyDown(nChar, nRepCnt, nFlags)) { return true; } // 此控件没有处理,则遍历子控件看是否能处理 for (size_t i = 0; i < m_vecControl.size(); i++) { CControlBase * pControlBase = m_vecControl.at(i); if (pControlBase && pControlBase->OnKeyDown(nChar, nRepCnt, nFlags)) { return true; } } return false; }
void CDlgPopup::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // 当前控件是否能处理 if (m_pControl && m_pControl->OnKeyDown(nChar, nRepCnt, nFlags)) { return; } // 子控件是否能处理 for (size_t i = 0; i < m_vecControl.size(); i++) { CControlBase * pControlBase = m_vecControl.at(i); if (pControlBase && pControlBase->OnKeyDown(nChar, nRepCnt, nFlags)) { return; } } if(OnControlKeyDown(nChar, nRepCnt, nFlags)) { return; } CWnd::OnKeyDown(nChar, nRepCnt, nFlags); }
// 键盘事件处理 BOOL CControlBase::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { if(!m_bIsVisible || !m_bRresponse) return false; BOOL bRresponse = false; // 判断当前活动控件 if(m_pControl && m_pControl->OnKeyDown(nChar, nRepCnt, nFlags)) { return true; } // 控件自身是否可以处理此事件 if(OnControlKeyDown(nChar, nRepCnt, nFlags)) { // 发送键盘按下DUI消息 if(m_bDuiMsgKeyDown) { SendMessage(MSG_KEY_DOWN, (WPARAM)nChar, (LPARAM)nFlags); } return true; } // 此控件没有处理,则遍历子控件看是否能处理 for (size_t i = 0; i < m_vecControl.size(); i++) { CControlBase * pControlBase = m_vecControl.at(i); if (pControlBase && pControlBase->OnKeyDown(nChar, nRepCnt, nFlags)) { // 发送键盘按下DUI消息 if(m_bDuiMsgKeyDown) { SendMessage(MSG_KEY_DOWN, (WPARAM)nChar, (LPARAM)nFlags); } return true; } } // 发送键盘按下DUI消息 if(m_bDuiMsgKeyDown) { SendMessage(MSG_KEY_DOWN, (WPARAM)nChar, (LPARAM)nFlags); } return false; }