📄 asm_2_htm.asm
字号:
;================================
mov Wwd, 250
mov Wht, 200
;===========================================
; Create the main screen
;===========================================
invoke CreateWindowEx,NULL,
ADDR szClassName,
ADDR szDisplayName,
WS_POPUP or WS_SYSMENU or\
WS_MINIMIZEBOX or WS_CAPTION,
Wtx,Wty,Wwd,Wht,
NULL,NULL,
hInst,NULL
;===========================================
; Put the window handle in for future uses
;===========================================
mov hMainWnd,eax
;============================================
;Load the menu
;============================================
invoke LoadMenu,hInst,IDM_MENU ; menu ID
mov hMenu, eax
invoke SetMenu,hMainWnd,hMenu
;================================
; Load the icon
;================================
;=================================
; Load all of the icons
;=================================
invoke LoadIcon,hInst,IDI_ASM ; icon ID
mov hConv,eax
;========================================
; Set processing, and Make caps to false
;========================================
mov Processing, FALSE
mov MakeCaps, FALSE
;================================
; Update the menu
;================================
invoke UpdateMenu
;================================
; Update the screen
;================================
invoke UpdateScreen
;================================
; Show the window
;================================
invoke ShowWindow,hMainWnd,SW_SHOWNORMAL
invoke UpdateWindow,hMainWnd
;================================
; Center window at following size
;================================
invoke GetDesktopWindow
invoke MiscCenterWnd, hMainWnd, eax
;===================================
; 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 VARIABLES
;=========================================
.if uMsg == WM_COMMAND
;======== menu commands ========
.if wParam == IDM_CONVERT
;==The open and convert code===
;========================
; Get the open file name
;========================
mov eax, offset szOpenFilter
mov ofn.lpstrFilter, eax
mov ofn.lpstrDefExt, NULL
mov szFile, NULL
invoke GetOpenFileName, ADDR ofn
;========================
; Test for file
;========================
.if (eax)
;========================
; jump to open code
;========================
invoke Open
;========================
; Test for an error
;========================
.if eax == 0
;==================
; Give error msg
;==================
invoke MessageBox, hWin, ADDR OpenErr,\
NULL,MB_OK
jmp release
.endif
;============================
; We were good so convert
;============================
invoke ConvertFile
;===========================
; Test for an error
;===========================
.if eax == 0
;===================
; Give Message
;===================
invoke MessageBox, hWin, ADDR ConvertErr,\
NULL,MB_OK
jmp release
.endif
;==========================
; Now write the file out
;==========================
mov eax, offset szSaveFilter
mov ofn.lpstrFilter, eax
mov eax, offset szDefExt
mov ofn.lpstrDefExt, eax
mov szFile, NULL
invoke Output
;===========================
; Test for an error
;===========================
.if eax == 0
;===================
; Give Message
;===================
invoke MessageBox, hWin, ADDR OutputErr,\
NULL,MB_OK
.endif
release:
;===============================
; Release the allocated memory
;===============================
invoke GlobalFree, hSrc_Memory
invoke GlobalFree, hDest_Memory
.endif
.elseif wParam == IDM_EXIT
;===========================
; THIS IS THE FILE-EXIT
;===========================
invoke SendMessage,hWin,WM_SYSCOMMAND,SC_CLOSE,NULL
.elseif wParam == IDM_BACKGROUND
;==========================================
; Activate the Color Selection Dialog Box
;==========================================
invoke DialogBoxParam, hInst, IDD_COLOR, hMainWnd, ADDR ColorProc, NULL
;==========================================
; If it succeded in selecting a new color
;==========================================
.if eax == TRUE
;==============================
; Yes so copy into default var
;==============================
invoke lstrcpy, ADDR szDEFAULT_BACKGROUND, ADDR szColorBuffer
;==============================
; Update the menu
;==============================
invoke UpdateMenu
.endif
.elseif wParam == IDM_TEXT
;==========================================
; Activate the Color Selection Dialog Box
;==========================================
invoke DialogBoxParam, hInst, IDD_COLOR, hMainWnd, ADDR ColorProc, NULL
;==========================================
; If it succeded in selecting a new color
;==========================================
.if eax == TRUE
;==============================
; Yes so copy into default var
;==============================
invoke lstrcpy, ADDR szDEFAULT_TEXT, ADDR szColorBuffer
;==============================
; Update the menu
;==============================
invoke UpdateMenu
.endif
.elseif wParam == IDM_COMMENT
;==========================================
; Activate the Color Selection Dialog Box
;==========================================
invoke DialogBoxParam, hInst, IDD_COLOR, hMainWnd, ADDR ColorProc, NULL
;==========================================
; If it succeded in selecting a new color
;==========================================
.if eax == TRUE
;==============================
; Yes so copy into default var
;==============================
invoke lstrcpy, ADDR szDEFAULT_COMMENT, ADDR szColorBuffer
;==============================
; Update the menu
;==============================
invoke UpdateMenu
.endif
.elseif wParam == IDM_STRING
;==========================================
; Activate the Color Selection Dialog Box
;==========================================
invoke DialogBoxParam, hInst, IDD_COLOR, hMainWnd, ADDR ColorProc, NULL
;==========================================
; If it succeded in selecting a new color
;==========================================
.if eax == TRUE
;==============================
; Yes so copy into default var
;==============================
invoke lstrcpy, ADDR szDEFAULT_STRING, ADDR szColorBuffer
;==============================
; Update the menu
;==============================
invoke UpdateMenu
.endif
.elseif wParam == IDM_TYPE
;==========================================
; Activate the Color Selection Dialog Box
;==========================================
invoke DialogBoxParam, hInst, IDD_COLOR, hMainWnd, ADDR ColorProc, NULL
;==========================================
; If it succeded in selecting a new color
;==========================================
.if eax == TRUE
;==============================
; Yes so copy into default var
;==============================
invoke lstrcpy, ADDR szDEFAULT_TYPE, ADDR szColorBuffer
;==============================
; Update the menu
;==============================
invoke UpdateMenu
.endif
.elseif wParam == IDM_PSUEDO
;==========================================
; Activate the Color Selection Dialog Box
;==========================================
invoke DialogBoxParam, hInst, IDD_COLOR, hMainWnd, ADDR ColorProc, NULL
;==========================================
; If it succeded in selecting a new color
;==========================================
.if eax == TRUE
;==============================
; Yes so copy into default var
;==============================
invoke lstrcpy, ADDR szDEFAULT_PSUEDO, ADDR szColorBuffer
;==============================
; Update the menu
;==============================
invoke UpdateMenu
.endif
.elseif wParam == IDM_REG
;==========================================
; Activate the Color Selection Dialog Box
;==========================================
invoke DialogBoxParam, hInst, IDD_COLOR, hMainWnd, ADDR ColorProc, NULL
;==========================================
; If it succeded in selecting a new color
;==========================================
.if eax == TRUE
;==============================
; Yes so copy into default var
;==============================
invoke lstrcpy, ADDR szDEFAULT_REG, ADDR szColorBuffer
;==============================
; Update the menu
;==============================
invoke UpdateMenu
.endif
.elseif wParam == IDM_RESTORE
;==========================================
; Restore the default colors into our vars
;==========================================
invoke lstrcpy, ADDR szDEFAULT_BACKGROUND, ADDR DEFAULT_BACKGROUND
invoke lstrcpy, ADDR szDEFAULT_TEXT, ADDR DEFAULT_TEXT
invoke lstrcpy, ADDR szDEFAULT_COMMENT, ADDR DEFAULT_COMMENT
invoke lstrcpy, ADDR szDEFAULT_TYPE, ADDR DEFAULT_TYPE
invoke lstrcpy, ADDR szDEFAULT_STRING, ADDR DEFAULT_STRING
invoke lstrcpy, ADDR szDEFAULT_PSUEDO, ADDR DEFAULT_PSUEDO
invoke lstrcpy, ADDR szDEFAULT_REG, ADDR DEFAULT_REGS
;===================
; Turn Makecaps off
;===================
mov MakeCaps, FALSE
;======================================
; Update the menu
;======================================
invoke UpdateMenu
.elseif wParam == IDM_MAKECAPS
;==============================
; Turn the make caps on or off
;==============================
.if MakeCaps == FALSE
;=============
; Make true
;=============
mov MakeCaps, TRUE
.else
;=============
; Make false
;=============
mov MakeCaps, FALSE
.endif
;=========================
; Update the menu
;=========================
invoke UpdateMenu
.elseif wParam == IDM_HOW
;============================
; This will tell the user
; how to use it
;============================
invoke MessageBox, hMainWnd, ADDR HowUse,ADDR szDisplayName,MB_OK
.elseif wParam == IDM_ABOUT
;===========================
;THIS IS THE HELP-ABOUT
;===========================
invoke DialogBoxParam, hInst, IDD_ABOUT, hMainWnd, ADDR AboutProc, NULL
.endif
;====== end menu commands ======
.elseif uMsg == WM_PAINT
;===========================
; Call to update screen
;===========================
invoke UpdateScreen
.elseif uMsg == WM_DESTROY
;===========================
; Kill the application
;===========================
invoke PostQuitMessage,NULL
return 0
.endif
invoke DefWindowProc,hWin,uMsg,wParam,lParam
ret
WndProc endp
;########################################################################
; End of Main Windows Callback Procedure
;########################################################################
;########################################################################
;########################################################################
; MY FUNCTIONS
;########################################################################
;########################################################################
;########################################################################
; Open Function
;########################################################################
Open proc
;================================================
; Code to open the document and read into mem
;================================================
;=================================
; Create the file
;=================================
invoke CreateFile, offset szFile, GENERIC_READ or GENERIC_WRITE, \
FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL
mov hFile, eax
;===============================
; Test for an error
;===============================
.if eax == INVALID_HANDLE_VALUE
jmp err
.endif
;===============================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -