Есть такой кусок кода: Код (Text): mov eax,hParent mov tvinsert.[b]hParent,eax[/b] mov tvinsert.hInsertAfter,TVI_LAST mov tvinsert.item.imask,TVIF_TEXT mov tvinsert.item.pszText,[b]offset dv1[/b] invoke SendMessage,hwndTreeView,TVM_INSERTITEM,0,addr tvinsert то есть добавлять элемент в дерево, поскольку элементы добавляются и убираются динамически, немешает вынести вышеуказанный кусок в одну функцию и вызывать ее когда нужно. Этот кусок кода общий для всех элементов (кроме "жирных" моментов). Так вот проблема в том, что я немогу передать нужное значение для offset !!! вариант типа: Код (Text): invoke fun,x fun proc x:DWORD ... mov tvinsert.item.pszText,[b]offset x[/b] ... fun endp неработает. Как передать нужное значение для offset ???
x это параметр в стеке, доступ к которому осуществляется по положительному смещению от регистра ebp, который заранее неизвестен, а директиве offset нужно непосредственное значение
ну так да! Я о том и спрашиваю - как это лечить? Всмысле есть ли какие то обходние пути? Или для 100 элементов размещать по 8 одинаковых (почти) строчек кода и по другому никак?
offset убрать и будет работать, только х должен быть указатель на строку, так как в tvinsert.item.pszText должен храниться указатель на строку, а не указатель на переменную в которой хранится указатель на строку. надеюсь доступно объяснил
прогнал я, инструкций копирования из памяти в память нет, поэтому надо где-то так будет сделать Код (Text): mov eax, x mov tvinsert.item.pszText, eax
непойму, все сделал именно так, только теперь вылетать прога начинает. Когда нажимаю "добавление" тут же прога просто закрывается... Вдвойне непонятно потому, что все работает с offset добавил только эти две строчки и вылетает... Диагноз не подскажете?