WEB开发网
开发学院软件开发汇编语言 汇编中使用打开对话框 阅读

汇编中使用打开对话框

 2008-10-14 09:35:08 来源:WEB开发网   
核心提示:如果从命令行参数中不能取得文件名,那么我们就可以使用一个通用对话框(打开文件对话框)要求用户选择一个文件,汇编中使用打开对话框,从而取得要操作的文件对象,-;文件名:16.asm

如果从命令行参数中不能取得文件名,那么我们就可以使用一个通用对话框(打开文件对话框)要求用户选择一个文件,从而取得要操作的文件对象。

---------------------------------------------------------------------
;文件名:16.asm,显示一个打开对话框
    .386
    .model flat, stdcall
    option casemap:none
    include windows.inc
    include kernel32.inc
    include user32.inc
    include comdlg32.inc
    includelib kernel32.lib
    includelib user32.lib
    includelib comdlg32.lib
    .data
ofn      OPENFILENAME <0>           ;打开文件对话框要用到该结构
szFileName   db 256 dup(0)
szFilterString db '可执行文件(*.exe)',0,'*.exe',0,0 ;文件过滤器字符串
szMyTitle   db '请选择要打开的文件', 0
szMessageTitle db '你选择的文件是',0
    .code
GetFileNameFromDialog  proc
    mov ofn.lStructSize,sizeof ofn       ;结构的大小
    mov ofn.lpstrFilter,offset szFilterString  ;文件过滤器
    mov ofn.lpstrFile,offset szFileName     ;文件名的存放位置
    mov ofn.nMaxFile,256            ;文件名的最大长度
    mov ofn.Flags,OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_LONGNAMES
    mov ofn.lpstrTitle,offset szMyTitle     ;“打开”对话框的标题
    invoke GetOpenFileName,addr ofn       ;显示打开对话框
    ret
GetFileNameFromDialog  endp
Start:
    call GetFileNameFromDialog
    .if eax!=0         ;若选择有文件,则显示出来
    invoke MessageBoxA,NULL,addr szFileName,addr szMessageTitle,NULL
    .endif
    invoke ExitProcess,NULL   ;结束程序
    end Start
--------------------------------------------------------------------------

程序运行时的界面:

选择一个文件后的显示

Tags:汇编 使用 打开

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接