Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CListCtrl и нулевой элемент

44K
27 января 2009 года
magfed
7 / / 12.01.2009
Доброго времени суток!

У меня такая смешная проблема.
У меня в диалоговом окне есть CListCtrl элемент. Вот как я его создаю:
Код:
BOOL CMyMainDlg::OnInitDialog(){
    CDialog::OnInitDialog();
   
    //------------Creating List Control---------//
    //Control rectangle
    CRect rect(m_iDirListLeft, m_iDirListTop, 320, 295);
    m_cDirList = new CListCtrl();
    m_cDirList->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS, rect, this, IDC_DIRSTRUCTLIST);
    if(m_cDirList == NULL)
        return FALSE;
    //Control columns
    LVCOLUMN col_info;
    col_info.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
    col_info.fmt = LVCFMT_LEFT;
    col_info.cx = 185;
    col_info.pszText = "Name";
    col_info.cchTextMax = 5;
    col_info.iSubItem = 0;
    int res=::SendMessage(m_cDirList->m_hWnd, LVM_INSERTCOLUMN, 0, (long)(&col_info));
    if(res == -1){
        delete m_cDirList;
        return FALSE;
    }
    col_info.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
    col_info.fmt = LVCFMT_RIGHT;
    col_info.pszText = "Size";
    col_info.cchTextMax = 5;
    col_info.cx = 104;
    col_info.iSubItem = 1;
    res=::SendMessage(m_cDirList->m_hWnd, LVM_INSERTCOLUMN, 1, (long)(&col_info));
    if(res==-1){
        delete m_cDirList;
        return FALSE;
    }
    //------------------------------------------//
   
    SetIcon(m_hIcon, TRUE);
    return TRUE;
}


Как видите это список с двумя колонками. Так вот проблема: я не могу добавить нулевой элемент в список. Когда я вызываю методы для вставки\удаления нулевого элемента (напр. InsertItem(0, ””) или DeleteItem(0)), они всегда возвращают FALSE. Пока что работает так: я добавляю элементы начиная с первого, а на месте нулевого в диалоге - пустота, но хотелось бы как то решить эту проблему.
Если нулевой элемент для чего-то зарезервирован, то может можно хотя бы его как-то спрятать, чтобы он не отображался?

Заранее благодарен.
1.8K
27 января 2009 года
CilCatblack
251 / / 20.09.2007
Добавляй текст в каждую колонку строки:):
Код:
...
CListCtrl m_List;
...
m_List.InsertColumn( 0, "Titul1", LVCFMT_LEFT,   115 );
m_List.InsertColumn( 1, "Titul2", LVCFMT_LEFT,   55 );
m_List.InsertColumn( 2, "Titul3", LVCFMT_LEFT,   75 );
...
//вствляем текст в колонку
d=m_List.InsertItem(LVIF_TEXT|LVIF_IMAGE,d,name,0,0,index_img,0L);
m_List.SetItemText(d, 0, name);//d-индекс записи в калонке
                                            //0-колонка
                                            //name-текст
...

May the force be with you:cool:
44K
27 января 2009 года
magfed
7 / / 12.01.2009
Да, спасибо!

Это мой прогон! На самом деле все работает, просто я думал, что InsertItem() возвращает 0 при неудаче, а оказываеться, он возвращает индекс! Вот это прогон! Да-а-а-а, надо внимательнее MSDN читать!

Спасибо за ответ, CilCatblack.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог