首页
社区
课程
招聘
[求助]汇编TREEVIEW如何遍历节点名字跟要找的文字做比较,从而得到父节点句柄?
发表于: 2013-8-24 02:14 4030

[求助]汇编TREEVIEW如何遍历节点名字跟要找的文字做比较,从而得到父节点句柄?

2013-8-24 02:14
4030
代码如下:
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直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//