Подскажите как… Допустим, есть два окна edit и одно button. Как после нажатия на button: считать, подсчитать и вывести сумму чисел введённых в edit1+edit2 в центре окна, например?
потребуются invoke SendMessage,HWND_Edit,WM_GETTEXTLENGTH,0,0 invoke SendMessage,HWND_Edit,WM_GETTEXT,eax offset byffer для перевода в число поищи тут были такие функции
"Подскажите как… Допустим, есть два окна edit и одно button. Как после нажатия на button: считать, подсчитать и вывести сумму чисел введённых в edit1+edit2 в центре окна, например?" Вот, так попробуй! Надеюсь разберёшься. Оптимизировать не было времени, у кого есть методы лучше пишите сюда. .code start proc LOCAL buf[MAX_LENGTH]:BYTE invoke GetWindowText,handleEDIT1,addr buf,MAX_LENGTH invoke fromasciitonum,addr buf,eax mov ebx,eax invoke GetWindowText,handleEDIT2,addr buf,MAX_LENGTH add eax,ebx invoke fromdectoasci,addr buf,MAX_LENGTH,eax invoke SetWindowText,handleEDIT,eax ret start endp fromdectoasci proc uses ecx edx edi bufWORD,szbufWORD,numWORD LOCAL flagWORD mov flag,0 xor eax,eax mov ecx,szbuf shr ecx,2 mov edi,buf rep stosd dec edi mov ecx,10 mov eax,num or eax,eax jns trans inc flag neg eax trans: xor edx,edx div ecx add dl,'0' mov byte ptr [edi],dl dec edi or eax,eax jnz trans mov eax,edi and flag,1 jz notsignum mov byte ptr [eax],'-' ret notsignum: inc eax ret fromdectoasci endp fromascitonum proc uses esi edi ebx ecx edx pBufWORD,szBufWORD LOCAL flagWORD LOCAL bufszWORD and flag,0 push szBuf pop bufsz mov esi,pBuf .if byte ptr [edi]=='-' inc esi dec bufsz inc flag .endif xor edi,edi xor eax,eax xor ebx,ebx mov ecx,10 .while edi<bufsz mov bl,byte ptr [esi] sub bl,30h mul ecx add eax,ebx inc edi inc esi .endw and flag,1 jz noflag neg eax noflag: ret fromascitonum endp end start
Можно намного проще,( то для ивращенцев...). Ресурсы сам напишешь: .386 .model flat, stdcall ;32 bit memory model option casemap :none ;case sensitive include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib IDD_DIALOG1 equ 101 IDC_BTN2 equ 1001 ;Сложить IDC_BTN3 equ 1002 ;Выход IDC_EDT1 equ 1003 IDC_EDT2 equ 1004 IDC_EDT3 equ 1005 ;Сумма DlgProc PROTO :HWND,:UINT,:WPARAM,:LPARAM .data first dd 0 second dd 0 hInstance dd 0 .code start: invoke GetModuleHandle,NULL invoke DialogBoxParam,eax,IDD_DIALOG1,NULL,addr DlgProc,NULL invoke ExitProcess,0 DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM mov eax,uMsg .if eax==WM_INITDIALOG .elseif eax==WM_COMMAND .if wParam==IDC_BTN2 invoke GetDlgItemInt,hWin,IDC_EDT1,0,1 mov ebx,eax invoke GetDlgItemInt,hWin,IDC_EDT2,0,1 add eax,ebx invoke SetDlgItemInt,hWin,IDC_EDT3,eax,1 .elseif wParam==IDC_BTN3 invoke ExitProcess,0 .endif .elseif eax==WM_CLOSE invoke EndDialog,hWin,0 .else mov eax,FALSE ret .endif mov eax,TRUE ret DlgProc endp end start