Вводная
Дано SDI-приложение с вертикальным сплиттером. Слева CTreeView справа CListView. С CListView все ок, все добавляется выделяется удаляется, а вот с CListView беда. Я использую report view для него и при добавлениии элементов ничего не происходит (т.е. они не выводятся на экран). Уже все мозги поломал думать из-за чего Так что если кто, что знает — помогите plz.
Мой код на всяк случай...
CListCtrl& list = GetListCtrl();
list.ModifyStyle(0,LVS_REPORT,0);
list.InsertColumn(1,"Link",LVCFMT_LEFT,300);
list.InsertColumn(2,"Description",LVCFMT_LEFT,60);
int nIndex=list.InsertItem(1,"Hello");
list.SetItemText(nIndex,1,"zuzu");
Здравствуйте Crypto, Вы писали:
C>Здравствуйте Mazenrab, Вы писали:
M>>CListCtrl& list = GetListCtrl(); M>>list.ModifyStyle(0,LVS_REPORT,0);
C>А если эту строчку поменять на: C>list.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
C>
Здравствуйте Crypto, Вы писали:
C>Здравствуйте Mazenrab, Вы писали:
M>>Никаких изменений в поведении....
C>Э...., а чего итемы и колонки с ненулевого индекса добавляются, а?
C>Сори, что раньше не увидел.
Гм... Это в принципе по моему не важно, но я пробовал менять — ничего т.е. все как прежде...
Да! На всякий случай...я вставляю строки в OnInitialUpdate() вьюшника — это не может повлиять? Хотя я и в других местах пробовал — не помогает
Здравствуйте Mazenrab, Вы писали:
M>Гм... Это в принципе по моему не важно, но я пробовал менять — ничего т.е. все как прежде...
M>Да! На всякий случай...я вставляю строки в OnInitialUpdate() вьюшника — это не может повлиять? Хотя я и в других местах пробовал — не помогает
Я сгенерил SDI, WindowsExplorer type.
Слева Дерево, справа ЛистКтрл .
(class CMazenrabView : public CListView)
Все изменения:
void CMazenrabView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
Здравствуйте Crypto, Вы писали:
C>Итем и колонка показываются. Не понимаю проблем. Может пришлете исходники? Или мне прислать эти?
Шлите (или отсылайте ) если не сложно: mazenrab@rambler.ru
C>На название класса не обижаться, ок?
Уж какие могут быть обиды
C>Я сгенерил SDI, WindowsExplorer type. C>Слева Дерево, справа ЛистКтрл . C>(class CMazenrabView : public CListView) C>Все изменения: C>void CMazenrabView::OnInitialUpdate() C>{ C> CListView::OnInitialUpdate();
C> CListCtrl& List = GetListCtrl();
C> List.ModifyStyle(LVS_TYPEMASK,LVS_REPORT); C> List.InsertColumn(0,"Col1",LVCFMT_LEFT,100); C> List.InsertItem(0,"Item1"); C>} C>Итем и колонка показываются. Не понимаю проблем. Может пришлете исходники? Или мне прислать эти?
Да елки-палки все работает....
Я сейчас сижу и пытаюсь понять в чем может быть трабл в моей проге
Я видел похожий вопрос в форуме гораздо раньше, но без ответа, так что хочется разобраться и выложить ответ...
Нашел в чем ошибка
Сообщаю для будущих поколений, чтоб не лажались
Итак привожу исходный код:
void CMyBookmarksView::OnInitialUpdate()
{
CView::OnInitialUpdate();
CListCtrl& list = GetListCtrl();
list.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
list.InsertColumn(1,"Link",LVCFMT_LEFT,300);
list.InsertColumn(2,"Description",LVCFMT_LEFT,60);
int nIndex=list.InsertItem(0,"Hello");
list.SetItemText(nIndex,1,"zuzu");
}
Заметили ошибку? Я не сразу. Короче чтобы на мое имя не посыпались проклятия жаждущих узнать ответ:
Я класс CMyBookmarksView генерил с помощью визарда от CView, а потом ручками переправил на CListView. Переправил, да не везде и уж точно не в OnInitialUpdate().
Правильный код:
void CMyBookmarksView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl& list = GetListCtrl();
list.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
list.InsertColumn(1,"Link",LVCFMT_LEFT,300);
list.InsertColumn(2,"Description",LVCFMT_LEFT,60);
int nIndex=list.InsertItem(0,"Hello");
list.SetItemText(nIndex,1,"zuzu");
}
Это ж надо так лажануться
Мораль
Ручки были есть и будут самым надежным инструментом программиста!
M>Заметили ошибку? Я не сразу. Короче чтобы на мое имя не посыпались проклятия жаждущих узнать ответ:
M>Я класс CMyBookmarksView генерил с помощью визарда от CView, а потом ручками переправил на CListView. Переправил, да не везде и уж точно не в OnInitialUpdate().
M> M>Правильный код:
M>
M>Заметили ошибку? Я не сразу. Короче чтобы на мое имя не посыпались проклятия жаждущих узнать ответ:
M>Я класс CMyBookmarksView генерил с помощью визарда от CView, а потом ручками переправил на CListView. Переправил, да не везде и уж точно не в OnInitialUpdate().
M> M>Правильный код:
M>
kmn>Скорер всего у тебя в PreCreateWindow в места kmn>CListView::PreCreateWindow(...) было написано CView::PreCreateWindow... kmn>OnInitialUpdate() здесь не причем