Esempio n. 1
0
void CMainWnd::OnBtnPage1Sortord()			//播放列表排序方向,向下或向上
{

	SWindow *pDown = FindChildByName(L"sortord_down");
	SWindow *pUp = FindChildByName(L"sortord_up");
	if(pDown && pUp) 
	{
		if(!(pDown->IsVisible(FALSE)) && !(pUp->IsVisible(FALSE)))
			up_or_down = 0;
		else if(pDown->IsVisible(FALSE) && !(pUp->IsVisible(FALSE)))
			up_or_down = 1;
		else if(!(pDown->IsVisible(FALSE)) && pUp->IsVisible(FALSE))
			up_or_down = 2;
		else
			up_or_down = -1;
	}

	if(popularity_up_or_down)
	{
		switch(up_or_down)
		{
		case 0:
			pDown->SetVisible(TRUE, TRUE);
			pUp->SetVisible(FALSE, TRUE);
			up_or_down = 1;
			break;
		case 1:
			pDown->SetVisible(FALSE, TRUE);
			pUp->SetVisible(TRUE, TRUE);
			up_or_down = 2;
			break;
		case 2:
			pDown->SetVisible(FALSE, TRUE);
			pUp->SetVisible(FALSE, TRUE);
			up_or_down = 0;
		default:
			break;
		}
	}
	else
		switch(up_or_down)
	{
		case 1:
			pDown->SetVisible(FALSE, TRUE);
			pUp->SetVisible(TRUE, TRUE);
			up_or_down = 2;
			break;
		case 2:
			pDown->SetVisible(TRUE, TRUE);
			pUp->SetVisible(FALSE, TRUE);
			up_or_down = 1;
		default:
			break;
	}
}
Esempio n. 2
0
/******************************* 控制条 ***************************************************/
void CMainWnd::OnBtnTools()		// 工具箱
{
	SWindow * pBtn = FindChildByName(L"win_tools");
	if(pBtn) pBtn->SetVisible(!pBtn->IsVisible(TRUE),TRUE);
}
Esempio n. 3
0
void SwndContainerImpl::OnFrameMouseMove(UINT uFlag,CPoint pt)
{
    SWindow *pCapture=SWindowMgr::GetWindow(m_hCapture);
    if(pCapture)
    {//有窗口设置了鼠标捕获,不需要判断是否有TrackMouseEvent属性,也不需要判断客户区与非客户区的变化
        SWindow * pHover=pCapture->IsContainPoint(pt,FALSE)?pCapture:NULL;
        SWND hHover=pHover?pHover->GetSwnd():NULL;
        if(hHover!=m_hHover)
        {//检测鼠标是否在捕获窗口间移动
            SWindow *pOldHover=SWindowMgr::GetWindow(m_hHover);
            m_hHover=hHover;
            if(pOldHover)
            {
                if(m_bNcHover) pOldHover->SSendMessage(WM_NCMOUSELEAVE);
                pOldHover->SSendMessage(WM_MOUSELEAVE);
            }
            if(pHover && !(pHover->GetState()&WndState_Hover))    
            {
                if(m_bNcHover) pHover->SSendMessage(WM_NCMOUSEHOVER,uFlag,MAKELPARAM(pt.x,pt.y));
                pHover->SSendMessage(WM_MOUSEHOVER,uFlag,MAKELPARAM(pt.x,pt.y));
            }
        }
        pCapture->SSendMessage(m_bNcHover?WM_NCMOUSEMOVE:WM_MOUSEMOVE,uFlag,MAKELPARAM(pt.x,pt.y));
    }
    else
    {//没有设置鼠标捕获
        SWND hHover=SwndFromPoint(pt,FALSE);
        SWindow * pHover=SWindowMgr::GetWindow(hHover);
        if(m_hHover!=hHover)
        {//hover窗口发生了变化
            SWindow *pOldHover=SWindowMgr::GetWindow(m_hHover);
            m_hHover=hHover;
            if(pOldHover)
            {
                BOOL bLeave=TRUE;
                if(pOldHover->GetStyle().m_bTrackMouseEvent)
                {//对于有监视鼠标事件的窗口做特殊处理
                    bLeave = !pOldHover->IsContainPoint(pt,FALSE);
                }
                if(bLeave)
                {
                    if(m_bNcHover) pOldHover->SSendMessage(WM_NCMOUSELEAVE);
                    pOldHover->SSendMessage(WM_MOUSELEAVE);
                }
            }
            if(pHover && !pHover->IsDisabled(TRUE) && !(pHover->GetState() & WndState_Hover))
            {
                m_bNcHover=pHover->OnNcHitTest(pt);
                if(m_bNcHover) pHover->SSendMessage(WM_NCMOUSEHOVER,uFlag,MAKELPARAM(pt.x,pt.y));
                pHover->SSendMessage(WM_MOUSEHOVER,uFlag,MAKELPARAM(pt.x,pt.y));
            }
        }
        else if(pHover && !pHover->IsDisabled(TRUE))
        {//窗口内移动,检测客户区和非客户区的变化
            BOOL bNcHover=pHover->OnNcHitTest(pt);
            if(bNcHover!=m_bNcHover)
            {
                m_bNcHover=bNcHover;
                if(m_bNcHover)
                {
                    pHover->SSendMessage(WM_NCMOUSEHOVER,uFlag,MAKELPARAM(pt.x,pt.y));
                }
                else
                {
                    pHover->SSendMessage(WM_NCMOUSELEAVE);
                }
            }
        }
        if(pHover && !pHover->IsDisabled(TRUE))
            pHover->SSendMessage(m_bNcHover?WM_NCMOUSEMOVE:WM_MOUSEMOVE,uFlag,MAKELPARAM(pt.x,pt.y));
    }

    //处理trackMouseEvent属性
    SPOSITION pos = m_lstTrackMouseEvtWnd.GetHeadPosition();
    while(pos)
    {
        SWND swnd = m_lstTrackMouseEvtWnd.GetNext(pos);
        SWindow *pWnd = SWindowMgr::GetWindow(swnd);
        if(!pWnd) 
        {
            UnregisterTrackMouseEvent(swnd);
        }else if(pWnd->IsVisible(TRUE))
        {
            BOOL bInWnd = pWnd->IsContainPoint(pt,FALSE);
            if(bInWnd && !(pWnd->GetState() & WndState_Hover))
            {
                pWnd->SSendMessage(WM_MOUSEHOVER);
            }else if(!bInWnd && (pWnd->GetState() & WndState_Hover))
            {
                pWnd->SSendMessage(WM_MOUSELEAVE);
            }
        }

    }
}