VFB打開文件對話框_AfxOpenFileDialog
━━━━━━━━━━━━━━━━━━━━━━━━━
AfxOpenFileDialog 創(chuàng)建一個Open對話框,讓用戶指定要打開的驅(qū)動器,目錄以及文件或文件集的名稱。該對話框使用資源管理器風(fēng)格的用戶界面。
語法
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
參數(shù)
hwndOwner
[In]擁有對話框的窗口句柄。該成員可以是任何有效的窗口句柄,如果對話框沒有所有者,則該成員可以為NULL。
wszTitle
[In]要放置在對話框的標(biāo)題欄中的字符串。如果此成員為NULL,則系統(tǒng)使用默認(rèn)標(biāo)題(即,Open)。
wszFile
[In]用于初始化File Name編輯控件的文件名。
wszInitialDir
[In]初始目錄。 如果沒有指定初始目錄,對話框?qū)⑹褂卯?dāng)前目錄
wszFilter
[In]包含“|”對的緩沖區(qū)分隔字符串。每對中的第一個字符串是描述過濾器的顯示字符串(例如“Text Files”),第二個字符串指定過濾器模式(例如“* .TXT”)。要為單個顯示字符串指定多個過濾器模式,請使用分號分隔模式(例如,“* .TXT; *。DOC; *。BAK”)。模式字符串可以是有效的文件名字符和星號( *)通配符的組合。模式字符串中不要包含空格。
系統(tǒng)不會更改過濾器的順序。按wszFilter .中指定的順序在File Types組合框中顯示它們。
wszDefExt
[In]默認(rèn)擴(kuò)展名。如果用戶無法鍵入擴(kuò)展名,則該擴(kuò)展名將附加到文件名。此字符串可以是任意長度,但只能附加前三個字符。字符串不應(yīng)包含句點(diǎn)(。)。如果此成員為空,且用戶未能鍵入擴(kuò)展名,則不會附加任何擴(kuò)展名。
dwFlags
[In, out]可以用來初始化對話框的一組位標(biāo)志。當(dāng)對話框返回時,它設(shè)置這些標(biāo)志以指示用戶的輸入。此成員可以是以下標(biāo)志的組合:
OFN_ALLOWMULTISELECT( &h00000200)
File Name列表框允許多項選擇
━━━━━━━━━━━━━━━━━━━━━━━━━
示例(單個文件選擇)
' ##############################################################
' 微軟Windows
' 內(nèi)容:演示使用AfxOpenFileDialog函數(shù)(單選)。
' 編譯器: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 A 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 LPARAM) As LRESULT
' =========================================================
' 主要
' =========================================================
Function WinMain (ByVal hInstance As HINSTANCE, _
ByVal hPrevInstance As HINSTANCE, _
ByVal szCmdLine As ZSTRING PTR, _
ByVal nCmdShow As Long) As Long
' // 設(shè)置進(jìn)程DPI認(rèn)識
AfxSetProcessDPIAware
' // 創(chuàng)建主窗口
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)
' // 發(fā)送消息
Function = pWindow.DoEvents(nCmdShow)
End Function
' =========================================================
' =========================================================
' 主窗口回調(diào)過程
' =========================================================
Function WndProc (ByVal hwnd As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
Select Case uMsg
Case WM_COMMAND
Select Case GET_WM_COMMAND_ID(wParam, lParam)
' // 如果按ESC鍵,關(guān)閉發(fā)送WM_CLOSE消息的應(yīng)用程序