Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 967 fois - Téléchargée 28 fois
; dans le precedent code, je vous avais dit que je vous apprendrais comment deplacer la fenetre sans la bordure! ; hé bien voila! C fait! ; j'en ai profité pour changer le curseur. ; pas d'autres nouveautés, pour bien vous laisser comprendre... ; Prochain code :: Conformation de sortie de programme. ; ce ne sera pas encore tres compliqué! n'oubliez pas que au moment ou j'ecrit ces ligne, je ne fait de l'asm que depuis 5 jours et qques heures! ; (bon, d'accord, j'y passe mes nuits...) .386 ;on utilisera les instruction du 386, ce qui est bien suffisant. (on peut aussi utiliser .486 ou .586) .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 WinMain proto :DWORD,:DWORD,:DWORD,:DWORD .data ClassName db "SimpleWinClass",0 AppName db "Essayez de bouger la fenetre sans la bordure!",0 ; le titre! .data? hInstance dd ? CommandLine dd ? .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:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG LOCAL hwnd:HWND ; le handle de la fenetre... mov wc.cbSize, SIZEOF WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbClsExtra, NULL mov wc.cbWndExtra, NULL push hInstance pop wc.hInstance mov wc.hbrBackground, COLOR_BTNFACE ;Couleur de fond de la fenetre... mov wc.lpszMenuName, NULL mov wc.lpszClassName, OFFSET ClassName invoke LoadIcon, NULL, IDI_APPLICATION mov wc.hIcon, eax mov wc.hIconSm, eax invoke LoadCursor, NULL, IDC_SIZEALL ;là, on va mettre le curseur de positionnement... mov wc.hCursor, eax invoke RegisterClassEx, addr wc INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\ WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\ CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\ hInst,NULL mov hwnd, eax invoke ShowWindow, hwnd, SW_SHOWNORMAL invoke UpdateWindow, hwnd .WHILE TRUE invoke GetMessage, ADDR msg, NULL, 0, 0 .BREAK .IF (!eax) invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg .ENDW mov eax,msg.wParam ret WinMain endp WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM ;################################################################################## ; ; Ici, on traite et on analyse les messages. on peut par exemple ; recuperer des evenements genre le mousedown (WM_LBUTTONDOWN), le load (WM_CREATE), ; le beforequit (WM_DESTROY), etc... (là, je compare avec VB! lol) ; ;################################################################################## .if uMsg==WM_DESTROY invoke PostQuitMessage, NULL ;receptpion du message "qqun a cliqué sur la croix en haut" donc, on ferme l'application. .ELSEIF uMsg == WM_LBUTTONDOWN ;Si mousedown, alors on deplace la fenetre sans la bordure! Magik! et vous voyez? plus simple qu'en VB! invoke SendMessage,hWnd,WM_NCLBUTTONDOWN,HTCAPTION,lParam .else invoke DefWindowProc, hWnd, uMsg, wParam, lParam ret .endif xor eax,eax ; on initialise eax a 0 dans le cas d'une future utilisation. (qqun px m'expliquer pourkoi on fait pas "mov eax,0" ?? mailto:blackwizzard@wanadoo.fr) ret ; ret sert a sortir de la macro et revenir a l'instruction qui suis celle qui a lancer la macro...heu...j'arrive pas a etre clair! WndProc endp end start
enfin bon, T le 3eme qui me repond, je commence a savoir!
mais tu pouvais pas savoir! :p
merci kan meme!
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.