汇编中使用打开对话框
2008-10-14 09:35:08 来源:WEB开发网如果从命令行参数中不能取得文件名,那么我们就可以使用一个通用对话框(打开文件对话框)要求用户选择一个文件,从而取得要操作的文件对象。
---------------------------------------------------------------------
;文件名: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
--------------------------------------------------------------------------
程序运行时的界面:
选择一个文件后的显示
赞助商链接