Голосование с моими знаниями Я новичок в языке ассемблера.Как построить аргумент для GetWindowText на языке ассемблера Masm32?
У меня есть код, который добавляет значение двух textbox
и отображает результат на третьем, когда я нажимаю кнопку.
Я попытался построить аргумент с помощью команды GetWindowText
, но он ничего не отображал, иногда он сбой, я смотрю в сеть с той же программой, в которой я работаю, но я нашел только этот From stackoverflow. Разница заключается в том, что он использует GetDlgItemText
как я читал на Microsoft Website, он извлекает заголовок или текст, связанный с элементом управления, в диалоговом окне, но я не использую диалоговое окно, поэтому, возможно, я просто буду придерживаться функции GetWindowText
.
Вот код, который я сделал, но, честно говоря, я не знаю, что здесь происходит. Я просто сделал это, потому что я понятия не имею, как построить аргумент для функции GetWindowText
.
Некоторые из кода, который вы видите, представляют собой переработанный код из программы, которую я работаю несколько дней назад, что является простой операцией добавления, которая заключается в том, что я вводил два значения в консоли, добавляя их и отображая результат. Теперь я пытаюсь сделать это снова, но с помощью текстового поля и кнопки, но я не могу понять это правильно.
с замедляющим:
.data?
EditIn1ID db 10 dup(?)
EditIn2ID db 10 dup(?)
EditOutID db 10 dup(?)
hButton HWND ?
hEditIn1 HWND ?
hEditIn2 HWND ?
hEditOut HWND ?
текстового поля и функция кнопки
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg == WM_DESTROY
invoke PostQuitMessage, 0
.elseif uMsg == WM_CREATE
invoke CreateWindowEx, NULL, addr ButtonClassName, addr ButtonAdd, WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 225, 10, 120, 30, hWnd, ButtonID, hInstance, NULL
mov hButton, eax
invoke CreateWindowEx, WS_EX_CLIENTEDGE, addr EditClassName, NULL, WS_CHILD or WS_VISIBLE, 10, 10, 120, 30, hWnd, EditIn1ID, hInstance, NULL
mov DWORD PTR [hEditIn1], eax
invoke CreateWindowEx, WS_EX_CLIENTEDGE, addr EditClassName, NULL, WS_CHILD or WS_VISIBLE, 10, 50, 120, 30, hWnd, EditIn2ID, hInstance, NULL
mov DWORD PTR [hEditIn2], eax
invoke CreateWindowEx, WS_EX_CLIENTEDGE, addr EditClassName, NULL, WS_CHILD or WS_VISIBLE, 10, 110, 120, 30, hWnd, EditOutID, hInstance, NULL
mov DWORD PTR [hEditOut], eax
.elseif uMsg == WM_COMMAND
mov eax, wParam
.if eax == ButtonID
shr eax, 16
.if ax == BN_CLICKED
invoke GetWindowText,EditIn1ID, eax, 10
invoke atodw, addr EditIn1ID
mov ebx, eax
invoke GetWindowText,EditIn2ID, ebx, 10
invoke atodw, addr EditIn2ID
add ebx, eax
invoke dwtoa, ebx, addr res
invoke SetWindowText,EditOutID, addr res
.endif
.endif
Вот что я думаю об этой строки кода:
invoke GetWindowText,EditIn1ID, eax, 10
в invoke GetWindowText
Эта строка кода вызывает функцию GetWindowText, которая копирует входное значение.
EditIn1ID
Этот код является уникальным идентификатором для моего текстового поля, так что кнопка имеет это конкретное значение.
eax
для расчета операции, возможно, это будет использоваться в дополнение к операции.
Некоторые также используют esi и edi, но я никогда не сталкиваюсь с этим кодом. Я не знаю, если они немного совпадают с eax и ebx, я искал смысл этого, но я скептически отношусь, если я могу использовать его здесь в своем коде, Я воздержусь от его использования.
Pls. советую мне, спасибо.
спасибо, я постараюсь работать над этим, надеясь, что он будет работать на этот раз. –