⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm_2_htm.asm

📁 一类在vc下编制的压缩解压缩源代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	;================================
	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 + -