VFB打開(kāi)文件對話(huà)框_AfxOpenFileDialog
━━━━━━━━━━━━━━━━━━━━━━━━━
AfxOpenFileDialog 創(chuàng )建一個(gè)Open對話(huà)框,讓用戶(hù)指定要打開(kāi)的驅動(dòng)器,目錄以及文件或文件集的名稱(chēng)。該對話(huà)框使用資源管理器風(fēng)格的用戶(hù)界面。
語(yǔ)法
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]擁有對話(huà)框的窗口句柄。該成員可以是任何有效的窗口句柄,如果對話(huà)框沒(méi)有所有者,則該成員可以為NULL。
wszTitle
[In]要放置在對話(huà)框的標題欄中的字符串。如果此成員為NULL,則系統使用默認標題(即,Open)。
wszFile
[In]用于初始化File Name編輯控件的文件名。
wszInitialDir
[In]初始目錄。 如果沒(méi)有指定初始目錄,對話(huà)框將使用當前目錄
wszFilter
[In]包含“|”對的緩沖區分隔字符串。每對中的第一個(gè)字符串是描述過(guò)濾器的顯示字符串(例如“Text Files”),第二個(gè)字符串指定過(guò)濾器模式(例如“* .TXT”)。要為單個(gè)顯示字符串指定多個(gè)過(guò)濾器模式,請使用分號分隔模式(例如,“* .TXT; *。DOC; *。BAK”)。模式字符串可以是有效的文件名字符和星號( *)通配符的組合。模式字符串中不要包含空格。
系統不會(huì )更改過(guò)濾器的順序。按wszFilter .中指定的順序在File Types組合框中顯示它們。
wszDefExt
[In]默認擴展名。如果用戶(hù)無(wú)法鍵入擴展名,則該擴展名將附加到文件名。此字符串可以是任意長(cháng)度,但只能附加前三個(gè)字符。字符串不應包含句點(diǎn)(。)。如果此成員為空,且用戶(hù)未能鍵入擴展名,則不會(huì )附加任何擴展名。
dwFlags
[In, out]可以用來(lái)初始化對話(huà)框的一組位標志。當對話(huà)框返回時(shí),它設置這些標志以指示用戶(hù)的輸入。此成員可以是以下標志的組合:
OFN_ALLOWMULTISELECT( &h00000200)
File Name列表框允許多項選擇
━━━━━━━━━━━━━━━━━━━━━━━━━
示例(單個(gè)文件選擇)
' ##############################################################
' 微軟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 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
' // 設置進(jìn)程DPI認識
AfxSetProcessDPIAware
' // 創(chuàng )建主窗口
Dim pWindow As CWindow
pWindow.Create(Null, "AfxOpenFileDialog example", @WndProc)
pWindow.SetClientSize(500, 320)
pWindow.Center
' // 添加一個(gè)按鈕
pWindow.AddControl("Button", , IDC_OFD, "&Open File Dialog", 350, 250, 110, 23)
' // 發(fā)送消息
Function = pWindow.DoEvents(nCmdShow)
End Function
' =========================================================
' =========================================================
' 主窗口回調過(guò)程
' =========================================================
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消息的應用程序