BOOL CMenuItem::SetCheck(BOOL bCheck) { if(!m_bSelect) return false; if (m_bIsDisable) { return m_bDown; } BOOL bDown = m_bDown; m_bDown = bCheck; if(m_bDown) { m_enButtonState = enBSDown; } else { m_enButtonState = enBSNormal; } if(m_bDown != bDown) { // 如果组名非空,说明是radiobutton组,则刷新同一个组下面其他radiobtn if(!m_strGroupName.IsEmpty()) { ResetGroupCheck(); } UpdateControl(); } return m_bDown; }
// 设置选择状态 BOOL CDuiRadioButton::SetCheck(BOOL bCheck) { if (m_bIsDisable) { return m_bDown; } BOOL bDown = m_bDown; m_bDown = bCheck; if(m_bDown) { m_enButtonState = enBSDown; } else { m_enButtonState = enBSNormal; } if(m_bDown != bDown) { // 刷新同一个组下面其他radiobtn ResetGroupCheck(); UpdateControl(); } return m_bDown; }
BOOL CDuiRadioButton::OnControlLButtonUp(UINT nFlags, CPoint point) { enumButtonState buttonState = m_enButtonState; if (!m_bIsDisable) { if(m_rc.PtInRect(point)) { if(m_bMouseDown) { m_bDown = true; // 刷新同一个组下面其他radiobtn ResetGroupCheck(); SendMessage(MSG_BUTTON_UP, 0, 0); } if(m_bDown) { m_enButtonState = enBSHoverDown; } else { m_enButtonState = enBSHover; } } else { if(m_bDown) { m_enButtonState = enBSDown; } else { m_enButtonState = enBSNormal; } } } m_bMouseDown = false; if(buttonState != m_enButtonState) { UpdateControl(); return true; } return false; }
BOOL CMenuItem::OnControlLButtonUp(UINT nFlags, CPoint point) { bool bSend = false; BOOL bbDown = FALSE; bool bSelect = false; enumButtonState buttonState = m_enButtonState; if (!m_bIsDisable) { if(m_rc.PtInRect(point)) { if(m_bSelect) { if(m_bDown) { m_enButtonState = enBSHoverDown; } else { m_enButtonState = enBSHover; } if(m_bMouseDown) { // 如果组名非空,说明是radiobutton组,则刷新同一个组下面其他radiobtn if(!m_strGroupName.IsEmpty()) { m_bDown = true; ResetGroupCheck(); }else { m_bDown = !m_bDown; } bSend = false; bbDown = m_bDown; bSelect = true; } } else { m_enButtonState = enBSHover; bSend = true; } } else { if(m_bDown) { m_enButtonState = enBSDown; } else { m_enButtonState = enBSNormal; } } } m_bMouseDown = false; if(buttonState != m_enButtonState) { UpdateControl(); if(bSend) { SendMessage(MSG_BUTTON_UP, bbDown, bSelect); } return true; } return false; }
// 鼠标左键放开事件处理 BOOL CMenuItem::OnControlLButtonUp(UINT nFlags, CPoint point) { bool bSend = false; BOOL bbDown = FALSE; bool bSelect = false; enumButtonState buttonState = m_enButtonState; if (!m_bIsDisable) { if(m_rc.PtInRect(point)) { if(m_bSelect) { if(m_bDown) { m_enButtonState = enBSHoverDown; } else { m_enButtonState = enBSHover; } if(m_bMouseDown) { // 如果组名非空,说明是radiobutton组,则刷新同一个组下面其他radiobtn if(!m_strGroupName.IsEmpty()) { m_bDown = true; ResetGroupCheck(); }else { m_bDown = !m_bDown; } bSend = false; bbDown = m_bDown; bSelect = true; } } else { m_enButtonState = enBSHover; bSend = true; } } else { // 如果存在弹出菜单,并且鼠标不在弹出菜单范围内,则关闭父菜单 if(m_bIsPopup) { // 父菜单对象设置回自动关闭 CDuiMenu* pParentMenu = GetParentMenu(); if(pParentMenu) { pParentMenu->SetAutoClose(TRUE); pParentMenu->SetForegroundWindow(); } } if(m_bDown) { m_enButtonState = enBSDown; } else { m_enButtonState = enBSNormal; } } } m_bMouseDown = false; if(buttonState != m_enButtonState) { UpdateControl(); if(bSend) { SendMessage(MSG_BUTTON_UP, bbDown, bSelect); } return true; } return false; }