分享

VFB打开文件对话框_AfxOpenFileDialog

 nxhujiee 2020-07-17
VFB打开文件对话框_AfxOpenFileDialog
━━━━━━━━━━━━━━━━━━━━━━━━━
AfxOpenFileDialog   创建一个Open对话框,让用户指定要打开的驱动器,目录以及文件或文件集的名称。该对话框使用资源管理器风格的用户界面。
语法
Function AfxOpenFileDialog _
ByVal hwndOwner As HWND, _
ByRef wszTitle As WSTRING, _
ByRef wszFile As WSTRING, _
ByRef wszInitialDir As WSTRING, _
ByRef wszFilter As WSTRING, _
ByRef wszDefExt As WSTRING, _
ByVal pdwFlags As DWORD PTR Null, _
ByVal pdwBufLen As DWORD PTR Null _
As CWSTR
 
参数
hwndOwner
[In]拥有对话框的窗口句柄。该成员可以是任何有效的窗口句柄,如果对话框没有所有者,则该成员可以为NULL。
wszTitle
[In]要放置在对话框的标题栏中的字符串。如果此成员为NULL,则系统使用默认标题(即,Open)。
wszFile
[In]用于初始化File Name编辑控件的文件名。
wszInitialDir
[In]初始目录。 如果没有指定初始目录,对话框将使用当前目录
wszFilter
[In]包含“|”对的缓冲区分隔字符串。每对中的第一个字符串是描述过滤器的显示字符串(例如“Text Files”),第二个字符串指定过滤器模式(例如“ .TXT”)。要为单个显示字符串指定多个过滤器模式,请使用分号分隔模式(例如,“ .TXT; * 。DOC; * 。BAK”)。模式字符串可以是有效的文件名字符和星号( * )通配符的组合。模式字符串中不要包含空格。
系统不会更改过滤器的顺序。按wszFilter .中指定的顺序在File Types组合框中显示它们。
wszDefExt
[In]默认扩展名。如果用户无法键入扩展名,则该扩展名将附加到文件名。此字符串可以是任意长度,但只能附加前三个字符。字符串不应包含句点(。)。如果此成员为空,且用户未能键入扩展名,则不会附加任何扩展名。
dwFlags
[In, out]可以用来初始化对话框的一组位标志。当对话框返回时,它设置这些标志以指示用户的输入。此成员可以是以下标志的组合:
OFN_ALLOWMULTISELECT( &h00000200)
File Name列表框允许多项选择
━━━━━━━━━━━━━━━━━━━━━━━━━
示例(单个文件选择)
##############################################################
微软Windows
内容:演示使用AfxOpenFileDialog函数(单选)。
编译器:FreeBasic 32& 64位
 
Copyright (c2016 José Roca. Freeware. Use at your own risk.
THIS CODE AND INFORMATION IS PROVIDED  "AS IS WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND/OR FITNESS FOR PARTICULAR PURPOSE.
###############################################################

#
define UNICODE
#INCLUDE ONCE "Afx/Cwindows.inc"
USING Afx

Const IDC_OFD 1001

Declare Function WinMain (ByVal hInstance As HINSTANCE, _
                         ByVal hPrevInstance As HINSTANCE, _
                         ByVal szCmdLine As ZSTRING PTR, _
                         ByVal nCmdShow As Long) As Long

  
End WinMain(GetModuleHandleW(Null), Null, COMMAND(), SW_NORMAL)

// 前向声明
Declare Function WndProc (ByVal hwnd As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAMAs LRESULT

=========================================================
主要
=========================================================
Function WinMain (ByVal hInstance As HINSTANCE, _
                 ByVal hPrevInstance As HINSTANCE, _
                 ByVal szCmdLine As ZSTRING PTR, _
                 ByVal nCmdShow As Long) As Long

  
// 设置进程DPI认识
  
AfxSetProcessDPIAware

  // 创建主窗口
  
Dim pWindow As CWindow
  pWindow.Create(Null, "AfxOpenFileDialog example", @WndProc)
  
pWindow.SetClientSize(500, 320)
  
pWindow.Center

  // 添加一个按钮
  
pWindow.AddControl("Button", IDC_OFD, "&Open File Dialog", 350, 250, 110, 23)

  
// 发送消息
  
Function pWindow.DoEvents(nCmdShow)

End Function
=========================================================

=========================================================
主窗口回调过程
=========================================================
Function WndProc (ByVal hwnd As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAMAs LRESULT

  Select Case uMsg

     Case WM_COMMAND
        Select Case GET_WM_COMMAND_ID(wParam, lParam)
           
// 如果按ESC键,关闭发送WM_CLOSE消息的应用程序
           
Case IDCANCEL
              If GET_WM_COMMAND_CMD(wParam, lParamBN_CLICKED Then
                 
SendMessageW hwnd, WM_CLOSE, 0, 0
                 Exit Function
              End If
           
// 显示打开文件对话框
           
Case IDC_OFD
              If GET_WM_COMMAND_CMD(wParam, lParamBN_CLICKED Then
                 Dim 
wszFile As WSTRING 260 "*.*"
                 Dim wszInitialDir As String 260 CURDIR
                 Dim wszFilter As WSTRING 260 "BAS files (*.BAS)|*.BAS|"All Files (*.*)|*.*|"
                 Dim dwFlags As DWORD OFN_EXPLORER or OFN_FILEMUSTEXIST or OFN_HIDEREADONLY
                 Dim cws As CWSTR AfxOpenFileDialog(hwnd, "", wszFile, wszInitialDir, wszFilter, "BAS", @dwFlags, Null)
                 
MessageBoxW(hwnd, cws, "File", MB_OK)
                 
Exit Function
              End If
        End Select

           Case 
WM_DESTROY
        // 退出应用程序
        
PostQuitMessage(0)
        
Exit Function

  End Select

  
// Windows消息的默认处理
  
Function DefWindowProcW(hWnd, uMsg, wParam, lParam)

End Function
=========================================================

示例(多个文件选择)

###############################################################
微软Windows
内容:演示使用AfxOpenFileDialog函数(多文件选择)。
编译器:FreeBasic 32& 64位
Copyright (c) 2016 José Roca. Freeware. Use at your own risk.
THIS CODE AND INFORMATION IS PROVIDED  "AS IS WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND/OR FITNESS FOR PARTICULAR PURPOSE.
###############################################################

#
define UNICODE
#INCLUDE ONCE "Afx/Cwindows.inc"
USING Afx

Const IDC_OFD 1001

Declare Function WinMain (ByVal hInstance As HINSTANCE, _
                         ByVal hPrevInstance As HINSTANCE, _
                         ByVal szCmdLine As ZSTRING PTR, _
                         ByVal nCmdShow As Long) As Long

  
End WinMain(GetModuleHandleW(Null), Null, COMMAND(), SW_NORMAL)

// 前向声明
Declare Function WndProc (ByVal hwnd As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAMAs LRESULT

=========================================================
主要
=========================================================
Function WinMain (ByVal hInstance As HINSTANCE, _
                 ByVal hPrevInstance As HINSTANCE, _
                 ByVal szCmdLine As ZSTRING PTR, _
                 ByVal nCmdShow As Long) As Long

  
// 设置进程DPI认识
  
AfxSetProcessDPIAware

  // 创建主窗口
  
Dim pWindow As CWindow
  pWindow.Create(Null, "AfxOpenFileDialog example", @WndProc)
  
pWindow.SetClientSize(500, 320)
  
pWindow.Center

  // 添加一个按钮
  
pWindow.AddControl("Button", IDC_OFD, "&Open File Dialog", 350, 250, 110, 23)

  
// 发送消息
  
Function pWindow.DoEvents(nCmdShow)

End Function
=========================================================

=========================================================
主窗口回调过程
=========================================================
Function WndProc (ByVal hwnd As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAMAs LRESULT

  Select Case uMsg

     Case WM_COMMAND
        Select Case GET_WM_COMMAND_ID(wParam, lParam)
           
// 如果按ESC键,关闭发送WM_CLOSE消息的应用程序
           
Case IDCANCEL
              If GET_WM_COMMAND_CMD(wParam, lParamBN_CLICKED Then
                 
SendMessageW hwnd, WM_CLOSE, 0, 0
                 Exit Function
              End If
           
// 显示打开文件对话框
           
Case IDC_OFD
              If GET_WM_COMMAND_CMD(wParam, lParamBN_CLICKED Then
                 Dim 
wszFile As WSTRING 260 "*.*"
                 Dim wszInitialDir As String 260 CURDIR
                 Dim wszFilter As WSTRING 260 "BAS files (*.BAS)|*.BAS|"All Files (*.*)|*.*|"
                 Dim dwFlags As DWORD OFN_EXPLORER or OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_ALLOWMULTISELECT
                 Dim cws As CWSTR AfxOpenFileDialog(hwnd, "", wszFile, wszInitialDir, wszFilter, "BAS", @dwFlags, Null)
                 
If Len(cwsThen
                    Dim 
nItems As Long AfxStrParseCount(cws)
                    
If nItems Then
                       Dim 
cwsPath As CWSTR AfxStrParse(cws, 1)
                       
MessageBoxW(hwnd, cwsPath, "Path", MB_OK)
                       
For As Long To nItems
                          MessageBoxW(hwnd, AfxStrParse(cws, i), "File", MB_OK)
                       
Next
                    End If
                 End If
                 Exit Function
              End If
        End Select

           Case 
WM_DESTROY
        // 退出应用程序
        
PostQuitMessage(0)
        
Exit Function

  End Select

  
// Windows消息的默认处理
  
Function DefWindowProcW(hWnd, uMsg, wParam, lParam)

End Function
=========================================================  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多