home *** CD-ROM | disk | FTP | other *** search
- ; #########################################################################
-
- .386
- .model flat, stdcall ; 32 bit memory model
- option casemap :none ; case sensitive
-
- include mdcm1.inc ; local includes for this file
-
- ; #########################################################################
-
- .data
-
- NagWindowCaption db 'Please register!',0
- NagWindowText db 'I want your money! Please send me $20 to get rid of this screen!',0
- GreetzText db 'Greetz go out to:',10,'Xorolc: thanks a lot for all your help ;)',
- 10,'sncs',10,'dec',10,'L4Z3R',10,'and of course:',10,'tNO',0
- StaticClass db 'STATIC',0
- .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
-
- ;====================
- ; Put LOCALs on stack
- ;====================
-
- LOCAL wc :WNDCLASSEX
- LOCAL msg :MSG
- LOCAL Wwd :DWORD
- LOCAL Wht :DWORD
- LOCAL Wtx :DWORD
- LOCAL Wty :DWORD
-
- ;==================================================
- ; Fill WNDCLASSEX structure with required variables
- ;==================================================
-
- invoke LoadIcon,hInst,500 ; icon ID
- mov hIcon, eax
-
- szText szClassName,"mdcm_class"
-
- mov wc.cbSize, sizeof WNDCLASSEX
- mov wc.style, CS_HREDRAW or CS_VREDRAW \
- or CS_BYTEALIGNWINDOW
- mov wc.lpfnWndProc, offset WndProc
- mov wc.cbClsExtra, NULL
- mov wc.cbWndExtra, NULL
- m2m wc.hInstance, hInst
- mov wc.hbrBackground, COLOR_BTNFACE+1
- mov wc.lpszMenuName, NULL
- mov wc.lpszClassName, offset szClassName
- m2m wc.hIcon, hIcon
- invoke LoadCursor,NULL,IDC_ARROW
- mov wc.hCursor, eax
- m2m wc.hIconSm, hIcon
-
- invoke RegisterClassEx, ADDR wc
-
- ;================================
- ; Centre window at following size
- ;================================
-
- mov Wwd, 255
- mov Wht, 145
-
- invoke GetSystemMetrics,SM_CXSCREEN
- invoke TopXY,Wwd,eax
- mov Wtx, eax
-
- invoke GetSystemMetrics,SM_CYSCREEN
- invoke TopXY,Wht,eax
- mov Wty, eax
-
- invoke CreateWindowEx,WS_EX_LEFT,
- ADDR szClassName,
- ADDR szDisplayName,
- WS_OVERLAPPED or WS_SYSMENU,
- Wtx,Wty,Wwd,Wht,
- NULL,NULL,
- hInst,NULL
- mov hWnd,eax
-
-
- invoke CreateWindowEx,NULL,ADDR StaticClass, ADDR GreetzText,
- WS_VISIBLE or WS_CHILDWINDOW or SS_CENTER,
- 5,5,245,245,hWnd,1000,hInst,NULL
-
- invoke LoadMenu,hInst,600 ; menu ID
- invoke SetMenu,hWnd,eax
-
- invoke ShowWindow,hWnd,SW_SHOWNORMAL
- invoke UpdateWindow,hWnd
-
- ;===================================
- ; Loop until PostQuitMessage is sent
- ;===================================
-
- StartLoop:
- invoke GetMessage,ADDR msg,NULL,0,0
- cmp eax, 0
- je ExitLoop
- invoke TranslateMessage, ADDR msg
- invoke DispatchMessage, ADDR msg
- jmp StartLoop
- ExitLoop:
-
- return msg.wParam
-
- WinMain endp
-
- ; #########################################################################
-
- WndProc proc hWin :DWORD,
- uMsg :DWORD,
- wParam :DWORD,
- lParam :DWORD
-
- LOCAL var :DWORD
- LOCAL caW :DWORD
- LOCAL caH :DWORD
- LOCAL Rct :RECT
- LOCAL hDC :DWORD
- LOCAL Ps :PAINTSTRUCT
- LOCAL buffer1[128]:BYTE ; these are two spare buffers
- LOCAL buffer2[128]:BYTE ; for text manipulation etc..
-
- .if uMsg == WM_COMMAND
- ;======== menu commands ========
- .elseif uMsg == WM_CREATE
- invoke NagWindowProc
-
- .elseif uMsg == WM_SIZE
-
- .elseif uMsg == WM_PAINT
- invoke BeginPaint,hWin,ADDR Ps
- mov hDC, eax
- invoke Paint_Proc,hWin,hDC
- invoke EndPaint,hWin,ADDR Ps
- return 0
-
- .elseif uMsg == WM_CLOSE
- invoke NagWindowProc
-
- .elseif uMsg == WM_DESTROY
- invoke PostQuitMessage,NULL
- return 0
- .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
-
- ; #########################################################################
-
- Paint_Proc proc hWin:DWORD, hDC:DWORD
-
- LOCAL btn_hi :DWORD
- LOCAL btn_lo :DWORD
- LOCAL Rct :RECT
-
- invoke GetSysColor,COLOR_BTNHIGHLIGHT
- mov btn_hi, eax
-
- invoke GetSysColor,COLOR_BTNSHADOW
- mov btn_lo, eax
-
- return 0
-
- Paint_Proc endp
-
- ; ########################################################################
- NagWindowProc proc
-
- invoke MessageBoxA,NULL,addr NagWindowText, addr NagWindowCaption,MB_OK
- NagWindowProc endp
-
- ; ########################################################################
-
- end start
-