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

📄 mmf.asm

📁 windows汇编语言程序设计 吴中平著 一书所附所有源代码。 该书重点讲解了Windows环境下汇编语言程序设计的基本原理及其实现过程
💻 ASM
字号:
include head.inc
ModalDlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.const
IDD_DIALOG             equ   101
IDR_MENU                 equ   102
IDC_EDIT                  equ   1000
IDM_MAP                  equ   10001
IDM_EXIT                 equ   10002
.data
ofn                 OPENFILENAME <sizeof  OPENFILENAME>
MMFShare      db "MMF",0
TitleName       db "文件打开",0
FilterString      db "所有文件(*.*)",0,"*.*",0,"文本文件(*.TXT)",0,"*.TXT",0,0
buffer             db "请输入文件名",250 dup (0)
.data?
hEdit        HANDLE    ?
hFile         HANDLE    ?
hMapFile   HANDLE   ?
pMemory  dd             ?
rect          RECT        <>
.code
start:
   invoke DialogBoxParam,NULL,IDD_DIALOG,NULL,addr ModalDlgProc,NULL
   invoke ExitProcess,eax

ModalDlgProc proc uses edi hWnd:dword,uMsg:dword,wParam:dword,lParam:dword
   local temp:dword
   .if uMsg==WM_INITDIALOG
      invoke GetDlgItem,hWnd,IDC_EDIT
      mov hEdit,eax
   .elseif uMsg==WM_SIZE
      invoke GetClientRect,hWnd,addr rect
      invoke MoveWindow,hEdit,0,0,rect.right,rect.bottom,TRUE   
   .elseif uMsg==WM_CLOSE
      .if pMemory
         invoke UnmapViewOfFile,pMemory
         invoke CloseHandle,hMapFile
         invoke CloseHandle,hFile
      .endif
      invoke EndDialog,hWnd,NULL
   .elseif uMsg==WM_COMMAND
      mov eax,wParam
      .if !lParam
         .if ax==IDM_MAP
            push hWnd
            pop  ofn.hwndOwner
            mov ofn.lpstrFilter,offset FilterString
            mov ofn.lpstrFile,offset buffer 
            mov ofn.lpstrTitle,offset TitleName
            mov ofn.nMaxFile,260
            mov ofn.Flags,OFN_EXPLORER+OFN_FILEMUSTEXIST+OFN_PATHMUSTEXIST
            invoke GetOpenFileName,addr ofn
            .if  eax
               invoke CreateFile,addr buffer,GENERIC_READ+GENERIC_WRITE, FILE_SHARE_READ,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL
               mov hFile,eax
               invoke CreateFileMapping,eax,NULL,PAGE_READWRITE,0,0,addr MMFShare
               mov hMapFile,eax
               invoke MapViewOfFile,eax,FILE_MAP_READ or FILE_MAP_WRITE,0,0,0
               mov pMemory,eax
               invoke SendMessage,hEdit,WM_SETTEXT,0,pMemory
            .endif
         .elseif ax==IDM_EXIT
            invoke SendMessage,hWnd,WM_CLOSE,0,0
        .endif
     .endif      
  .else
     mov eax,FALSE
     ret
  .endif
  mov eax,TRUE
  ret
ModalDlgProc endp
end start


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -