Exemple #1
0
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;
}
Exemple #2
0
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);
    }
}
Exemple #3
0
void CDuiListBox::OnLButtonUp(UINT nFlags,CPoint pt)
{
    m_iHoverItem = HitTest(pt);

    if(m_iHoverItem!=m_iSelItem)
        NotifySelChange(m_iSelItem,m_iHoverItem);
}
Exemple #4
0
void CEnListCtrl::ClearAll()
{
	if (GetItemCount())
		SetMulSel(0, GetItemCount() - 1, FALSE);

	// if we have the focus then update parent 
	if (GetFocus() == this)
		NotifySelChange();
}
Exemple #5
0
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();
	}
}
Exemple #7
0
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();
}
Exemple #8
0
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;
}
Exemple #9
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);
    }
}
Exemple #10
0
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);
    }
}