使用Windows API函数显示打开文件对话框

类别:.NET开发 点击:0 评论:0 推荐:

平时使用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

本文地址:http://com.8s8s.com/it/it44346.htm