Работа с ListControl(ListView) в Visual Studio через сообщен
От: YuriyRus  
Дата: 29.08.07 09:45
Оценка:
Здравствуйте...
Возникла необходимость поработать с ListControl в visual studio 2005 через CallBack -функию, соотв. с использованием сообщений...
Но почитав MSDN, изучив соответствующие структуры для добавления колонок и элементов, просмотрев все сообщения данного контрола, я потратил кучу времени на то, чтобы правильно создать ListControl (в виде Report) с 3 колонками и добавить в него элементы, но успеха в этом, мягко говоря, "геморойном" занятии не достиг...
Может, кто-нить уже сталкивался с подомной задачей и успешно её решил?
Основные вопросы:
1. Как правильно создать именно 3 колонки? А то я используя LVM_INSERTCOLUMN сообщение, их создал, но остётся ещё одна (дефаултвская) и с ней ничего не зделаешь ни удалишь, при помощи LVM_SETCOLUMN собщения ни отредактируешь...
2. Как правильно описать LVITEM — структуру для добавления элемента в список подобного вида при помрщи LVM_INSERTITEM сообщения? Мне нужно, чтобы опр. текст был в опр колонке...
Заранее большое спасибо всем, кто примет участие в обсуждении..

29.08.07 13:58: Перенесено модератором из 'Пользовательский интерфейс: проектирование, usability' — Хитрик Денис
Re: Работа с ListControl(ListView) в Visual Studio через соо
От: programmater  
Дата: 30.08.07 10:39
Оценка:
Здравствуйте, YuriyRus, Вы писали:

YR>Здравствуйте...

[кусь]
YR>Основные вопросы:
YR>1. Как правильно создать именно 3 колонки? А то я используя LVM_INSERTCOLUMN сообщение, их создал, но остётся ещё одна (дефаултвская) и с ней ничего не зделаешь ни удалишь, при помощи LVM_SETCOLUMN собщения ни отредактируешь...
Это нормально. Это фиктивная колонка. Ничего сделать с ней нельзя. В том числе и установить значения полей. ее задача — исключительно заполнять пустое место в контроле. Если растянуть предыдущие колонки на всю ширину контрола, то последняя колонка пропадет и скрол внизу не появится (что говорит о том, что реально этой колонки нет). Поэтому как вариант — используй стиль LVS_NOCOLUMNHEADER (по-моему выставляется в редакторе ресурсов) и правильно рассчитывай ширину твоих трех колонок. Если же обязательно нужно дать юзеру возможность изменять ширишу колонок — ну извини, иногда будет вылазить эта "четвертая колонка" . Конечно и в этом случае проблему можно решить, но это уже задача для настоящих джедаев .
YR>2. Как правильно описать LVITEM — структуру для добавления элемента в список подобного вида при помрщи LVM_INSERTITEM сообщения? Мне нужно, чтобы опр. текст был в опр колонке...
А какие проблемы? Все нормально там заполняется . Единственное, с помощью LVM_INSERTITEM ты можешь установить текст только в первой колонке. Поэтому для сообщения LVM_INSERTITEM поле iSubItem обязано быть 0. Для установки текста в других колонках используй сообщение LVM_SETITEM или LVM_SETITEMTEXT. А так все там просто. Разберись, правильно ли ты выставляешь поле маски (mask) и все должно заработать. У меня работает .
YR>Заранее большое спасибо всем, кто примет участие в обсуждении..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.