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; } }
/******************************* 控制条 ***************************************************/ void CMainWnd::OnBtnTools() // 工具箱 { SWindow * pBtn = FindChildByName(L"win_tools"); if(pBtn) pBtn->SetVisible(!pBtn->IsVisible(TRUE),TRUE); }
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); } } } }