void CDrawCheckbox::OnLbuttonUp(WPARAM wParam, LPARAM lParam) { if(m_nCtrlState == STATE_DISABLE) { return; } //ReleaseCapture(); POINT pt = {}; GetCursorPos(&pt); ScreenToClient(m_hWnd, &pt); if(PtInRegion(m_hCtrlRgn, pt.x, pt.y)) { // 控件区域内,设置鼠标跟踪并设置按钮为焦点状态 // 发送给父窗口点击消息 m_fTrackMouse = TRUE; m_nCtrlState = STATE_FOCUS; } else { // 控件移动区域外,取消鼠标跟踪并设置按钮为弹起状态 m_fTrackMouse = FALSE; m_nCtrlState = STATE_UP; } InvalidataCtrl(); }
void CDrawCheckbox::OnMouseMove(WPARAM wParam, LPARAM lParam) { // 按钮可用 if(m_nCtrlState != STATE_DISABLE) { POINT pt = {}; GetCursorPos(&pt); ScreenToClient(m_hWnd, &pt); if(PtInRegion(m_hCtrlRgn, pt.x, pt.y)) // 鼠标在控件区域内 { // 鼠标没有跟踪 if(!m_fTrackMouse) { // 跟踪鼠标离开,触发MouseLeave消息 TRACKMOUSEEVENT MouseEvent = {sizeof(TRACKMOUSEEVENT)}; MouseEvent.dwFlags = TME_LEAVE; MouseEvent.hwndTrack = m_hWnd; MouseEvent.dwHoverTime = 1000; TrackMouseEvent(&MouseEvent); // 设置鼠标被跟踪 m_fTrackMouse = TRUE; } // 按钮没有按下,则设置按钮状态为焦点 if(m_nCtrlState != STATE_DOWN) m_nCtrlState = STATE_FOCUS; } else // 移动到区域外,均直接处理为鼠标弹起 { m_nCtrlState = STATE_UP; } InvalidataCtrl(); } }
BOOL CDrawCheckbox::LightingCtrl(BOOL fLight) { if(m_pLightStateImg) { m_fLight = fLight; InvalidataCtrl(); return TRUE; } return FALSE; }
void CDrawCheckbox::OnMouseLeave(WPARAM wParam, LPARAM lParam) { // 鼠标离开,设置鼠标取消跟踪 m_fTrackMouse = FALSE; // 按钮可用,设置按钮为弹起状态 if(m_nCtrlState != STATE_DISABLE) { m_nCtrlState = STATE_UP; InvalidataCtrl(); } }
void COBSButton::EnableButton(bool fEnable) { if (fEnable) { m_nButtonState = STATE_UP; } else { m_nButtonState = STATE_DISABLE; } EnableWindow(m_hWnd, fEnable); InvalidataCtrl(); }
void CDrawCheckbox::EnableButton(BOOL fEnable) { if(fEnable) { m_nCtrlState = STATE_UP; } else { m_nCtrlState = STATE_DISABLE; } InvalidataCtrl(); }
void COBSButton::OnMouseMove(WPARAM wParam, LPARAM lParam) { if (!m_fTrackMouse) { TRACKMOUSEEVENT MouseEvent = { sizeof(TRACKMOUSEEVENT) }; MouseEvent.dwFlags = TME_LEAVE; MouseEvent.hwndTrack = m_hWnd; MouseEvent.dwHoverTime = 1000; TrackMouseEvent(&MouseEvent); m_fTrackMouse = TRUE; m_nButtonState = STATE_FOCUS; InvalidataCtrl(); } }
BOOL CDrawCheckbox::SetFont(HFONT HFont) { if (HFont == NULL) { return FALSE; } if (m_hFont != NULL) { SAFE_DELETE(m_hFont); } m_hFont = HFont; InvalidataCtrl(); return TRUE; }
void COBSButton::OnLbuttonUp(WPARAM wParam, LPARAM lParam) { if (m_nButtonState == STATE_DOWN) { ReleaseCapture(); POINT pt = {}; GetCursorPos(&pt); RECT rcWnd = {}; GetWindowRect(m_hWnd, &rcWnd); if (PtInRect(&rcWnd, pt)) { m_fTrackMouse = TRUE; m_nButtonState = STATE_FOCUS; SendMessage(GetParent(m_hWnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(m_hWnd), \ BN_CLICKED), (LPARAM)m_hWnd); } else { m_fTrackMouse = FALSE; m_nButtonState = STATE_UP; } InvalidataCtrl(); } }
void COBSButton::OnMouseLeave(WPARAM wParam, LPARAM lParam) { m_fTrackMouse = FALSE; m_nButtonState = STATE_UP; InvalidataCtrl(); }
void COBSButton::OnLbuttonDown(WPARAM wParam, LPARAM lParam) { SetCapture(m_hWnd); m_nButtonState = STATE_DOWN; InvalidataCtrl(); }
void CDrawCheckbox::SetColor(COLORREF crText) { m_colorText = crText; InvalidataCtrl(); }
void CDrawCheckbox::SetCheck(BOOL bCheck) { m_bCheck = bCheck; InvalidataCtrl(); }