-
-
[求助]汇编TREEVIEW如何遍历节点名字跟要找的文字做比较,从而得到父节点句柄?
-
发表于: 2013-8-24 02:14 4116
-
代码如下:
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_GETCOUNT,0,0;得到TREEVIEW里所有节点的数量
mov @dwCounter,eax
.if @dwCounter==NULL ;如果节点数为空,那么不查找直接创建父节点和子节点
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('一个节点都没有的时候'),MB_OK
mov tvi.hParent,NULL
mov tvi.hInsertAfter,TVI_ROOT
mov tvi.item.imask,TVIF_TEXT
mov tvi.item.pszText,offset @stSession.Login.szUserName
mov tvi.item.iImage,0
mov tvi.item.iSelectedImage,0
mov tvi.item.lParam,0
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
mov tvi.hParent,eax
mov tvi.hInsertAfter,TVI_LAST
mov tvi.item.pszText,offset @stSession.MsgUp.szContent
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
.elseif
mov eax,0
mov @hehe,eax
.while @dwCounter;否则开始循环遍历父节点查找跟需要找的文字相同的父节点
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('开始遍历根节点'),MB_OK
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,LVM_GETNEXTITEM,TVGN_FIRSTVISIBLE,@dwCounter
mov nihaohaoni,eax
dec @dwCounter
INC @hehe
mov eax,nihaohaoni
mov @tvi.hItem, eax
mov @tvi.imask, TVIF_PARAM or TVIF_TEXT
lea eax, @szItem1
mov @tvi.pszText, eax
mov @tvi.cchTextMax, sizeof @szItem1
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_GETITEM,0,addr @tvi
;invoke MessageBox,hWinMain, CTEXT('读到的根节点名字'), addr @szItem1, MB_OK
invoke MessageBox,hWinMain, addr @stSession.Login.szUserName , addr @szItem1, MB_OK
invoke lstrcmp,addr @szItem1,addr @stSession.Login.szUserName ;比较查找到的节点名字跟要找的文字是否一样
.if eax==0
mov eax,nihaohaoni
mov tvi.hParent,eax
mov tvi.hInsertAfter,TVI_LAST
mov tvi.item.pszText,offset @stSession.MsgUp.szContent
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('有这个根节点的时候'),MB_OK
jmp tiaochu
.elseif
.endif
.endw
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('没有这个根节点,创建这个根节点'),MB_OK
mov tvi.hParent,NULL
mov tvi.hInsertAfter,TVI_ROOT
mov tvi.item.imask,TVIF_TEXT
mov tvi.item.pszText,offset @stSession.Login.szUserName
mov tvi.item.iImage,0
mov tvi.item.iSelectedImage,0
mov tvi.item.lParam,0
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
mov tvi.hParent,eax
mov tvi.hInsertAfter,TVI_LAST
mov tvi.item.pszText,offset @stSession.MsgUp.szContent
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
.endif
tiaochu:
.endif
以上代码是程序的一部分,想要做的就是遍历TREEVIEW通过节点名字跟输入的文字做比较,如果相同那么就查找到了某一个节点,然后往这个节点力插入东西,请问汇编如何遍历TREELIST查找某一个父节点,然后往这个父节点力插东西?上面的代码错在哪里?
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_GETCOUNT,0,0;得到TREEVIEW里所有节点的数量
mov @dwCounter,eax
.if @dwCounter==NULL ;如果节点数为空,那么不查找直接创建父节点和子节点
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('一个节点都没有的时候'),MB_OK
mov tvi.hParent,NULL
mov tvi.hInsertAfter,TVI_ROOT
mov tvi.item.imask,TVIF_TEXT
mov tvi.item.pszText,offset @stSession.Login.szUserName
mov tvi.item.iImage,0
mov tvi.item.iSelectedImage,0
mov tvi.item.lParam,0
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
mov tvi.hParent,eax
mov tvi.hInsertAfter,TVI_LAST
mov tvi.item.pszText,offset @stSession.MsgUp.szContent
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
.elseif
mov eax,0
mov @hehe,eax
.while @dwCounter;否则开始循环遍历父节点查找跟需要找的文字相同的父节点
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('开始遍历根节点'),MB_OK
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,LVM_GETNEXTITEM,TVGN_FIRSTVISIBLE,@dwCounter
mov nihaohaoni,eax
dec @dwCounter
INC @hehe
mov eax,nihaohaoni
mov @tvi.hItem, eax
mov @tvi.imask, TVIF_PARAM or TVIF_TEXT
lea eax, @szItem1
mov @tvi.pszText, eax
mov @tvi.cchTextMax, sizeof @szItem1
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_GETITEM,0,addr @tvi
;invoke MessageBox,hWinMain, CTEXT('读到的根节点名字'), addr @szItem1, MB_OK
invoke MessageBox,hWinMain, addr @stSession.Login.szUserName , addr @szItem1, MB_OK
invoke lstrcmp,addr @szItem1,addr @stSession.Login.szUserName ;比较查找到的节点名字跟要找的文字是否一样
.if eax==0
mov eax,nihaohaoni
mov tvi.hParent,eax
mov tvi.hInsertAfter,TVI_LAST
mov tvi.item.pszText,offset @stSession.MsgUp.szContent
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('有这个根节点的时候'),MB_OK
jmp tiaochu
.elseif
.endif
.endw
; invoke MessageBox,hWinMain,addr @stSession.MsgUp.szContent,CTEXT('没有这个根节点,创建这个根节点'),MB_OK
mov tvi.hParent,NULL
mov tvi.hInsertAfter,TVI_ROOT
mov tvi.item.imask,TVIF_TEXT
mov tvi.item.pszText,offset @stSession.Login.szUserName
mov tvi.item.iImage,0
mov tvi.item.iSelectedImage,0
mov tvi.item.lParam,0
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
mov tvi.hParent,eax
mov tvi.hInsertAfter,TVI_LAST
mov tvi.item.pszText,offset @stSession.MsgUp.szContent
invoke SendDlgItemMessage,hTabDlg8,IDC_TRV1,TVM_INSERTITEM,0,addr tvi
.endif
tiaochu:
.endif
以上代码是程序的一部分,想要做的就是遍历TREEVIEW通过节点名字跟输入的文字做比较,如果相同那么就查找到了某一个节点,然后往这个节点力插入东西,请问汇编如何遍历TREELIST查找某一个父节点,然后往这个父节点力插东西?上面的代码错在哪里?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: