【问题标题】:Opening a File Dialog from within a class module in vb6从 vb6 中的类模块中打开文件对话框
【发布时间】:2011-02-24 00:24:05
【问题描述】:

我想知道如何在 vb6 中使用类模块打开文件对话框。我知道如何在表单中进行操作,但我必须从类模块中打开它。

【问题讨论】:

    标签: vb6 fileopendialog


    【解决方案1】:

    看看下面的 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
    

    【讨论】:

      【解决方案2】:

      是的,您可以调用 API 来引发此对话框。

      尽管大多数时候这种需求源于一个破碎的范式。一个类不应该有一个 UI。当你真正需要这个时,你的 Class 可能应该是 UserControl...,问题就消失了。

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 2011-01-04
        • 1970-01-01
        • 2018-06-10
        • 2010-12-11
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多