Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 931 fois - Téléchargée 27 fois
.386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib include \MASM32\INCLUDE\gdi32.inc includelib \MASM32\LIB\gdi32.lib EditSl PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD PushButton PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD szText MACRO Name, Text:VARARG LOCAL lbl jmp lbl Name db Text,0 lbl: ENDM m2m MACRO M1, M2 push M2 pop M1 ENDM return MACRO arg mov eax, arg ret ENDM WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD TopXY PROTO :DWORD,:DWORD .data adrTxt db 0 Moment db 0 szDisplayName db "Vv@20oX",0 CommandLine dd 0 hWnd dd 0 hInstance dd 0 btnClass db "BUTTON",0 hFont dd 0 hEdit1 dd 0 .DATA? Buffer db 256 dup(?) .code start: invoke GetModuleHandle, NULL mov hInstance, eax invoke GetCommandLine mov CommandLine, eax invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst :DWORD, hPrevInst :DWORD, CmdLine :DWORD, CmdShow :DWORD LOCAL wc :WNDCLASSEX LOCAL msg :MSG LOCAL Wwd :DWORD LOCAL Wht :DWORD LOCAL Wtx :DWORD LOCAL Wty :DWORD szText szClassName,"Vv@20o3Class32" mov wc.cbSize, sizeof WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW mov wc.lpfnWndProc, offset WndProc ; address of WndProc mov wc.cbClsExtra, NULL mov wc.cbWndExtra, NULL m2m wc.hInstance, hInst ; instance handle mov wc.hbrBackground, COLOR_BTNFACE+1 ; system color mov wc.lpszMenuName, NULL mov wc.lpszClassName, offset szClassName ; window class name invoke LoadIcon,hInst,500 ; icon ID ; resource icon mov wc.hIcon, eax invoke LoadCursor,NULL,IDC_ARROW ; system cursor mov wc.hCursor, eax mov wc.hIconSm, 0 invoke RegisterClassEx, ADDR wc ; register the window class mov Wwd, 200 mov Wht, 150 invoke GetSystemMetrics,SM_CXSCREEN ; get screen width in pixels invoke TopXY,Wwd,eax mov Wtx, eax invoke GetSystemMetrics,SM_CYSCREEN ; get screen height in pixels invoke TopXY,Wht,eax mov Wty, eax invoke CreateWindowEx,WS_EX_OVERLAPPEDWINDOW, ADDR szClassName, ADDR szDisplayName, WS_OVERLAPPEDWINDOW, Wtx,Wty,Wwd,Wht, NULL,NULL, hInst,NULL mov hWnd,eax ; copy return value into handle DWORD invoke ShowWindow,hWnd,SW_SHOWNORMAL ; display the window invoke UpdateWindow,hWnd ; update the display StartLoop: invoke GetMessage,ADDR msg,NULL,0,0 ; get each message cmp eax, 0 ; exit if GetMessage() je ExitLoop ; returns zero invoke TranslateMessage, ADDR msg ; translate it invoke DispatchMessage, ADDR msg ; send it to message proc jmp StartLoop ExitLoop: return msg.wParam WinMain endp WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD .if uMsg == WM_COMMAND .if wParam == 600 invoke SendMessage,hEdit1,WM_GETTEXT,sizeof Buffer,ADDR Buffer invoke MessageBox,hWin,ADDR Buffer,ADDR szDisplayName,0 Invoke SetTimer,hWin,0,1500, 0 .endif .elseif uMsg == WM_CREATE szText font1,"Lucida Console" invoke CreateFont,13,5,0,0,500,0,0,0, DEFAULT_CHARSET,0,0,0, DEFAULT_PITCH,ADDR font1 mov hFont, eax invoke EditSl,ADDR adrTxt,10,10,170,20,hWin,700 mov hEdit1, eax invoke PushButton,ADDR btnClass,hWin,50,40,80,25,600 .elseif uMsg == WM_CLOSE szText TheText,"Please Confirm Exit" invoke MessageBox,hWin,ADDR TheText,ADDR szDisplayName,MB_YESNO .if eax == IDNO return 0 .endif .elseif uMsg == WM_DESTROY invoke PostQuitMessage,NULL return 0 .endif .if uMsg == WM_TIMER .if Moment == 0 invoke Beep,200,20 mov Moment,2 .else Mov Moment,0 invoke Beep,500,30 .endif .endif invoke DefWindowProc,hWin,uMsg,wParam,lParam ret WndProc endp TopXY proc wDim:DWORD, sDim:DWORD shr sDim, 1 ; divide screen dimension by 2 shr wDim, 1 ; divide window dimension by 2 mov eax, wDim ; copy window dimension into eax sub sDim, eax ; sub half win dimension from half screen dimension return sDim TopXY endp EditSl proc szMsg:DWORD,a:DWORD,b:DWORD, wd:DWORD,ht:DWORD,hParent:DWORD,ID:DWORD LOCAL hndle:DWORD szText slEdit,"EDIT" invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR slEdit,szMsg, WS_VISIBLE or WS_CHILDWINDOW or ES_AUTOHSCROLL or ES_NOHIDESEL, a,b,wd,ht,hParent,ID,hInstance,NULL mov hndle, eax invoke SendMessage,hndle,WM_SETFONT,hFont,1 mov eax, hndle ret EditSl endp PushButton proc lpText:DWORD,hParent:DWORD,a:DWORD,b:DWORD,wd:DWORD,ht:DWORD,ID:DWORD invoke CreateWindowEx,0, ADDR btnClass,lpText, WS_CHILD or WS_VISIBLE, a,b,wd,ht,hParent,ID, hInstance,NULL ret PushButton endp end start
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.