VB6のクラスモジュール内からファイルダイアログを開く
-
04-10-2019 - |
質問
VB6のクラスモジュールを使用してファイルダイアログを開く方法を知りたいです。フォームでやる方法を知っていますが、クラスモジュール内から開く必要があります。
解決
以下のAPIをご覧ください。
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
使用中のサンプルは次のとおりです。
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private 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
Private Function FileOpenDialog()
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
sFilter = "Text Files (*.txt)" & Chr(0) & "*.TXT" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\"
OpenFile.lpstrTitle = "Select File"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
End Function
他のヒント
はい、APIを呼び出してこのダイアログを上げることができます。
ほとんどの場合、この種の必要性は壊れたパラダイムに由来しています。クラスにはUIがないはずです。あなたがこれに本当の必要性を持っているとき、あなたのクラスはおそらくusercontrolであるはずです...そして問題は消えます。
所属していません StackOverflow