📄 student(8).asm
字号:
.386
.model flat,stdcall
option casemap:none
include Student.inc
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke GetCommandLine
invoke InitCommonControls
mov CommandLine,eax
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax
_ProcInsertDlg proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
mov eax, uMsg
.if eax == WM_INITDIALOG
invoke SetWindowText, hDlg, addr EditInsert
invoke ShowWindow, hDlg, SW_SHOWNORMAL
invoke UpdateWindow, hDlg
.elseif eax == WM_CLOSE
invoke EndDialog, hDlg, NULL
.elseif eax == WM_COMMAND
mov eax, wParam
.if eax == IDOK
invoke GetDlgItemText, hDlg, IDC_TEXTNO, addr pMemory, 8
invoke GetDlgItemText, hDlg, IDC_TEXTNAME, addr strName, 6
invoke GetDlgItemText, hDlg, IDC_TEXTASM, addr strASM, 3
invoke GetDlgItemText, hDlg, IDC_TEXTCA, addr strCA, 3
invoke GetDlgItemText, hDlg, IDC_TEXTOS, addr strOS, 3
; invoke SendMessage,hwndEdit,WM_GETTEXT,MEMSIZE-1,pMemory
; invoke WriteFile, hFile, pMemory, GeteaxValue, addr SizeReadWrite, NULL
invoke EndDialog, hDlg, NULL
;;;;;;; invoke SetDlgItemText, hWnd, IDC_STNO, addr strNo
.elseif eax == IDCANCEL
invoke EndDialog, hDlg, NULL
.endif
.else
mov eax, FALSE
ret
.endif
mov eax, TRUE
ret
_ProcInsertDlg endp
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hWnd:HWND
mov wc.cbSize,sizeof WNDCLASSEX
mov wc.style,CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc,offset WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,DLGWINDOWEXTRA
push hInst
pop wc.hInstance
mov wc.hbrBackground,COLOR_BTNFACE+1
mov wc.lpszMenuName,IDM_MENU
mov wc.lpszClassName,offset ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx,addr wc
invoke CreateDialogParam,hInstance,IDD_DIALOG,NULL,addr WndProc,NULL
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
.while TRUE
invoke GetMessage, addr msg, NULL, 0, 0
.break .if eax == 0
invoke IsDialogMessage, hDlg, addr msg
invoke TranslateMessage, addr msg
invoke DispatchMessage, addr msg
.endw
mov eax,msg.wParam
ret
WinMain endp
WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
mov eax,uMsg
; .if eax == WM_INITDIALOG
; push hWnd
; pop hWnd
.if eax == WM_COMMAND
mov eax,wParam
and eax,0FFFFh
.if eax == IDM_FILE_EXIT
invoke SendMessage,hWin,WM_CLOSE,0,0
.elseif eax == IDM_HELP_ABOUT
invoke ShellAbout,hWin,addr AppName,addr AboutMsg,NULL
.elseif eax == IDM_FILE_OPEN
invoke CreateFile, \
addr FileName, \
GENERIC_READ or GENERIC_WRITE, \
FILE_SHARE_READ or FILE_SHARE_WRITE, \
NULL, \
OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, \
NULL
mov hFile, eax
invoke GlobalAlloc, GMEM_MOVEABLE or GMEM_ZEROINIT, MEMSIZE
mov hMemory, eax
invoke GlobalLock, hMemory
mov pMemory, eax
invoke ReadFile, hFile, pMemory, MEMSIZE-1, addr SizeReadWrite, NULL
; invoke SendMessage, hWnd, WM_SETTEXT, NULL, pMemory
invoke SetDlgItemText, hWnd, IDC_TEXTAREA, pMemory
; invoke CloseHandle, hFile
; invoke GlobalUnlock,pMemory
; invoke GlobalFree,hMemory
.elseif eax == IDM_FILE_SAVE
; invoke CreateFile, \
; ADDR FileName, \
; GENERIC_READ or GENERIC_WRITE , \
; FILE_SHARE_READ or FILE_SHARE_WRITE, \
; NULL, \
; CREATE_ALWAYS, \
; FILE_ATTRIBUTE_ARCHIVE, \
; NULL
; mov hFile, eax
; invoke GlobalAlloc, GMEM_MOVEABLE or GMEM_ZEROINIT, MEMSIZE
; mov hMemory, eax
; invoke GlobalLock, hMemory
; mov pMemory, eax
; invoke SendMessage, hWnd, WM_GETTEXT, MEMSIZE-1, pMemory
; invoke WriteFile, hFile, pMemory, MEMSIZE-1, ADDR SizeReadWrite, NULL
; invoke CloseHandle, hFile
; invoke GlobalUnlock,pMemory
; invoke GlobalFree,hMemory
.elseif eax == IDM_EDIT_INSERT
invoke DialogBoxParam, hInstance, IDD_INSERT, hWin, addr _ProcInsertDlg, NULL
; invoke WriteFile, hFile, addr lptrInsert, 8, addr SizeReadWrite, NULL
; invoke CloseHandle, hFile
; invoke CreateFile, \
; addr FileName, \
; GENERIC_READ or GENERIC_WRITE, \
; FILE_SHARE_READ or FILE_SHARE_WRITE, \
; NULL, \
; OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, \
; NULL
; mov hFile, eax
;
; invoke ReadFile, hFile, pMemory, MEMSIZE-1, addr SizeReadWrite, NULL
;
; invoke SetDlgItemText, hWnd, IDC_TEXTAREA, pMemory
.endif
; .elseif eax==WM_SIZE`
.elseif eax==WM_CLOSE
invoke DestroyWindow,hWin
.elseif uMsg==WM_DESTROY
invoke PostQuitMessage, NULL
.else
invoke DefWindowProc, hWin, uMsg, wParam, lParam
ret
.endif
xor eax,eax
ret
WndProc endp
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -