void IFWL_ComboList::OnProcessMessage(CFWL_Message* pMessage) { if (!pMessage) return; CFWL_MessageType dwHashCode = pMessage->GetClassID(); bool backDefault = true; if (dwHashCode == CFWL_MessageType::SetFocus || dwHashCode == CFWL_MessageType::KillFocus) { OnDropListFocusChanged(pMessage, dwHashCode == CFWL_MessageType::SetFocus); } else if (dwHashCode == CFWL_MessageType::Mouse) { CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); IFWL_ScrollBar* vertSB = GetVertScrollBar(); if (IsShowScrollBar(true) && vertSB) { CFX_RectF rect; vertSB->GetWidgetRect(rect); if (rect.Contains(pMsg->m_fx, pMsg->m_fy)) { pMsg->m_fx -= rect.left; pMsg->m_fy -= rect.top; vertSB->GetDelegate()->OnProcessMessage(pMsg); return; } } switch (pMsg->m_dwCmd) { case FWL_MouseCommand::Move: { backDefault = false; OnDropListMouseMove(pMsg); break; } case FWL_MouseCommand::LeftButtonDown: { backDefault = false; OnDropListLButtonDown(pMsg); break; } case FWL_MouseCommand::LeftButtonUp: { backDefault = false; OnDropListLButtonUp(pMsg); break; } default: break; } } else if (dwHashCode == CFWL_MessageType::Key) { backDefault = !OnDropListKey(static_cast<CFWL_MsgKey*>(pMessage)); } if (backDefault) IFWL_ListBox::OnProcessMessage(pMessage); }
void CFWL_ComboList::OnProcessMessage(CFWL_Message* pMessage) { if (!pMessage) return; CFWL_Message::Type type = pMessage->GetType(); bool backDefault = true; if (type == CFWL_Message::Type::SetFocus || type == CFWL_Message::Type::KillFocus) { OnDropListFocusChanged(pMessage, type == CFWL_Message::Type::SetFocus); } else if (type == CFWL_Message::Type::Mouse) { CFWL_MessageMouse* pMsg = static_cast<CFWL_MessageMouse*>(pMessage); CFWL_ScrollBar* vertSB = GetVertScrollBar(); if (IsShowScrollBar(true) && vertSB) { CFX_RectF rect = vertSB->GetWidgetRect(); if (rect.Contains(pMsg->m_pos)) { pMsg->m_pos -= rect.TopLeft(); vertSB->GetDelegate()->OnProcessMessage(pMsg); return; } } switch (pMsg->m_dwCmd) { case FWL_MouseCommand::Move: { backDefault = false; OnDropListMouseMove(pMsg); break; } case FWL_MouseCommand::LeftButtonDown: { backDefault = false; OnDropListLButtonDown(pMsg); break; } case FWL_MouseCommand::LeftButtonUp: { backDefault = false; OnDropListLButtonUp(pMsg); break; } default: break; } } else if (type == CFWL_Message::Type::Key) { backDefault = !OnDropListKey(static_cast<CFWL_MessageKey*>(pMessage)); } if (backDefault) CFWL_ListBox::OnProcessMessage(pMessage); }