int CEnListCtrl::SetCurSel(int nIndex, bool bNotifyParent) { ASSERT (nIndex >= -1 && nIndex < GetItemCount()); int nCurSel, nRes; UINT nState, nMask; CRect rItem; nState = nMask = LVIS_SELECTED | LVIS_FOCUSED; nCurSel = GetFirstSel(); if (nCurSel != -1) { SetItemState(nCurSel, 0, nMask); Update(nCurSel); } SetItemState(nIndex, nState, nMask); nRes = Update(nIndex); // if we have the focus then update parent if (GetFocus() == this && bNotifyParent) NotifySelChange(); return nRes; }
void SListBoxEx::OnKeyDown( TCHAR nChar, UINT nRepCnt, UINT nFlags ) { int nNewSelItem = -1; SWindow *pOwner = GetOwner(); if (pOwner && (nChar == VK_ESCAPE)) { pOwner->SSendMessage(WM_KEYDOWN, nChar, MAKELONG(nFlags, nRepCnt)); return; } if (nChar == VK_DOWN && m_iSelItem < GetItemCount() - 1) nNewSelItem = m_iSelItem+1; else if (nChar == VK_UP && m_iSelItem > 0) nNewSelItem = m_iSelItem-1; else if (pOwner && nChar == VK_RETURN) nNewSelItem = m_iSelItem; else if(nChar == VK_PRIOR) { OnScroll(TRUE,SB_PAGEUP,0); }else if(nChar == VK_NEXT) { OnScroll(TRUE,SB_PAGEDOWN,0); } if(nNewSelItem!=-1) { EnsureVisible(nNewSelItem); NotifySelChange(m_iSelItem,nNewSelItem); } }
void CDuiListBox::OnLButtonUp(UINT nFlags,CPoint pt) { m_iHoverItem = HitTest(pt); if(m_iHoverItem!=m_iSelItem) NotifySelChange(m_iSelItem,m_iHoverItem); }
void CEnListCtrl::ClearAll() { if (GetItemCount()) SetMulSel(0, GetItemCount() - 1, FALSE); // if we have the focus then update parent if (GetFocus() == this) NotifySelChange(); }
void SListBox::OnLButtonUp(UINT nFlags,CPoint pt) { if(m_bHotTrack) { m_iHoverItem = HitTest(pt); if(m_iHoverItem!=m_iSelItem) NotifySelChange(m_iSelItem,m_iHoverItem); } SWindow::OnLButtonUp(nFlags,pt); }
void CEnListCtrl::SelectAll() { if (GetItemCount()) { SetMulSel(0, GetItemCount() - 1, TRUE); } // if we have the focus then update parent if (GetFocus() == this) { NotifySelChange(); } }
void CEnListCtrl::SetMulSel(int nIndexStart, int nIndexEnd, BOOL bSelect, BOOL bNotifyParent) { ASSERT (nIndexStart >= 0 && nIndexStart < GetItemCount() && nIndexEnd >= 0 && nIndexEnd < GetItemCount()); int nIndex; for (nIndex = nIndexStart; nIndex <= nIndexEnd; nIndex++) SetItemState(nIndex, bSelect ? LVIS_SELECTED : 0, LVIS_SELECTED); // if we have the focus then update parent if (GetFocus() == this && bNotifyParent) NotifySelChange(); }
LRESULT SListBoxEx::OnMouseEvent( UINT uMsg,WPARAM wParam,LPARAM lParam ) { LRESULT lRet=0; CPoint pt(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); if(uMsg==WM_LBUTTONUP && m_iHoverItem!=m_iSelItem) NotifySelChange(m_iSelItem,m_iHoverItem); if(m_pCapturedFrame) { CRect rcItem=m_pCapturedFrame->GetItemRect(); pt.Offset(-rcItem.TopLeft()); lRet = m_pCapturedFrame->DoFrameEvent(uMsg,wParam,MAKELPARAM(pt.x,pt.y)); } else { if(m_bFocusable && (uMsg==WM_LBUTTONDOWN || uMsg== WM_RBUTTONDOWN || uMsg==WM_LBUTTONDBLCLK)) SetFocus(); int iHover=HitTest(pt); if(iHover!=m_iHoverItem) { int nOldHover=m_iHoverItem; m_iHoverItem=iHover; if(nOldHover!=-1) { RedrawItem(nOldHover); m_arrItems[nOldHover]->DoFrameEvent(WM_MOUSELEAVE,0,0); } if(m_iHoverItem!=-1) { RedrawItem(m_iHoverItem); m_arrItems[m_iHoverItem]->DoFrameEvent(WM_MOUSEHOVER,wParam,MAKELPARAM(pt.x,pt.y)); } } if(uMsg==WM_LBUTTONDOWN && m_iSelItem!=-1 && m_iSelItem != m_iHoverItem ) {//选择一个新行的时候原有行失去焦点 m_arrItems[m_iSelItem]->GetFocusManager()->SetFocusedHwnd(0); } if(m_iHoverItem!=-1) { m_arrItems[m_iHoverItem]->DoFrameEvent(uMsg,wParam,MAKELPARAM(pt.x,pt.y)); } } return 0; }
void SListBox::OnKeyDown( TCHAR nChar, UINT nRepCnt, UINT nFlags ) { int nNewSelItem = -1; int iCurSel=m_iSelItem; if(m_bHotTrack && m_iHoverItem!=-1) iCurSel=m_iHoverItem; if (nChar == VK_DOWN && m_iSelItem < GetCount() - 1) nNewSelItem = iCurSel+1; else if (nChar == VK_UP && m_iSelItem > 0) nNewSelItem = iCurSel-1; if(nNewSelItem!=-1) { int iHover=m_iHoverItem; if(m_bHotTrack) m_iHoverItem=-1; EnsureVisible(nNewSelItem); NotifySelChange(m_iSelItem,nNewSelItem); if(iHover!=-1 && iHover != m_iSelItem && iHover != nNewSelItem) RedrawItem(iHover); } }
void CDuiListBox::OnKeyDown( TCHAR nChar, UINT nRepCnt, UINT nFlags ) { int nNewSelItem = -1; CDuiWindow *pOwner = GetOwner(); if (pOwner && (nChar == VK_ESCAPE)) { pOwner->DuiSendMessage(WM_KEYDOWN, nChar, MAKELONG(nFlags, nRepCnt)); return; } if (nChar == VK_DOWN && m_iSelItem < GetCount() - 1) nNewSelItem = m_iSelItem+1; else if (nChar == VK_UP && m_iSelItem > 0) nNewSelItem = m_iSelItem-1; else if (pOwner && nChar == VK_RETURN) nNewSelItem = m_iSelItem; if(nNewSelItem!=-1) { EnsureVisible(nNewSelItem); NotifySelChange(m_iSelItem,nNewSelItem, m_bHotTrack&&nChar!=VK_RETURN ? WM_MOUSEMOVE : WM_LBUTTONUP); } }