我想创建一个树Treeview。用SendDlgItemMessage给树窗口发消息TVM_INSERTITEM创建了一个根节点。然后应该返回一个HTREEVIEW的类型句柄在寄存器eax中吧。
事实的确是这样的,我用eax中的值作为父节点的句柄可以创建子节点。
但是如果我用mov hParent,eax之后,再用hParent(dw型)无法创建子节点。会提示 invalid struction operands.
但我查了一些资料都说HTREEVIEW是dw类型。不得其解。
部分源码
.data
hParent dd ?
……
invoke SendDlgItemMessage,hWnd,TVW,TVM_INSERTITEM,0,addr tvinsert
mov hParent, eax
mov tvinsert.hParent, hParent (如果是 ‘mov tvinsert.hParent, eax’ 就可以)
……
------解决思路----------------------
HTREEITEM TreeView_InsertItem(
HWND hwndTV,
LPTVINSERTSTRUCT lpis
);
------解决思路----------------------
mov tvinsert.hParent, hParent
要求 2个 变量的 地址 , cpu 地址总线 只能 发一个变量的地址, 所以 2个 内存变量 不能在一条指令 中处理。
这就是 DMA (direct memory access)的 作用