السلام عليكــم ورحمـة الله وبركاتــه ،،
أنا شفت كود في موضوع الأستاذ أحمد الغريب
وعندي بعض الاشياء مافهمتها
الكود:
اقتباس;===============================================================================;START
;===============================================================================
.486
.model flat, stdcall
option casemap: none
includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\user32.lib
include c:\masm32\include\kernel32.inc
include c:\masm32\include\user32.inc
include c:\masm32\include\windows.inc
include resorces\skeleton.inc
WinMain PROTO STDCALL :DWORD, :DWORD, :DWORD, :DWORD
WndProc PROTO STDCALL :DWORD, :DWORD, :DWORD, :DWORD
;===============================================================================
;DATA
;===============================================================================
.data
AppName db "النواه",0
ClassName db "نواة الاسمبلى",0
.data?
hInstance dd ?
hMenu dd ?
;===============================================================================
;CODE
;===============================================================================
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke WinMain, hInstance, NULL, NULL, SW_SHOWNORMAL
invoke ExitProcess,eax
;-----------------------------------------------------------------
; WinMain
;-----------------------------------------------------------------
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
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_WINDOW
mov wc.lpszMenuName, NULL
mov wc.lpszClassName,OFFSET ClassName
mov wc.hIcon, 0
mov wc.hIconSm, 0
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke LoadMenu, hInstance, MAINMENU;load menu
mov hMenu, eax ;store handle
INVOKE CreateWindowEx,WS_EX_LAYOUTRTL,ADDR ClassName,ADDR AppName,\
WS_OVERLAPPEDWINDOW-WS_MAXIMIZEBOX-WS_SIZEBOX,\
CW_USEDEFAULT, CW_USEDEFAULT,258,350,NULL,hMenu,\
hInst,NULL
mov hwnd,eax
invoke ShowWindow, hwnd, CmdShow
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
;-----------------------------------------------------------------
; Window procedure
;-----------------------------------------------------------------
WndProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
mov eax, uMsg
.IF eax==WM_DESTROY
invoke PostQuitMessage, NULL
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.ENDIF
ret
WndProc endp
end start
هل إذا اردت تعريف متغير بدون قيمة ابتدائية
أن أعرف مقطع هكذا:
.data?
مالمقصود بهذه
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
وجزاكم الله ألف خير