コード例 #1
0
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();
}
コード例 #2
0
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();
    }
}
コード例 #3
0
BOOL CDrawCheckbox::LightingCtrl(BOOL fLight)
{
    if(m_pLightStateImg)
    {
        m_fLight = fLight;
        InvalidataCtrl();
        return TRUE;
    }
    return FALSE;
}
コード例 #4
0
void CDrawCheckbox::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
    //  鼠标离开,设置鼠标取消跟踪
    m_fTrackMouse = FALSE;

    //  按钮可用,设置按钮为弹起状态
    if(m_nCtrlState != STATE_DISABLE)
    {
        m_nCtrlState = STATE_UP;
        InvalidataCtrl();
    }
}
コード例 #5
0
void COBSButton::EnableButton(bool fEnable)
{
	if (fEnable)
	{
		m_nButtonState = STATE_UP;
	}
	else
	{
		m_nButtonState = STATE_DISABLE;
	}
	EnableWindow(m_hWnd, fEnable);
	InvalidataCtrl();
}
コード例 #6
0
void CDrawCheckbox::EnableButton(BOOL fEnable)
{
    if(fEnable)
    {
        m_nCtrlState = STATE_UP;
    }
    else
    {
        m_nCtrlState = STATE_DISABLE;
    }

    InvalidataCtrl();
}
コード例 #7
0
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();
	}
}
コード例 #8
0
BOOL CDrawCheckbox::SetFont(HFONT HFont)
{
    if (HFont == NULL)
    {
        return FALSE;
    }

    if (m_hFont != NULL)
    {
        SAFE_DELETE(m_hFont);
    } 

    m_hFont = HFont;
    InvalidataCtrl();
    return TRUE;
}
コード例 #9
0
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();
	}
}
コード例 #10
0
void COBSButton::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
	m_fTrackMouse = FALSE;
	m_nButtonState = STATE_UP;
	InvalidataCtrl();
}
コード例 #11
0
void COBSButton::OnLbuttonDown(WPARAM wParam, LPARAM lParam)
{
	SetCapture(m_hWnd);
	m_nButtonState = STATE_DOWN;
	InvalidataCtrl();
}
コード例 #12
0
void CDrawCheckbox::SetColor(COLORREF crText)
{
    m_colorText = crText;
    InvalidataCtrl();
}
コード例 #13
0
void CDrawCheckbox::SetCheck(BOOL bCheck)
{
	m_bCheck = bCheck;
	InvalidataCtrl();
}