蓝信子 发表于 2008-12-24 11:59:30

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

  平时使用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
  
  
   <
页: [1]
查看完整版本: 使用Windows API函数显示打开文件对话框