Проблема с новым контролом CMFCShellListCtrl
От: alex6565  
Дата: 27.09.08 20:10
Оценка:
У него оказывается занят ItemData под свои собственные нужды!!
Т.е. я не могу использовать ни SetItemData() ни GetItemData().
А как тогда его кастомизировать, например для показа замтнейлов и т.д. ?

п...ц получается полный... Как бы это поэлегантнее решить ?
Re: Проблема с новым контролом CMFCShellListCtrl
От: Hawk Россия  
Дата: 08.10.08 09:56
Оценка:
Здравствуйте, alex6565, Вы писали:

A>А как тогда его кастомизировать, например для показа замтнейлов и т.д. ?


А что такое "замтнейл"?

A>п...ц получается полный... Как бы это поэлегантнее решить ?


Хранить item data в отдельном CArray или CMap?
Re: Проблема с новым контролом CMFCShellListCtrl
От: rus blood Россия  
Дата: 08.10.08 10:45
Оценка:
Здравствуйте, alex6565, Вы писали:

A>п...ц получается полный... Как бы это поэлегантнее решить ?


Стандартные методы SetItemData и GetItemData "работают" через сообщения LVM_GETITEM и LVM_SETITEM. Если этот контрол работает так же, можно перехватить эти сообщения, чтобы подменять указатели на сохраняемые данные. Т.е., в контроле ты сохраняешь указатели на свою структуру данных, в которых надо выделить место под указатель на "внешние" данные. В обработчиках LVM_GETITEM и LVM_SETITEM "прозрачно" меняешь указатель на "внешние" данные и указатель на свою структуру. Для непосредственного доступа к данным, реально сохраненным в контроле, используешь явный вызов DefWindowProc.
Имею скафандр — готов путешествовать!
Re[2]: Проблема с новым контролом CMFCShellListCtrl
От: alex6565  
Дата: 11.10.08 19:06
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, alex6565, Вы писали:


A>>п...ц получается полный... Как бы это поэлегантнее решить ?


RB>Стандартные методы SetItemData и GetItemData "работают" через сообщения LVM_GETITEM и LVM_SETITEM. Если этот контрол работает так же, можно перехватить эти сообщения, чтобы подменять указатели на сохраняемые данные. Т.е., в контроле ты сохраняешь указатели на свою структуру данных, в которых надо выделить место под указатель на "внешние" данные. В обработчиках LVM_GETITEM и LVM_SETITEM "прозрачно" меняешь указатель на "внешние" данные и указатель на свою структуру. Для непосредственного доступа к данным, реально сохраненным в контроле, используешь явный вызов DefWindowProc.


спасибо за совет.
Могет быть и так...
...ну да...
а еще InsertItem & DeleteItem перехватить, ибо они там этот ItemData создают и сотв. удаляют.
....
Пока что заменил их родной метод virtual EnumFiles() на свой, где и делаю типо "меняешь указатель на "внешние" данные и указатель на свою структуру" — — —

Что то кривизна, что это ...

ЗЫ
За невозможность использовать стандартные Get/SetItemData() надо отрывать руки, ноги и то что между ног.
BCG, бляха муха.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.