Подавление обработки по умолчанию сообщений CRichList
От: EugeneLed  
Дата: 04.09.05 12:56
Оценка:
Доброе время суток!
Есть проблема: я обрабатываю сообщение OnKeyUp класса CRichList. Обработка заключается в позиционировании курсора на записи, первая буква которой совпадает с нажатой клавишей, с последующим выделением записи. При нажатии на клавишу, перед выделением нужного элемента, курсор переходит на элемент, первый в списке. Подскажите, пожалуйста, как от этого избавиться?
Ниже я привожу фрагмент кода, который используется мной для выделения записи и позиционирования курсора:

void CFilelistPaneDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//...
                    ClearSelection();
                    int iNdex = pFilelist->GetIndexByFile(dwfileID);
                    m_wndList.EnsureVisible(iNdex);
                    CListCtrl& list = m_wndList.GetListCtrl();
                    list.SetFocus();
                    list.SetItemState(iNdex, LVIS_FOCUSED | LVIS_SELECTED, 0x000F);
//...
}

void CFilelistPaneDlg ClearSelection()
{
CRichListCtrl* wndList = GetRichList();
    CListCtrl& list = wndList->GetListCtrl();

    POSITION pos = list.GetFirstSelectedItemPosition();
    if (pos == NULL)
        TRACE0("No items were selected!\n");
    else
    {
        while (pos)
        {
            int nItem = list.GetNextSelectedItem(pos);
            list.SetItemState(nItem, 0, LVIS_SELECTED);
        }
    }
}


Заранее большое спасибо!
Вот, что я Вам всем скажу...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.