平时使用VB编程时需要用到"打开文件"类似的对话框时我们一般需要添加一个commondialogue的控件。使用这个控件能完成如“打开”,“另存”,“颜色”,“打印”等众多的功能,但是如果一个功能很简单的程序,使用这个控件却也造成了一些不必要的麻烦。一个是需要安装,再个增加了发布文件包的体积。
下面介绍如何使用Window API显示一个“打开”的对话框:
General.bas:
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type
在调用对话框的按钮的click事件输入下面代码:
Private Sub FileOpen_Click() Dim ofn As OPENFILENAME Dim rtn As String
ofn.lStructSize = Len(ofn) ofn.hwndOwner = Me.hWnd ofn.hInstance = App.hInstance ofn.lpstrFilter = "所有文件" ofn.lpstrFile = Space(254) ofn.nMaxFile = 255 ofn.lpstrFileTitle = Space(254) ofn.nMaxFileTitle = 255 ofn.lpstrInitialDir = App.Path ofn.lpstrTitle = "打开文件" ofn.flags = 6148
rtn = GetOpenFileName(ofn)
If rtn >= 1 Then msgbox ofn.lpstrFile Else msgbox "Cancel Was Pressed" End If End Sub 
|