Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListView, Помогите 
V
    Опции темы
Edik
Дата 21.9.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



в визуальном си я положил на диалоговую форму Control List . как его теперь наполнить содержимым в программе? я ползуюсь ListView_AddIcon но ничего не получаеться.
PM MAIL   Вверх
_hunter
Дата 21.9.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



что есть такое Control List
ето:
http://www.codeproject.com/listctrl/listctrldemo.asp
быть он?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Edik
Дата 21.9.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



Да, _hunter, это и есть он. Контрол лист. Но это прога для мфс визуал си, а мне надо для винапи. 
PM MAIL   Вверх
_hunter
Дата 21.9.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



значит открывай MSDN и ищи аналоги функцый. но основу можно почерпнуть и из той статьи. в частности из нее можно понять что для наполнения информацией  ListView_AddIcon не особо нужна (разве что ты картинки вставляеш...)


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Edik
Дата 21.9.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



Цитата

значит открывай MSDN...

да я уже пробовал с MSDN- ничего все равно не получаеться, и мне к тому же картинки нужно вставить.
PM MAIL   Вверх
_hunter
Дата 21.9.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



значит код показывай...
ты, кстати, картинки в какой столбец вставлять пытаешся?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Edik
Дата 21.9.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



ты занешь хунтер, я в этом вопросе большая лошара, только последних две недели взялся за си плюс плюс на визуальном си. код показываю. но код компилируеться, линкуеться без ошибок, лист контрол бокс как был так и есть в диалоговом окне, а иконок и подписей к ним нету. я всегда забываю всякие мелочи в этих вопросах и у меня часто коды компилируються и линкуютсья, но не работают. подскажи.
Код

HICON hIcon;
case WM_INITDIALOG :
    hControlList=GetDlgItem(hwnd, IDC_IMAGEL);

    himlSmall = ImageList_Create(16, 16, ILC_COLORDDB                    | ILC_MASK, 1, 0);
    himlLarge = ImageList_Create(32, 32, ILC_COLORDDB
            | ILC_MASK, 1, 0);

    hIcon = LoadIcon(hInst, (LPCTSTR)"IDI_ICON1");
    ImageList_AddIcon(himlSmall, hIcon);

    hIcon = LoadIcon(hInst, (LPCTSTR)"IDI_ICON1");
    ImageList_AddIcon(himlLarge, hIcon);

    ListView_SetImageList(hControlList, himlSmall, LVSIL_SMALL);
    ListView_SetImageList(hControlList, himlLarge, LVSIL_NORMAL);

    lvi.mask=LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
    lvi.iItem=0;
    lvi.iSubItem=0;
    lvi.iImage=1;
    strcpy(c,"My Item");
    lvi.pszText=c;
    ListView_InsertItem(hControlList, &lvi);
    

    //initialize the columns
    lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    lvColumn.fmt = LVCFMT_LEFT;
    lvColumn.cx = 120;
    for(i = 0; i < 5; i++)
       {
       lvColumn.pszText = szString[i];
       ListView_InsertColumn(hControlList, i, &lvColumn);
       }
 return TRUE ;

     

PM MAIL   Вверх
_hunter
Дата 22.9.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



столбцы, по идее, нужно инициализировать до добавления элементов...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Edik
Дата 22.9.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



Попробую, но не уверен, что что- то получиться. не могу вобще понять как он этот контрол лист устроен. вроде сначала ты создаешь как бы виртуальный контрол лист, а потом выводишь его на экран? как в случае создаеться хандлер для больших и маленьких иконк, а потом отображеться какой ты хочеш- для больших или для маленьких. а текст под иконками как инициализиорвать. если я хочу что бы все иконки были разными и текст под ними был разный. как это все сделать? может ты мне код подкинешь? или кто- то кто прочитает?
PM MAIL   Вверх
Edik
Дата 22.9.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



Во, паказую код который ты хунтер говорил. тоже перевариваеться без ошибок, выводит заголовок таблицы- но самих иконок нету, подписей к ним тоже нету.
Код

case WM_INITDIALOG :

//get handler of imagelist
hControlList=GetDlgItem(hwnd, IDC_IMAGEL);

//initialize the columns
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 120;
for(i = 0; i < 5; i++)
   {
   lvColumn.pszText = szString[i];
   ListView_InsertColumn(hControlList, i, &lvColumn);
   }

himlSmall = ImageList_Create(16, 16, ILC_COLORDDB | ILC_MASK, 1, 0);
himlLarge = ImageList_Create(32, 32, ILC_COLORDDB | ILC_MASK, 1, 0);

//set up the small image list
hIcon = LoadIcon(hInst, (LPCTSTR)"IDI_ICON1");
ImageList_AddIcon(himlSmall, hIcon);

//set up the large image list
hIcon = LoadIcon(hInst, (LPCTSTR)"IDI_ICON1");
ImageList_AddIcon(himlLarge, hIcon);
  
ListView_SetImageList(hControlList, himlSmall, LVSIL_SMALL);
ListView_SetImageList(hControlList, himlLarge, LVSIL_NORMAL);
    
lvi.mask=LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
lvi.iItem=0;
lvi.iSubItem=0;
lvi.iImage=1;
strcpy(c,"My Item");
lvi.pszText=c;
ListView_InsertItem(hControlList, &lvi);

return TRUE ;

PM MAIL   Вверх
Edik
Дата 23.9.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



даже вот этот вот участок кода не работает- ничего на экран не выводит.
Код

case WM_INITDIALOG :

    hControlList=GetDlgItem(hwnd, IDC_IMAGEL);

    memset(&lvi,0,sizeof(lvi));
    lvi.mask=LVIF_TEXT ;
    lvi.iItem=0;
    lvi.iSubItem=0;
    strcpy(c,"My Item");
    lvi.pszText=c;

    ListView_InsertItem(hControlList, &lvi);
    
return TRUE;

PM MAIL   Вверх
Earnest
Дата 25.9.2006, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Во первых, кто такая "с" и зачем, а во-вторых, что у тебя возвращает InsertItem? А также GetDlgItem?


--------------------
...
PM   Вверх
dumb
Дата 25.9.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



если в
Цитата(Edik @  23.9.2006,  13:47 Найти цитируемый пост)
вот этот вот участок кода

добавить
Цитата(_hunter @  22.9.2006,  10:37 Найти цитируемый пост)
столбцы, по идее, нужно инициализировать до добавления элементов... 

то все должно работать. если нет - тогда косяк в создании/получении ListView...
PM MAIL   Вверх
Edik
Дата 25.9.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



ага, рассказываю Эрнест, "с" это вроде как char который хранит мой текст Item, второе, я не знаю, что вобще должен возвращать InsertItem- вмысле -1 или что то другое? я на это счет посмотрю. так же я посмотрю, что возвращает GetDlgItem. ну вобщим- я ложу на форму диалога ControlList получаю его HWND через GetDlgItem и дальше с ним работаю. хорошо я напишу, что возвращает. а что может быть вобще, что оно не работает? хотя я пробовал и без "с"- но это ничего не меняет.
PM MAIL   Вверх
Edik
Дата 25.9.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

Репутация: нет
Всего: 1



Эрнест, рассказываю. hContrloList у меня возвращает 0x000007b0; hwnd равно 0x000007a8; причем я заметил уже не один раз, что когда сама прога запускаеться и в тот момент, когда на экране появляеться в заголовке таблицы "Hello" (как и должно быть), то в тот самый момент вроде бы появляеться какой- то один (по программе- один) итем. и сразу исчезает. а заголовок остаеться. MessageBox- ы не появляються. вот новый код с мессаже боксами.
Код


case WM_INITDIALOG :

hControlList=GetDlgItem(hwnd, IDC_IMAGEL);

lvc.mask    = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.fmt     = LVCFMT_LEFT;
lvc.cx      = 95;
lvc.pszText = "Hello"; 
ListView_InsertColumn(hControlList, 0, &lvc);

if (ListView_SetColumnWidth(hControlList, 0, LVSCW_AUTOSIZE_USEHEADER)==-1)
MessageBox(hwnd, "Error Set Column", "Error", MB_OK);

lvi.mask        = LVIF_TEXT | LVIF_STATE ;
lvi.state       = 0;
lvi.stateMask   = 0;
lvi.iItem       = 0;
lvi.iSubItem    = 0;
lvi.pszText     = "Text";
lvi.cchTextMax  = 10;

if (ListView_InsertItem(hControlList, &lvi)==-1)
MessageBox(hwnd, "Error Insert Item", "Error", MB_OK);

return TRUE ;


Добавлено @ 11:33 
а тебе Думб отвечаю- посмотри, я вставил колумны, но все равно - голяк.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.