;helimissle by lostcauz
;x86 Assembler (MASM32) ml ver.6.14.8444
;simple double-buffer example

include windows.inc
include user32.inc
include kernel32.inc
include shell32.inc
include comctl32.inc
include comdlg32.inc
include gdi32.inc

includelib user32.lib
includelib kernel32.lib
includelib shell32.lib
includelib comctl32.lib
includelib comdlg32.lib
includelib gdi32.lib

WinMain         PROTO :DWORD,:DWORD,:DWORD,:DWORD
WndProc	        PROTO :DWORD,:DWORD,:DWORD,:DWORD
TimerProc       PROTO :HWND,:UINT,:WPARAM,:LPARAM

IDB_PIC1        equ 801         ;background image
IDB_PIC2        equ 802         ;helicopter image
IDB_MASK        equ 803         ;helicopter mask
IDB_PIC3        equ 804         ;missle image
IDB_MASK2       equ 805         ;missle mask
timer_ID        equ 200
timer_INTERVAL	equ 34          ;near 29 frames per second- it's good enough for movies :)
IDD_DIALOG      equ 1000

IDM_MENU        equ 10000
IDM_FILE_EXIT   equ 10001
IDM_HELP_ABOUT  equ 10101

Img_Width       equ 114         ;helicopter width
Img_Height      equ 42          ;helicopter height
Winder_Width    equ 500         ;pronounced "win-dur" - it's a southern thing...
Winder_Height   equ 300         ;"BillyBob, it's cold in here! Close that damn winder!!"

.const

ClassName       db 'DLGCLASS',0
AppName         db 'Blit It',0
AboutMsg        db 'BitBlt Drawing',13,10,'lostcauz 2004',0

HELICOPTER STRUCT
  X     dd  ?
  Y     dd  ?
  state dd  ?
  alter dd  ?
HELICOPTER ends

MISSLE STRUCT
  X     dd  ?
  Y     dd  ?
  state dd  ?                   
MISSLE ends

.data

heli    HELICOPTER <0,0,0,0>    ;create initialized instances
miss    MISSLE     <0,0,0>

.data?

hInstance       dd      ?
CommandLine     dd      ?
hWnd            dd      ?
hBmp1           HBITMAP ?       ;background image
hBmp2           HBITMAP ?       ;helicopter image
hBmp3           HBITMAP ?       ;helicopter image mask
hBmp4           HBITMAP ?       ;missle image
hBmp5           HBITMAP ?       ;missle image mask
hBackBuffer     HDC     ?
hDC             HDC     ?
hDCBmp1         HDC     ?
hDCBmp2         HDC     ?
hDCBmp3         HDC     ?
hDCBmp4         HDC     ?
hDCBmp5         HDC     ?
hhdc            HDC     ?
hmask           HDC     ?
mhdc            HDC     ?
mmask           HDC     ?
mX              dd      ?
mY              dd      ?