说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

microsoft common dialog control控件怎么用?

编辑:说三道四文库 发布时间:2018-04-26 04:10
HTML文档下载 WORD文档下载 PDF文档下载
如题!
兄弟,还是不要用这个讨厌的东东了,用API吧。


Attribute VB_Name = "basFileDialogs"

'-------------------------------'
' Ultrasoft Development Library 2.0 '
'-------------------------------'
'       API File Common Dialogs '
'                   Version 1.0 '
'-------------------------------'
'Copyright ?1992-2001 by Ultrasoft Inc.. All Rights Reserved

'Date Created:
'Last Updated:

Option Explicit
DefInt A-Z

Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_EXPLORER = &H80000
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_NOLONGNAMES = &H40000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_READONLY = &H1
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_SHAREFALLTHROUGH = 2
Public Const OFN_SHAREWARN = 0
Public Const OFN_SHARENOWARN = 1
Public Const OFN_SHOWHELP = &H10
Public Const OFS_MAXPATHNAME = 128

Public Const OFS_FILE_OPEN_FLAGS = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST Or OFN_NODEREFERENCELINKS Or OFN_HIDEREADONLY
Public Const OFS_FILE_SAVE_FLAGS = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST

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

Public OFN As OPENFILENAME

Public Declare Function CommDlgExtendedError Lib "COMDLG32.DLL" () As Long
Public Declare Function GetOpenFileName Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Public Declare Function GetSaveFileName Lib "COMDLG32.DLL" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

Public Enum FileDlgModes
 fdmOpenFile = 1
 fdmSaveFile
 fdmSaveFileNoConfirm
 fdmOpenFileOrPrompt
End Enum


Public Function SelectFile$(OwnerHWnd As Long, Optional Title$ = "", Optional Filter$ = "All Files (*.*)|*.*", Optional FilterIDX As Long = 0, Optional DefFile$, Optional DefPath$, Optional DefExt$, Optional ByVal FileMode As FileDlgModes = fdmOpenFile)
 Dim R As Long, SP As Long, ShortSize As Long, Z As Long
 With OFN
  .lStructSize = Len(OFN)
  .hWndOwner = OwnerHWnd
  .hInstance = App.hInstance
  .lpstrFilter = Replace$(Filter$, "|", Chr$(0)) & Chr$(0)
  .nFilterIndex = FilterIDX
  .lpstrFile = DefFile$ & String$(257 - Len(DefFile$), 0)
  .nMaxFile = Len(.lpstrFile) - 1
  .lpstrFileTitle = .lpstrFile
  .nMaxFileTitle = .nMaxFile
  .lpstrDefExt = DefExt$ & Chr$(0)
  .lpstrInitialDir = IIf(Len(DefPath$), DefPath$, CurDir$) & Chr$(0)
  .lpstrTitle = Title$ & Chr$(0)
  If FileMode = fdmSaveFile Or FileMode = fdmSaveFileNoConfirm Then
   .Flags = OFS_FILE_SAVE_FLAGS
   If FileMode = fdmSaveFile Then .Flags = .Flags Or OFN_OVERWRITEPROMPT
   R = GetSaveFileName(OFN)
  Else
   .Flags = OFS_FILE_OPEN_FLAGS
   If FileMode = fdmOpenFileOrPrompt Then .Flags = .Flags Or OFN_CREATEPROMPT
   R = GetOpenFileName(OFN)
  End If
  If R Then
   SP = InStr(.lpstrFile, Chr$(0))
   If SP Then .lpstrFile = Left$(.lpstrFile, SP - 1)
   SelectFile$ = Trim$(Replace$(.lpstrFile, Chr$(0), ""))
  Else
   Z = CommDlgExtendedError()
   If Z Then MsgBox "不能获取文件。" & vbCr & vbCr & "CommDlgExtendedError 返回 " & Z, vbCritical
  End If
 End With
End Function
不知所云。
这是理由API调用文件打开与保存常规对换框。
microsoft common dialog control里面最常见的东东。当然还有颜色选择、字体、打印、页面设定、打印机设定等等。这仅仅是最常见的文件打开与保存例子程序。我的意思是与其用这么膨大的控件,倒不如用API。现在不会不知所云了吧?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘