; ######################################################################### ; include files ; ~~~~~~~~~~~~~ include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\gdi32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\Comctl32.inc include \masm32\include\comdlg32.inc include \masm32\include\shell32.inc include \masm32\include\oleaut32.inc ; libraries ; ~~~~~~~~~ includelib \masm32\lib\masm32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\Comctl32.lib includelib \masm32\lib\comdlg32.lib includelib \masm32\lib\shell32.lib includelib \masm32\lib\oleaut32.lib ; ######################################################################### ;================= ; Local prototypes ;================= WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD TopXY PROTO :DWORD,:DWORD Paint_Proc PROTO :DWORD RegisterWinClass PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD MsgLoop PROTO Main PROTO wsprintfA PROTO C :DWORD,:VARARG wsprintf equ ;============= ; Local macros ;============= 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 stralloc MACRO ln invoke SysAllocStringByteLen,0,ln ENDM strfree MACRO strhandle invoke SysFreeString,strhandle ENDM ; ------------------------- ; initialised GLOBAL value ; ------------------------- IGLOBAL MACRO variable:VARARG .data variable .code ENDM ; -------------------------------- ; initialised GLOBAL string value ; -------------------------------- STRING MACRO variable:REQ,args:VARARG .data variable db args,0 .code ENDM ; --------------------- ; literal string MACRO ; --------------------- literal MACRO quoted_text:VARARG LOCAL local_text .data local_text db quoted_text,0 .code EXITM ENDM ; -------------------------------- ; string address in INVOKE format ; -------------------------------- SADD MACRO quoted_text:VARARG EXITM ENDM ; -------------------------------- ; string OFFSET for manual coding ; -------------------------------- CTXT MACRO quoted_text:VARARG EXITM ENDM ShellAboutBox MACRO handle,IconHandle,quoted_Text_1,quoted_Text_2:VARARG LOCAL AboutTitle,AboutMsg,buffer .data AboutTitle db quoted_Text_1,0 AboutMsg db quoted_Text_2,0 buffer db 128 dup (0) .code mov esi, offset AboutTitle mov edi, offset buffer mov ecx, lengthof AboutTitle rep movsb invoke ShellAbout,handle,ADDR buffer,ADDR AboutMsg,IconHandle ENDM AppModel MACRO Processor Processor ;; Processor type .model flat, stdcall ;; 32 bit memory model option casemap :none ;; case sensitive ENDM DisplayMenu MACRO handl, IDnum invoke LoadMenu,hInstance,IDnum invoke SetMenu,handl,eax ENDM DisplayWindow MACRO handl, ShowStyle invoke ShowWindow,handl, ShowStyle invoke UpdateWindow,handl ENDM AutoScale MACRO swidth, sheight invoke GetPercent,sWid,swidth mov Wwd, eax invoke GetPercent,sHgt,sheight mov Wht, eax invoke TopXY,Wwd,sWid mov Wtx, eax invoke TopXY,Wht,sHgt mov Wty, eax ENDM SingleInstanceOnly MACRO lpClassName invoke FindWindow,lpClassName,NULL cmp eax, 0 je @F push eax invoke ShowWindow,eax,SW_RESTORE pop eax invoke SetForegroundWindow,eax mov eax, 0 ret @@: ENDM GLOBAL MACRO var1,var2,var3,var4,var5,var6,var7,var8,var9,var0, varA,varB,varC,varD,varE,varF,varG,varH,varI,varJ .data? var1 var2 var3 var4 var5 var6 var7 var8 var9 var0 varA varB varC varD varE varF varG varH varI varJ .code ENDM ; -------------------------------------------- ; equates to use directly in the message loop ; -------------------------------------------- m_hWnd equ m_Msg equ m_wParam equ m_lParam equ .data szDisplayName db "Byte to Ascii",0 .data? hInstance dd ? CommandLine dd ? hIcon dd ? hCursor dd ? sWid dd ? sHgt dd ? hWnd dd ? ; ########################### Inserted modules ############################ include tbmacros.asm include toolbar.asm include Statusbr.asm include Filedlgs.asm ; #########################################################################