-1

我有 2 个带有数字的文本框。如何减去它们并将结果放在第三个文本框中。

我试过这个

.data

gettext1            DB 100 DUP(?)
gettext2           DB 100 DUP(?)
gettext3            DB 100 DUP(?)

.code

LOCAL pmem1  :DWORD

        invoke GetDlgItemText,hWin,MeasuredlengthXtextbox,esi,100

    invoke GetDlgItemText,hWin,MeasuredlengthYtextbox,edi,100

    sub esi,edi 

    mov pmem1,esi   

    invoke lstrcpy,addr gettext1,pmem1

    invoke SetDlgItemText,hWin,ResultlengthXtextbox,addr gettext3

当我尝试这段代码时,它在文本框中什么都不显示

谢谢

4

1 回答 1

1

首先,GetDlgItemText 的第三个参数是一个指向保存字符串的缓冲区的指针。寄存器不起作用。您需要使用缓冲区地址加载 esi 和 edi,例如 gettext1 和 gettext2。

其次,您不能添加字符串。您在屏幕上看到的数字 1 并不是真正的数字,而是数字的 ASCII 版本。

您需要获取文本,转换为数字,减去,然后转换回字符串以与 SetDlgItemText 一起使用。

为了让您的生活更轻松,只需使用GetDlgItemInt将数字字符串转换为数字并在 eax 中返回,然后使用SetDlgItemInt

于 2013-04-27T03:32:17.890 回答