Добавление элементов в TreeView... проблемы...

Тема в разделе "WASM.BEGINNERS", создана пользователем sheef_ad, 21 янв 2010.

  1. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Есть такой кусок кода:
    Код (Text):
    1. mov eax,hParent
    2.     mov tvinsert.[b]hParent,eax[/b]
    3.     mov tvinsert.hInsertAfter,TVI_LAST
    4.     mov tvinsert.item.imask,TVIF_TEXT
    5.     mov tvinsert.item.pszText,[b]offset dv1[/b]
    6.     invoke SendMessage,hwndTreeView,TVM_INSERTITEM,0,addr tvinsert
    то есть добавлять элемент в дерево, поскольку элементы добавляются и убираются динамически, немешает вынести вышеуказанный кусок в одну функцию и вызывать ее когда нужно. Этот кусок кода общий для всех элементов (кроме "жирных" моментов). Так вот проблема в том, что я немогу передать нужное значение для offset !!!
    вариант типа:
    Код (Text):
    1. invoke fun,x
    2. fun proc x:DWORD
    3. ...
    4. mov tvinsert.item.pszText,[b]offset x[/b]
    5. ...
    6. fun endp
    неработает. Как передать нужное значение для offset ???
     
  2. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    x это параметр в стеке, доступ к которому осуществляется по положительному смещению от регистра ebp, который заранее неизвестен, а директиве offset нужно непосредственное значение
     
  3. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    ну так да! Я о том и спрашиваю - как это лечить? Всмысле есть ли какие то обходние пути? Или для 100 элементов размещать по 8 одинаковых (почти) строчек кода и по другому никак?
     
  4. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    offset убрать и будет работать, только х должен быть указатель на строку, так как в tvinsert.item.pszText должен храниться указатель на строку, а не указатель на переменную в которой хранится указатель на строку. надеюсь доступно объяснил :)
     
  5. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    прогнал я, инструкций копирования из памяти в память нет, поэтому надо где-то так будет сделать

    Код (Text):
    1. mov eax, x
    2. mov tvinsert.item.pszText, eax
     
  6. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    непойму, все сделал именно так, только теперь вылетать прога начинает. Когда нажимаю "добавление" тут же прога просто закрывается... Вдвойне непонятно потому, что все работает с offset добавил только эти две строчки и вылетает... Диагноз не подскажете?
     
  7. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    когда invoke fun, x вызываешь, то если x это метка начала строки то писать надо invoke fun, offset x
     
  8. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Ха! Заработало!!
    Спасибо мил человек!