注册 登录
编程论坛 汇编论坛

invoke SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETTEXT,eax,ecx

诸葛修勤 发布于 2011-08-12 22:07, 921 次点击
程序代码:
;********************************************************************
;
取多选的列表框项目
;
********************************************************************
                invoke    SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETSELCOUNT,0,0
                mov    @dwCount,eax
                invoke    SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETSELITEMS,128/4,addr @szBuffer
                invoke    lstrcpy,addr @szTextBuff,addr szSelect
                lea    esi,@szBuffer
                .while    @dwCount
                    lodsd
                    lea    ecx,@szBuffer1
                    invoke    SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETTEXT,eax,ecx
                    invoke    lstrcat,addr @szTextBuff,addr szReturn
                    invoke    lstrcat,addr @szTextBuff,addr @szBuffer1
                    dec    @dwCount
                .endw
                invoke    MessageBox,hWnd,addr @szTextBuff,addr szTitle,MB_OK
9 回复
#2
诸葛修勤2011-08-12 22:08
invoke    SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETTEXT,eax,ecx

这里为什么是eax???
#3
zklhp2011-08-12 22:21
lea esi,@szBuffer

lodsd

Load String Double Word 也就是从esi指向的内存中取出一个双字变量放到eax中、、、
#4
iamsky19812011-08-12 22:27
@szBuffer缓冲区中存放的是多选列表框的选中项目的索引列表

这里要清楚lodsd命令的作用:
是以si位首地址,每次拷贝4个字节,把这4个字节放到eax中,然后si自动+4.

所以eax中存放的是位置索引,每次循环都是变化的。

所以是eax.
#5
诸葛修勤2011-08-12 22:59
lods 系列 不是字符串操作的吗  esi  edi  之间   


#6
诸葛修勤2011-08-12 23:02
再追问 一个  不开贴啦
#7
诸葛修勤2011-08-12 23:02
2.对于单选框 怎样才能 分成不同的组
    例如:
性别:  男        女    是一组
国籍: 中国    美国    是一组

但是在用脚本文件的时候 不知道怎么把他们分开
#8
诸葛修勤2011-08-12 23:04
感谢两位
#9
诸葛修勤2011-08-12 23:11
是不是  只要在invoke    CheckMenuRadioItem,hMenu,id_begin,id_end,id,MF_BYCOMMAND

指定范围(id_begin, id_end) 就行啊   刚刚想的  

受到groupbox的直接影响  导致 自己一直都在找座标  以为是把要操作的选项的包含就行  




#10
zklhp2011-08-13 09:02
以下是引用诸葛修勤在2011-8-12 22:59:04的发言:

lods 系列 不是字符串操作的吗  esi  edi  之间   

是嘛。。。
1