CFileDialog 類別
封裝用於檔案開啟或檔案儲存作業的通用對話方塊。
語法
class CFileDialog : public CCommonDialog
成員
公用建構函式
名稱 | 描述 |
---|---|
CFileDialog::CFileDialog | 建構 CFileDialog 物件。 |
公用方法
受保護的方法
名稱 | 描述 |
---|---|
CFileDialog::OnButtonClicked | 按一下按鈕時呼叫。 |
CFileDialog::OnCheckButtonToggled | 核取/取消核取核取方塊時呼叫。 |
CFileDialog::OnControlActivating | 當控制項處於作用中狀態時呼叫。 |
CFileDialog::OnFileNameChange | 處理WM_NOTIFY CDN_SELCHANGE訊息。 |
CFileDialog::OnFileNameOK | 驗證對話方塊中輸入的檔案名。 |
CFileDialog::OnFolderChange | 處理WM_NOTIFY CDN_FOLDERCHANGE訊息。 |
CFileDialog::OnInitDone | 處理WM_NOTIFY CDN_INITDONE訊息。 |
CFileDialog::OnItemSelected | 選取容器專案時呼叫。 |
CFileDialog::OnLBSelChangedNotify | 可讓您在檔案選取範圍變更時執行自訂動作。 |
CFileDialog::OnShareViolation | 處理共用違規。 |
CFileDialog::OnTypeChange | 處理WM_NOTIFY CDN_TYPECHANGE訊息。 |
公用資料成員
名稱 | 描述 |
---|---|
CFileDialog::m_ofn | Windows OPENFILENAME 結構。 提供基本檔案對話方塊參數的存取權。 |
備註
一般檔案對話方塊可讓您實作檔案選取對話方塊,例如, 以符合 Windows 標準的方式開啟檔案 和 另存新 檔。
您可以 CFileDialog
和提供的建構函式一起使用,也可以從 CFileDialog
衍生自己的對話方塊類別,並撰寫建構函式以符合您的需求。 不論是哪一種情況,這些對話方塊的行為都會像標準 MFC 對話方塊一樣,因為它們衍生自 CCommonDialog 類別 。 CFileDialog
依賴 Windows 中包含的 COMMDLG.DLL 檔案。
使用 Windows Vista 或更新版本的外觀和功能 CFileDialog
與舊版 Windows 不同。 如果編譯器並在 Windows Vista 或更新版本下執行程式,則預設 CFileDialog
會自動使用新的 Windows Vista 或更新版本樣式,而不需要變更程式碼。 使用建 構函式中的 bVistaStyle 參數,手動覆寫此自動更新。 自動更新的例外是自訂對話方塊。 它們不會轉換成新的樣式。 如需建構函式的詳細資訊,請參閱 CFileDialog::CFileDialog 。
注意
當您使用 CFileDialog
時,控制項識別碼系統在 Windows Vista 或更新版本中與舊版 Windows 不同。 您必須先更新程式碼中控制項的所有參考 CFileDialog
,才能從舊版 Windows 移植專案。
Windows Vista 或更新版本不支援某些 CFileDialog
方法。 如需是否支援方法的相關資訊,請參閱個別方法主題。 此外,Windows Vista 或更新版本不支援下列繼承的函式:
類別的 CFileDialog
Windows 訊息會根據您使用的作業系統而有所不同。 例如,Windows XP 不支援 類別的 CFileDialog
CDialog::OnCancel 和 CDialog::OnOK 。 不過,Windows Vista 和更新版本的作業系統確實支援它們。 如需所產生之不同訊息及其接收順序的詳細資訊,請參閱 CFileDialog 範例:記錄事件順序 。
若要使用 CFileDialog
物件,請先使用 CFileDialog
建構函式建立 物件。 建構對話方塊之後,您可以設定或修改 CFileDialog::m_ofn 結構中的任何 值,以初始化對話方塊控制項的值或狀態。 結構 m_ofn
的類型為 OPENFILENAME
。 如需詳細資訊,請參閱 Windows SDK 中的 OPENFILENAME 結構。
初始化對話方塊控制項之後,請呼叫 CFileDialog::D oModal 方法來顯示對話方塊,讓使用者可以輸入路徑和檔案名。 DoModal
會傳回使用者按一下 [確定] 或 [取消] 或 [IDCANCEL] 按鈕。 如果 DoModal
傳回 IDOK,您可以使用其中 CFileDialog
一個公用成員函式來擷取使用者放入的資訊。
注意
在 Windows Vista 或更新版本下,多次呼叫 IFileDialog::SetFileTypes 會造成錯誤。 第二個 CFileDialog
對 實例的呼叫 SetFileTypes
將會傳回 Windows Vista 或更新版本中E_UNEXPECTED。 某些 CFileDialog
方法函式會呼叫 SetFileTypes
。 例如,針對 相同 實例對 的兩個 CFileDialog
呼叫 CFileDialog::DoModal
會產生 ASSERT 。
CFileDialog
包含數個受保護的成員,可讓您自訂處理共用違規、檔案名驗證和清單方塊變更通知。 這些受保護的成員是大部分應用程式不需要使用的回呼函式,因為預設處理會自動執行。 這些函式不需要訊息對應專案,因為它們是標準虛擬函式。
您可以使用 Windows CommDlgExtendedError 函式來判斷對話方塊初始化期間是否發生錯誤,並深入瞭解錯誤。
物件的解構 CFileDialog
會自動處理。 您不需要呼叫 CDialog::EndDialog 。
若要讓使用者選取多個檔案,請在呼叫 DoModal
之前設定OFN_ALLOWMULTISELECT旗標。 您必須提供您自己的檔案名緩衝區,以容納傳回的多個檔案名清單。 在建構 CFileDialog
之後,將 取代 m_ofn.lpstrFile
為您配置的緩衝區指標,但在呼叫 DoModal
之前,請執行此動作。
此外,您必須使用 所 m_ofn.lpstrFile
指向之緩衝區中的字元數來設定 m_ofn.nMaxFile
。 如果您將選取的檔案數目上限設定為 n
,所需的緩衝區大小為 n * (_MAX_PATH + 1) + 1
。 緩衝區中傳回的第一個專案是選取檔案的資料夾路徑。 針對 Windows Vista 或更新樣式的對話方塊,目錄和檔案名字串會以 Null 結尾,並在姓氏後面加上額外的 Null 字元。 此格式可讓 Explorer 樣式對話方塊傳回包含空格的長檔名。 對於舊樣式對話方塊,目錄和檔案名字串會以空格分隔,而函式會針對具有空格的檔案名使用簡短檔案名。
下列範例示範如何使用緩衝區來擷取及列出多個檔案名。
#define MAX_CFileDialog_FILE_COUNT 99
#define FILE_LIST_BUFFER_SIZE ((MAX_CFileDialog_FILE_COUNT * (MAX_PATH + 1)) + 1)
CString fileName;
wchar_t* p = fileName.GetBuffer( FILE_LIST_BUFFER_SIZE );
CFileDialog dlgFile(TRUE);
OPENFILENAME& ofn = dlgFile.GetOFN( );
ofn.Flags |= OFN_ALLOWMULTISELECT;
ofn.lpstrFile = p;
ofn.nMaxFile = FILE_LIST_BUFFER_SIZE;
dlgFile.DoModal();
fileName.ReleaseBuffer();
wchar_t* pBufEnd = p + FILE_LIST_BUFFER_SIZE - 2;
wchar_t* start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
{
_tprintf(_T("Path to folder where files were selected: %s\r\n\r\n"), start );
p++;
int fileCount = 1;
while( ( p < pBufEnd ) && ( *p ) )
{
start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
_tprintf(_T("%2d. %s\r\n"), fileCount, start );
p++;
fileCount++;
}
}
若要變更緩衝區大小以回應選取多個檔案名的使用者,您必須從 CFileDialog
衍生新的類別,並覆寫 CFileDialog::OnFileNameChange 方法。
如果您從 CFileDialog
衍生新的類別,您可以使用訊息對應來處理任何訊息。 若要擴充預設訊息處理,請從 CFileDialog
衍生類別、將訊息對應新增至新類別,並提供新訊息的成員函式。 您不需要提供勾點函式來自訂對話方塊。
若要自訂對話方塊,請從 CFileDialog
衍生類別、提供自訂對話方塊範本,以及新增訊息對應來處理擴充控制項中的通知訊息。 將任何未處理的訊息傳遞至基類。 您不需要自訂攔截函式。
當您使用 的 Windows Vista 或更新版本樣式 CFileDialog
時,無法使用訊息對應和對話方塊範本。 相反地,您必須針對類似的功能使用 COM 介面。
如需如何使用 CFileDialog
的詳細資訊,請參閱 通用對話方塊類別 。
繼承階層架構
CFileDialog
需求
標頭: afxdlgs.h
CFileDialog::AddCheckButton
將核取按鈕新增至對話方塊。
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
參數
dwIDCtl
要新增之核取按鈕的識別碼。
strLabel
核取按鈕名稱。
bChecked
布林值,指出核取按鈕的目前狀態。 如果已核取則為 TRUE;否則為 FALSE
備註
CFileDialog::AddComboBox
將下拉式方塊新增至對話方塊。
HRESULT AddComboBox(DWORD dwIDCtl);
參數
dwIDCtl
要加入的下拉式方塊識別碼。
備註
CFileDialog::AddControlItem
將專案新增至對話方塊中的容器控制項。
HRESULT AddControlItem(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
參數
dwIDCtl
要加入專案之容器控制項的識別碼。
dwIDItem
專案的識別碼。
strLabel
專案的文字。
備註
CFileDialog::AddEditBox
將編輯方塊新增至對話方塊。
HRESULT AddEditBox(
DWORD dwIDCtl,
const CString& strText);
參數
dwIDCtl
要加入之編輯方塊的識別碼。
strText
編輯方塊名稱。
備註
CFileDialog::AddMenu
將功能表新增至對話方塊。
HRESULT AddMenu(
DWORD dwIDCtl,
const CString& strLabel);
參數
dwIDCtl
要加入之功能表的識別碼。
strLabel
功能表名稱。
備註
CFileDialog::AddPlace
將資料夾新增至可供使用者開啟或儲存專案的位置清單。
void AddPlace(
LPCWSTR lpszFolder,
FDAP fdap = FDAP_TOP) throw();
void AddPlace(
IShellItem* psi,
FDAP fdap = FDAP_TOP) throw();
參數
lpszFolder
要提供給使用者的資料夾路徑。 這只能是資料夾。
fdap
指定資料夾放置於清單中的位置。
Psi
IShellItem 的指標,代表要提供給使用者使用的資料夾。 這只能是資料夾。
備註
CFileDialog::AddPushButton
將按鈕新增至對話方塊。
HRESULT AddPushButton(
DWORD dwIDCtl,
const CString& strLabel);
參數
dwIDCtl
要新增之按鈕的識別碼。
strLabel
按鈕名稱。
備註
CFileDialog::AddRadioButtonList
將選項按鈕(也稱為選項按鈕)群組新增至對話方塊。
HRESULT AddRadioButtonList(DWORD dwIDCtl);
參數
dwIDCtl
要新增的選項按鈕群組識別碼。
備註
CFileDialog::AddSeparator
將分隔符號加入對話方塊。
HRESULT AddSeparator(DWORD dwIDCtl);
參數
dwIDCtl
分隔符號加入的識別碼。
備註
CFileDialog::AddText
將文字新增至對話方塊。
HRESULT AddText(
DWORD dwIDCtl,
const CString& strText);
參數
dwIDCtl
要加入之文字的識別碼。
strText
文字名稱。
備註
CFileDialog::ApplyOFNToShellDialog
更新 的 目前狀態CFileDialog 以儲存在資料結構中的 m_ofn
值為基礎。
void ApplyOFNToShellDialog();
備註
在 Windows Vista 之前的 Windows 版本中,成員 OPENFILENAME 資料結構會持續與 的狀態 CFileDialog
同步處理。 m_ofn 成員變數的任何變更 都會立即反映在對話方塊的狀態中。 此外,對話方塊狀態的任何變更都會立即更新 m_ofn
成員變數。
在 Windows Vista 或更新版本中,成員變數和 狀態 CFileDialog
中的 m_ofn
值不保證會同步處理。 此函式會強制更新 的狀態 CFileDialog
以符合 m_ofn
結構。 Windows 會在 CFileDialog::D oModal 期間 自動呼叫此函式 。
如需如何在 Windows Vista 或更新版本下使用 CFileDialog
類別的詳細資訊,請參閱 CFileDialog 類別 。
範例
請參閱 CFileDialog::UpdateOFNFromShellDialog 的範例 。
CFileDialog::CFileDialog
呼叫此函式以建構標準 Windows 檔案對話方塊。
explicit CFileDialog(
BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL,
DWORD dwSize = 0,
BOOL bVistaStyle = TRUE);
參數
bOpenFileDialog
[in]參數,指定要建立的對話方塊類型。 將它設定為 TRUE 以建構 [開啟 檔案] 對話方塊。 將它設定為 FALSE,以建構 [ 檔案另存新檔 ] 對話方塊。
lpszDefExt
[in]預設副檔名。 如果使用者未在 [檔案名] 方塊中包含已知的副檔名(其中一個在使用者電腦上有關聯),則 lpszDefExt 指定的 副檔名會自動附加至檔案名。 如果此參數為 Null,則不會附加任何擴充功能。
lpszFileName
[in]出現在 [檔案名] 方塊中的初始檔案名。 如果為 Null,則不會顯示初始檔案名。
dwFlags
[in]您可以用來自訂對話方塊的一或多個旗標組合。 如需這些旗標的描述,請參閱 Windows SDK 中的 OPENFILENAME 結構。 如果您修改 m_ofn.Flags
結構成員,請在變更中使用位 OR 運算子,讓預設行為保持不變。
lpszFilter
[in]一系列字串組,指定您可以套用至檔案的篩選準則。 如果您指定檔案篩選,則只有符合篩選準則的檔案會出現在 [檔案] 清單中。 如需如何使用檔案篩選的詳細資訊,請參閱一節。
pParentWnd
[in]檔案對話方塊之父視窗或擁有者視窗的指標。
dwSize
[in]結構的大小 OPENFILENAME
。 此值取決於作業系統版本。 MFC 使用此參數來判斷要建立的適當對話方塊種類。 預設大小 0 表示 MFC 程式碼會根據程式執行所在的作業系統版本來判斷要使用的正確對話方塊大小。
bVistaStyle
[in] 注意 這個參數可在 Visual Studio 2008 和更新版本中使用,而且只有在您在 Windows Vista 或更新版本中執行時,才會使用新樣式對話方塊。
指定檔案對話方塊樣式的參數。 將它設定為 TRUE,以使用新的 Vista 樣式檔案對話方塊。 否則,將會使用舊樣式的對話方塊。 如需在 Vista 下執行的詳細資訊,請參閱一節。
備註
根據 bOpenFileDialog 的值 ,建構 [ 檔案開啟 ] 或 [檔案另存新 檔] 對話方塊。
使用 lpszDefExt 指定預設延伸模組可能不會產生您預期的行為,因為它很少可預測哪些副檔名在使用者的電腦上具有檔案關聯。 如果您需要對預設延伸模組的附加有更多的控制權,您可以從 衍生自己的類別 CFileDialog
,並覆寫 CFileDialog::OnFileNameOK
方法以執行您自己的延伸模組處理。
若要讓使用者選取多個檔案,請在呼叫 DoModal 之前設定OFN_ALLOWMULTISELECT旗標。 您必須提供您自己的檔案名緩衝區,才能儲存傳回的多個檔案名清單。 在建構 CFileDialog 之後,將 取代 m_ofn.lpstrFile
為您配置的緩衝區指標,但在呼叫 DoModal
之前,請執行此動作。 此外,您必須使用 所 m_ofn.lpstrFile
指向之緩衝區中的字元數進行設定 m_ofn.nMaxFile
。 如果您將選取的檔案數目上限設定為 n ,必要的緩衝區大小為 n
*(_MAX_PATH + 1) + 1。 例如:
#define MAX_CFileDialog_FILE_COUNT 99
#define FILE_LIST_BUFFER_SIZE ((MAX_CFileDialog_FILE_COUNT * (MAX_PATH + 1)) + 1)
CString fileName;
wchar_t* p = fileName.GetBuffer( FILE_LIST_BUFFER_SIZE );
CFileDialog dlgFile(TRUE);
OPENFILENAME& ofn = dlgFile.GetOFN( );
ofn.Flags |= OFN_ALLOWMULTISELECT;
ofn.lpstrFile = p;
ofn.nMaxFile = FILE_LIST_BUFFER_SIZE;
dlgFile.DoModal();
fileName.ReleaseBuffer();
wchar_t* pBufEnd = p + FILE_LIST_BUFFER_SIZE - 2;
wchar_t* start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
{
_tprintf(_T("Path to folder where files were selected: %s\r\n\r\n"), start );
p++;
int fileCount = 1;
while( ( p < pBufEnd ) && ( *p ) )
{
start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
_tprintf(_T("%2d. %s\r\n"), fileCount, start );
p++;
fileCount++;
}
}
若要讓使用者使用滑鼠或鍵盤調整總管樣式對話方塊的大小,請設定OFN_ENABLESIZING旗標。 只有在您提供勾點程式或自訂範本時,才需要設定此旗標。 旗標只適用于 [檔案總管] 樣式對話方塊;無法調整舊樣式對話方塊的大小。
lpszFilter 參數是用來判斷檔案必須顯示在檔案清單中之檔案名的類型。 字串組中的第一個字串描述篩選準則;第二個字串表示要使用的副檔名。 您可以使用分號 (';' 字元) 做為分隔符號來指定多個延伸模組。 字串結尾為兩個垂直橫條字元 ( ||
),後面接著 Null 字元。 您也可以針對此參數使用 CString 物件。
例如,Microsoft Excel 可讓使用者開啟副檔名為 .xlc (chart) 或 .xls (worksheet) 的檔案等等。 Excel 的篩選可以撰寫為:
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
不過,如果您打算使用此字串直接更新 OPENFILENAME
結構,您應該使用 Null 字元來分隔字串, '\0'
而不是垂直線 ( '|'
)。
bVistaStyle 參數僅適用于在 Windows Vista 或更新版本下執行時。 在舊版的 Windows 下,會忽略此參數。 如果 bVistaStyle 設定為 TRUE,當您使用 Visual Studio 2008 或更新版本編譯器時,將會使用新的 Vista 樣式 檔案對話方塊 。 否則,將會使用先前的 MFC 樣式 檔案對話方塊 。
對話方塊範本不支援以 bVistaStyle 為基礎的 對話方塊
範例
請參閱 CFileDialog::D oModal 的 範例 。
CFileDialog::D oModal
呼叫此函式以顯示 Windows 通用檔案對話方塊,並允許使用者流覽檔案和目錄,並輸入檔案名。
virtual INT_PTR DoModal();
傳回值
IDOK 或 IDCANCEL。 如果傳回 IDCANCEL,請呼叫 Windows CommDlgExtendedError 函式來判斷是否發生錯誤。
IDOK 和 IDCANCEL 是常數,指出使用者是否選取 [確定] 或 [取消] 按鈕。
備註
如果您想要藉由設定 結構的成員 m_ofn
來初始化各種檔案對話方塊選項,您應該先執行此動作,再呼叫 DoModal
,但在建構對話方塊物件之後。
例如,如果您想要允許使用者選取多個檔案,請在呼叫 DoModal
之前設定OFN_ALLOWMULTISELECT旗標,如本主題的程式碼範例所示。
當使用者按一下對話方塊的 [確定] 或 [取消] 按鈕,或從對話方塊的控制項功能表中選取 [關閉] 選項時,控制項會傳回至您的應用程式。 然後,您可以呼叫其他成員函式,以擷取使用者輸入到對話方塊中的設定或資訊。
DoModal
是從 類別 CDialog
覆寫的虛擬函式。
範例
void CMyClass::OnFileOpen()
{
// szFilters is a text string that includes two file name filters:
// "*.my" for "MyType Files" and "*.*' for "All Files."
TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");
// Create an Open dialog; the default file name extension is ".my".
CFileDialog fileDlg(TRUE, _T("my"), _T("*.my"),
OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
// Display the file dialog. When user clicks OK, fileDlg.DoModal()
// returns IDOK.
if(fileDlg.DoModal() == IDOK)
{
CString pathName = fileDlg.GetPathName();
// Implement opening and reading file in here.
//Change the window's title to the opened file's title.
CString fileName = fileDlg.GetFileTitle();
SetWindowText(fileName);
}
}
CFileDialog::EnableOpenDropDown
在對話方塊中的 [開啟] 或 [儲存] 按鈕上啟用下拉式清單。
HRESULT EnableOpenDropDown(DWORD dwIDCtl);
參數
dwIDCtl
下拉式清單的識別碼。
備註
CFileDialog::EndVisualGroup
停止將專案加入至對話方塊中的視覺群組。
HRESULT EndVisualGroup();
傳回值
如果成功,則傳回S_OK;否則為錯誤值。
備註
CFileDialog::GetCheckButtonState
擷取對話方塊中核取方塊的目前狀態。
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
參數
dwIDCtl
核取方塊的識別碼。
bChecked
核取方塊的狀態。 TRUE 表示已核取;FALSE 表示未核取。
備註
CFileDialog::GetControlItemState
擷取對話方塊中找到之容器控制項中專案的目前狀態。
HRESULT GetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF& dwState);
參數
dwIDCtl
容器控制項的識別碼。
dwIDItem
專案的識別碼。
dwState
從 CDCONTROLSTATE 列舉接收多個值的變數參考,指出控制項的目前狀態。
備註
CFileDialog::GetControlState
擷取指定控制項的目前可見度和啟用狀態。
HRESULT GetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF& dwState);
參數
dwIDCtl
控制項的識別碼。
dwState
從 CDCONTROLSTATE 列舉接收一或多個值的變數參考,指出控制項的目前狀態。
備註
CFileDialog::GetEditBoxText
擷取編輯方塊控制項中的目前文字。
HRESULT GetEditBoxText(
DWORD dwIDCtl,
CString& strText);
參數
dwIDCtl
編輯方塊的識別碼。
strText
文字值。
備註
CFileDialog::GetFileExt
呼叫此函式,以擷取在對話方塊中輸入之檔案名的副檔名。
CString GetFileExt() const;
傳回值
檔案名的副檔名。
備註
例如,如果輸入的檔案名是 DATA.TXT, GetFileExt
則會傳回 「TXT」。
如果 m_ofn.Flags
已設定OFN_ALLOWMULTISELECT旗標,則此字串包含一連串以 Null 終止的字串,其中第一個字串是選取之檔案群組的目錄路徑,後面接著使用者選取的所有檔案名稱。 若要擷取檔案路徑名稱,請使用 GetStartPosition 和 GetNextPathName 成員函式。
CFileDialog::GetFileName
呼叫此函式,以擷取對話方塊中輸入的檔案名名稱。
CString GetFileName() const;
傳回值
檔案的檔名。
備註
檔案名同時包含前置詞和副檔名。 例如, GetFileName
會傳回 「TEXT。檔案 C:\FILES\TEXT.DAT 的 DAT。
如果 m_ofn.Flags
已 OFN_ALLOWMULTISELECT
設定旗標,您應該呼叫 GetStartPosition 和 GetNextPathName 來擷取檔案路徑名稱。
CFileDialog::GetFileTitle
呼叫此函式,以擷取對話方塊中輸入的檔案標題。
CString GetFileTitle() const;
傳回值
檔案的標題。
備註
檔案的標題只包含其前置詞,不含路徑或副檔名。 例如, GetFileTitle
會傳回 C:\FILES\TEXT.DAT 檔案的 「TEXT」。
如果 m_ofn.Flags
已設定OFN_ALLOWMULTISELECT旗標,則此字串包含一連串以 Null 終止的字串,其中第一個字串是選取之檔案群組的目錄路徑,後面接著使用者選取的所有檔案名稱。 基於這個理由,請使用 GetStartPosition 和 GetNextPathName 成員函式來擷取清單中的下一個檔案名。
範例
請參閱 CFileDialog::D oModal 的 範例 。
CFileDialog::GetFolderPath
呼叫這個成員函式,以擷取 [檔案總管] 樣式的 [開啟] 或 [另存新檔] 通用對話方塊目前開啟的資料夾或目錄的路徑。
CString GetFolderPath() const;
傳回值
包含 目前開啟資料夾或目錄的 CString 物件。
備註
對話方塊必須已使用OFN_EXPLORER樣式建立;否則,方法會失敗並產生判斷提示。
您只能在對話方塊顯示時呼叫這個方法。 對話方塊關閉之後,此函式將無法再運作,而且方法會失敗並產生判斷提示。
CFileDialog::GetIFileDialogCustomize
擷取指定 CFileDialog 之內部 COM 物件的指標。
IFileDialogCustomize* GetIFileDialogCustomize();
傳回值
的內部 COM 物件的 CFileDialog
指標。 您有責任適當地釋放此指標。
備註
只有在 Windows Vista 或更新版本下才使用此函式,並將 bVistaStyle 設定為 TRUE 的物件 。 如果您在 bVistaStyle 為 FALSE 時 使用此函式,它會在發行模式中傳回 Null,並在偵錯模式中擲回判斷提示。
如需介面的詳細資訊 IFileDialogCustomize
,請參閱 IFileDialogCustomize 。
範例
此範例會擷取內部 COM 物件。 若要執行此程式碼範例,您必須在 Windows Vista 或更新版本下加以編譯。
// Get the interface pointer
IFileDialogCustomize *customDlgPtr = m_myFileDialogPtr->GetIFileDialogCustomize();
// Make sure that it is not null
if (customDlgPtr != NULL)
{
//
// Perform any interface functionality here
//
// Release the pointer
customDlgPtr->Release();
}
CFileDialog::GetIFileOpenDialog
擷取指定 CFileDialog
之內部 COM 物件的指標。
IFileOpenDialog* GetIFileOpenDialog();
傳回值
的內部 COM 物件的 CFileDialog
指標。 您有責任適當地釋放此指標。
備註
只有在 Windows Vista 或更新版本下才使用此函式,並將 bVistaStyle 設定為 TRUE 的物件 。 如果 CFileDialog
不是 [ 開啟 ] 對話方塊,或 bVistaStyle 設定為 FALSE,則此函式會傳回 Null。 在此最後一個案例中,函式只會在發行模式中傳回 Null - 在偵錯模式中,它會擲回判斷提示。
如需介面的詳細資訊 IFileOpenDialog
,請參閱 IFileOpenDialog 。
範例
此範例會擷取內部 COM 物件。 若要執行此程式碼,您必須在 Windows Vista 或更新版本下加以編譯。
// Get the interface pointer
IFileOpenDialog * openDlgPtr = m_myFileDialogPtr->GetIFileOpenDialog();
// Make sure that it is not null
if ( openDlgPtr != NULL )
{
//
// Perform any interface functionality here
//
// Release the pointer
openDlgPtr->Release();
}
CFileDialog::GetIFileSaveDialog
擷取指定 CFileDialog
之內部 COM 物件的指標。
IFileSaveDialog* GetIFileSaveDialog();
傳回值
的內部 COM 物件的 CFileDialog
指標。 您有責任適當地釋放此指標。
備註
只有在 Windows Vista 或更新版本下才使用此函式,並將 bVistaStyle 設定為 TRUE 的物件 。 如果 CFileDialog
不是 [ 儲存 ] 對話方塊,或 bVistaStyle 設定為 FALSE,則此函式會傳回 Null。 在此最後一個案例中,函式只會在發行模式中傳回 Null - 在偵錯模式中,它會擲回判斷提示。
如需介面的詳細資訊 IFileSaveDialog
,請參閱 IFileSaveDialog 。
範例
此範例會擷取內部 COM 物件。 若要執行此程式碼範例,您必須在 Windows Vista 或更新版本下加以編譯。
// Get the interface pointer
IFileSaveDialog *saveDlgPtr = m_myFileDialogPtr->GetIFileSaveDialog();
// Make sure that it is not null
if (saveDlgPtr != NULL)
{
//
// Perform any interface functionality here
//
// Release the pointer
saveDlgPtr->Release();
}
CFileDialog::GetNextPathName
呼叫此函式,從對話方塊中選取的群組擷取下一個檔案名。
CString GetNextPathName(POSITION& pos) const;
參數
pos
先前 GetNextPathName
或 GetStartPosition
函式呼叫所傳回之 POSITION 值的參考。 如果已到達清單結尾,則為 Null。
傳回值
檔案的完整路徑。
備註
檔案名的路徑包含檔案的標題加上整個目錄路徑。 例如, GetNextPathName
會傳回 「C:\FILES\TEXT。檔案 C:\FILES\TEXT.DAT 的 DAT。 如果您使用 呼叫 GetStartPosition
建立初始位置,則可以 GetNextPathName
在正向反覆運算迴圈中使用 。
如果選取範圍只包含一個檔案,則會傳回該檔案名。
CFileDialog::GetOFN
擷取相關聯的 OPENFILENAME
結構。
const OPENFILENAME& GetOFN() const;
OPENFILENAME& GetOFN();
傳回值
OPENFILENAME 結構。
備註
使用此函式的第二個版本,初始化建構檔案之後或 [檔案另存新 檔] 對話方塊的外觀 ,但在使用 DoModal
成員函式顯示之前。 例如,您可以將 的成員 m_ofn
設定 lpstrTitle
為您想要對話方塊擁有的標題。
CFileDialog::GetPathName
呼叫此函式,以擷取對話方塊中輸入之檔案的完整路徑。
CString GetPathName() const;
傳回值
檔案的完整路徑。
備註
檔案名的路徑包含檔案的標題加上整個目錄路徑。 例如, GetPathName
會傳回 「C:\FILES\TEXT。檔案 C:\FILES\TEXT.DAT 的 DAT。
如果 m_ofn.Flags
已設定OFN_ALLOWMULTISELECT旗標,則此字串會包含一連串以 Null 標記的字串,其中第一個字串是選取之檔案群組的目錄路徑,後面接著使用者選取的所有檔案名稱。 基於這個理由,請使用 GetStartPosition 和 GetNextPathName 成員函式來擷取清單中的下一個檔案名。
範例
請參閱 CFileDialog::D oModal 的 範例 。
CFileDialog::GetReadOnlyPref
呼叫此函式,以判斷是否已在 [Windows 標準檔案開啟] 和 [檔案另存新檔] 對話方塊中選取 [唯讀] 核取方塊。
BOOL GetReadOnlyPref() const;
傳回值
如果選取對話方塊中的 [唯讀] 核取方塊,則為非零;否則為 0。
備註
您可以在建構函式中 CFileDialog
設定OFN_HIDEREADONLY樣式,以隱藏 [唯讀] 核取方塊。
注意
Windows Vista 或更新版本的樣式 CFileDialog
物件不支援此函式。 嘗試在 Windows Vista 或更新版本的樣式 CFileDialog
上使用此函式將會擲回 CNotSupportedException 。
CFileDialog::GetResult
擷取使用者在對話方塊中所做的選擇。
IShellItem* GetResult() throw();
傳回值
代表使用者選擇之 IShellItem 的指標。
備註
CFileDialog::GetResults
擷取對話方塊中允許使用者選擇的選項。
IShellItemArray* GetResults() throw();
傳回值
IShellItemArray 的指標,可存取對話方塊中選取的專案。
備註
CFileDialog::GetSelectedControlItem
從對話方塊中的指定容器控制項擷取特定專案。
HRESULT GetSelectedControlItem(
DWORD dwIDCtl,
DWORD& dwIDItem);
參數
dwIDCtl
容器控制項的識別碼。
dwIDItem
使用者在 控制項中選取之專案的識別碼。
備註
CFileDialog::GetStartPosition
如果 m_ofn.Flags
已設定OFN_ALLOWMULTISELECT旗標,請呼叫這個成員函式,以擷取清單中第一個檔案路徑名稱的位置。
POSITION GetStartPosition() const;
傳回值
可用於反覆運算的 POSITION 值;如果清單是空的,則為 Null。
CFileDialog::HideControl
呼叫這個成員函式,以在 [總管] 樣式的 [開啟] 或 [另存新檔] 通用對話方塊中隱藏指定的控制項。
void HideControl(int nID);
參數
nID
要隱藏之控制項的識別碼。
備註
對話方塊必須已使用OFN_EXPLORER樣式建立;否則,函式會失敗並顯示判斷提示。
CFileDialog::IsPickFoldersMode
判斷目前對話方塊是否處於資料夾選擇器模式。
BOOL IsPickFoldersMode() const;
傳回值
如果對話方塊處於資料夾選擇器模式,則為 TRUE;否則為 FALSE。
備註
CFileDialog::m_ofn
m_ofn
是 類型的 OPENFILENAME
結構。 此結構中的資料代表 的 CFileDialog
目前狀態。
備註
使用此結構來初始化 [檔案開啟 ] 或 [檔案另存新檔 ] 對話方塊的外觀 之後,但在使用 DoModal 方法顯示它之前。 例如,您可以將 的 m_ofn
lpstrTitle 成員設定為您想要對話方塊擁有的標題。
使用 CFileDialog 的 Windows Vista 或更新版本樣式, m_ofn
不保證一律符合對話方塊的狀態。 它會與舊版 Windows 中的對話方塊同步處理。 如需同步 m_ofn
處理 Windows Vista 或更新版本下結構和 CFileDialog
狀態的詳細資訊,請參閱 CFileDialog::ApplyOFNToShellDialog 和 CFileDialog::UpdateOFNFromShellDialog 。
Windows Vista 或更新版本的樣式檔案對話方塊不支援 的特定成員和 旗標 CFileDialog
。 因此,這些不會有任何作用。
以下是 Windows Vista 或更新版本不支援的成員清單:
lpstrCustomFilter
lpstrInitialDir
lCustData
lpfnHook
lpTemplateName
不支援下列旗標,因此當您使用 Windows Vista 或更新版本的 樣式 CFileDialog
時,不會有任何作用:
OFN_ENABLEHOOK
OFN_ENABLEINCLUDENOTIFY
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_EXTENSIONDIFFERENT
OFN_HIDEREADONLY
OFN_LONGNAMES - 實際上一律在 Windows Vista 或更新版本中開啟
OFN_NOLONGNAMES - 實際上一律在 Windows Vista 或更新版本中關閉
OFN_NONETWORKBUTTON - 有效地一律在 Windows Vista 或更新版本中開啟
OFN_READONLY
OFN_SHOWHELP
如需此結構的詳細資訊,請參閱 Windows SDK 中的 OPENFILENAME 結構。
CFileDialog::MakeProminent
將控制項放在對話方塊中,使其與其他控制項相較之下脫穎而出。
HRESULT MakeProminent(DWORD dwIDCtl);
參數
dwIDCtl
控制項的識別碼。
備註
CFileDialog::OnButtonClicked
按一下按鈕時呼叫。
virtual void OnButtonClicked(DWORD dwIDCtl);
參數
dwIDCtl
按鈕的識別碼。
備註
CFileDialog::OnCheckButtonToggled
核取或取消核取核取方塊時呼叫。
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
參數
dwIDCtl
核取方塊的識別碼。
bChecked
已核取或未核取。
備註
CFileDialog::OnControlActivating
啟用控制項時呼叫。
virtual void OnControlActivating(DWORD dwIDCtl);
參數
dwIDCtl
控制項的識別碼。
備註
CFileDialog::OnFileNameChange
如果您想要處理WM_NOTIFY CDN_SELCHANGE訊息,請覆寫此方法。
virtual void OnFileNameChange();
備註
當使用者在 [開啟 ] 或 [另 存新檔] 對話方塊的檔案清單中 選取新的檔案或 資料夾時,系統會傳送CDN_SELCHANGE訊息。 如果您想要執行任何動作以回應此訊息,請覆寫此方法。
只有在開啟OFN_EXPLORER旗標建立對話方塊時,系統才會傳送此訊息。 如需通知的詳細資訊,請參閱 CDN_SELCHANGE 。 如需OFN_EXPLORER旗標的相關資訊,請參閱 OPENFILENAME 結構和 開啟和另存新檔對話方塊 。
CFileDialog::OnFileNameOK
只有在您想要提供輸入至通用檔案對話方塊的檔案名自訂驗證時,才覆寫此函式。
virtual BOOL OnFileNameOK();
傳回值
如果檔案名不是有效的檔案名,則為 1;否則為 0。
備註
此函式可讓您拒絕任何應用程式特定原因的檔案名。 一般而言,您不需要使用此函式,因為架構會提供預設的檔案名驗證,並在輸入不正確檔案名時顯示訊息方塊。
如果傳回 1,使用者仍會顯示對話方塊以輸入另一個檔案名。 如果傳回為 0,對話方塊程式就會關閉對話方塊。 目前保留其他非零傳回值,不應使用。
CFileDialog::OnFolderChange
覆寫此函式來處理WM_NOTIFYCDN_FOLDERCHANGE訊息。
virtual void OnFolderChange();
備註
當新的資料夾在 [開啟] 或 [另存新檔] 對話方塊中開啟時,就會傳送通知訊息。
只有在使用OFN_EXPLORER樣式建立對話方塊時,才會傳送通知。 如需通知的詳細資訊,請參閱 CDN_FOLDERCHANGE 。 如需OFN_EXPLORER樣式的相關資訊,請參閱 OPENFILENAME 結構和 開啟和另存新檔對話方塊 。
CFileDialog::OnInitDone
覆寫此函式來處理WM_NOTIFY CDN_INITDONE訊息。
virtual void OnInitDone();
備註
當系統完成在 [開啟 ] 或 [另存新 檔] 對話方塊中排列控制項以騰出空間供子對話方塊的控制項 使用時,系統就會傳送此通知訊息。
只有在使用OFN_EXPLORER樣式建立對話方塊時,系統才會傳送此專案。 如需通知的詳細資訊,請參閱 CDN_INITDONE 。 如需OFN_EXPLORER樣式的相關資訊,請參閱 OPENFILENAME 結構和 開啟和另存新檔對話方塊 。
注意
Windows Vista 或更新版本的樣式檔案對話方塊不支援此函式。 嘗試在 Windows Vista 或更新版本的樣式檔案對話方塊中使用此函式,將會擲回 CNotSupportedException 。
CFileDialog::OnItemSelected
選取容器專案時呼叫。
virtual void OnItemSelected(
DWORD dwIDCtl,
DWORD dwIDItem);
參數
dwIDCtl
容器控制項的識別碼。
dwIDItem
專案的識別碼。
備註
CFileDialog::OnLBSelChangedNotify
每當清單方塊中目前的選取範圍即將變更時,就會呼叫此函式。
virtual void OnLBSelChangedNotify(
UINT nIDBox,
UINT iCurSel,
UINT nCode);
參數
nIDBox
選取範圍所在的清單方塊或下拉式方塊的識別碼。
iCurSel
目前選取範圍的索引。
nCode
控制項通知程式碼。 此參數必須具有下列其中一個值:
CD_LBSELCHANGE指定 iCurSel 是單一選取清單方塊中選取的專案。
CD_LBSELSUB 指定 在複選清單方塊中不再選取 iCurSel 。
CD_LBSELADD 指定 在多重選取清單方塊中選取 iCurSel 。
CD_LBSELNOITEMS 指定多重選取清單方塊中沒有選取專案。
備註
覆寫此函式,以在清單方塊中提供選取變更的自訂處理。 例如,您可以使用此函式來顯示使用者選取之每個檔案的存取權限或上次修改日期。
CFileDialog::OnShareViolation
覆寫此函式以提供共用違規的自訂處理。
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
參數
lpszPathName
發生共用違規之檔案的路徑。
傳回值
下列其中一個值:
OFN_SHAREFALLTHROUGH 對話方塊會傳回檔案名。
OFN_SHARENOWARN不需要採取進一步的動作。
OFN_SHAREWARN使用者會收到此錯誤的標準警告訊息。
備註
一般而言,您不需要使用此函式,因為架構會提供共用違規的預設檢查,並在發生共用違規時顯示訊息方塊。
如果您想要停用共用違規檢查,請使用位 OR 運算子來結合旗標OFN_SHAREAWARE與 m_ofn.Flags
。
CFileDialog::OnTypeChange
覆寫此函式來處理WM_NOTIFYCDN_TYPECHANGE訊息。
virtual void OnTypeChange();
備註
當使用者從 [開啟] 或 [另存新檔] 對話方塊中的檔案類型清單中選取新的檔案類型時,就會傳送通知訊息。
只有在使用OFN_EXPLORER樣式建立對話方塊時,才會傳送通知。 如需通知的詳細資訊,請參閱 CDN_TYPECHANGE 。 如需OFN_EXPLORER樣式的相關資訊,請參閱 OPENFILENAME 結構和 開啟和另存新檔對話方塊 。
CFileDialog::RemoveControlItem
從對話方塊中的容器控制項中移除專案。
HRESULT RemoveControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
參數
dwIDCtl
要從中移除專案的容器控制項識別碼。
dwIDItem
專案的識別碼。
備註
CFileDialog::SetCheckButtonState
設定對話方塊中核取方塊的目前狀態。
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
參數
dwIDCtl
核取方塊的識別碼。
bChecked
核取方塊的狀態。 TRUE 表示已核取;FALSE 表示未核取。
備註
CFileDialog::SetControlItemState
設定對話方塊中找到之容器控制項中專案的目前狀態。
HRESULT SetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF dwState);
參數
dwIDCtl
容器控制項的識別碼。
dwIDItem
專案的識別碼。
dwState
來自 CDCONTROLSTATE 列舉的一或多個值,表示控制項的新狀態。
備註
CFileDialog::SetControlItemText
設定控制項專案的文字。 例如,選項按鈕或功能表中專案隨附的文字。
HRESULT SetControlItemText(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
參數
dwIDCtl
容器控制項的識別碼。
dwIDItem
專案的識別碼。
strLabel
專案的文字。
備註
CFileDialog::SetControlLabel
設定與控制項相關聯的文字,例如按鈕文字或編輯方塊標籤。
HRESULT SetControlLabel(
DWORD dwIDCtl,
const CString& strLabel);
參數
dwIDCtl
控制項的識別碼。
strLabel
控制項名稱。
備註
CFileDialog::SetControlState
設定指定控制項的目前可見度和啟用狀態。
HRESULT SetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF dwState);
參數
dwIDCtl
控制項的識別碼。
dwState
來自 CDCONTROLSTATE 列舉的一或多個值,表示控制項的目前狀態。
備註
CFileDialog::SetControlText
呼叫這個方法,以在 [檔案總管] 樣式 的 [開啟 ] 或 [另存新 檔] 對話方塊中設定指定控制項的文字。
void SetControlText(
int nID,
LPCSTR lpsz);
void SetControlText(
int nID,
const wchar_t *lpsz);
參數
nID
[in]要設定文字之控制項的識別碼。
lpsz
[in]字串的指標,其中包含要為控制項設定的文字。
備註
此函式的這兩個版本對於使用 Unicode 的應用程式都是有效的。 不過,只有具有 LPCSTR 類型的版本對使用 ANSI 的應用程式有效。
若要使用此方法,您必須使用 OFN_EXPLORER 樣式來建立對話方塊。 否則,函式將會失敗並產生判斷提示。
CFileDialog::SetDefExt
呼叫此函式,以設定 Explorer 樣式開啟或另存新檔通用對話方塊的預設副檔名。
void SetDefExt(LPCSTR lpsz);
參數
lpsz
字串的指標,包含用於對話方塊物件的預設延伸模組。 此字串不得包含句號 (.. )。
備註
對話方塊必須已使用OFN_EXPLORER樣式建立;否則,函式會失敗並顯示判斷提示。
CFileDialog::SetEditBoxText
設定編輯方塊控制項中的目前文字。
HRESULT SetEditBoxText(
DWORD dwIDCtl,
const CString& strText);
參數
dwIDCtl
編輯方塊的識別碼。
strText
文字值。
備註
CFileDialog::SetProperties
提供屬性儲存區,可定義要用於所儲存之項目的預設值。
BOOL SetProperties(LPCWSTR lpszPropList);
參數
lpszPropList
預先定義的屬性清單,以 ";" 分隔。 如需旗標的清單,請參閱 OPENFILENAME 的 Flags 區段。
備註
CFileDialog::SetSelectedControlItem
在選項按鈕群組或對話方塊中找到的下拉式方塊中,設定特定專案的選取狀態。
HRESULT SetSelectedControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
參數
dwIDCtl
容器控制項的識別碼。
dwIDItem
使用者在 控制項中選取之專案的識別碼。
備註
CFileDialog::SetTemplate
設定 CFileDialog 物件的對話方塊範本 。
void SetTemplate(
UINT nWin3ID,
UINT nWin4ID);
void SetTemplate(
LPCTSTR lpWin3ID,
LPCTSTR lpWin4ID);
參數
nWin3ID
[in]包含非 Explorer CFileDialog
物件的範本資源識別碼。 只有在 Windows NT 3.51 或OFN_EXPLORER樣式不存在時,才會使用此範本。
nWin4ID
[in]包含 Explorer CFileDialog
物件的範本資源識別碼。 此範本僅適用于 Windows NT 4.0 和更新版本、Windows 95 和更新版本,或OFN_EXPLORER樣式存在時。
lpWin3ID
[in]包含非 Explorer CFileDialog
物件的範本資源名稱。 只有在 Windows NT 3.51 或OFN_EXPLORER樣式不存在時,才會使用此範本。
lpWin4ID
[in]包含 Explorer CFileDialog
物件的範本資源名稱。 此範本僅適用于 Windows NT 4.0 和更新版本、Windows 95 和更新版本,或OFN_EXPLORER樣式存在時。
備註
系統只會使用其中一個指定的範本。 系統會根據應用程式執行所在的OFN_EXPLORER樣式和作業系統,決定要使用的範本。 藉由同時指定非 Explorer 和 Explorer 樣式的範本,即可輕鬆地支援 Windows NT 3.51、Windows NT 4.0 和更新版本,以及 Windows 95 和更新版本。
注意
Windows Vista 或更新版本的樣式檔案對話方塊不支援此函式。 嘗試在 Windows Vista 或更新版本的樣式檔案對話方塊中使用此函式,將會擲回 CNotSupportedException 。 替代方法是使用自訂對話方塊。 如需使用自訂 CFileDialog
的詳細資訊,請參閱 IFileDialogCustomize 。
CFileDialog::StartVisualGroup
在對話方塊中宣告視覺群組。 後續對任何「新增」方法的呼叫會將這些專案新增至此群組。
HRESULT StartVisualGroup(
DWORD dwIDCtl,
const CString& strLabel);
參數
dwIDCtl
視覺效果群組的識別碼。
strLabel
組名。
備註
CFileDialog::UpdateOFNFromShellDialog
更新 m_ofn
以內建物件目前狀態為基礎的 CFileDialog 資料結構 。
void UpdateOFNFromShellDialog();
備註
在 Windows Vista 之前的 Windows 版本中,成員 OPENFILENAME 資料結構會持續與 的狀態 CFileDialog
同步處理。 m_ofn 成員變數的任何變更 都會直接影響對話方塊的狀態。 此外,對話方塊狀態的任何變更都會立即更新m_ofn成員變數。
在 Windows Vista 或更新版本中, m_ofn
資料結構不會自動更新。 若要保證成員變數中的資料 m_ofn
正確性,您應該先呼叫 函式, UpdateOFNFromShellDialog
再存取資料。 Windows 會在 IFileDialog::OnFileOK 處理 期間自動呼叫此函式。
如需如何在 Windows Vista 或更新版本下使用 CFileDialog
類別的詳細資訊,請參閱 CFileDialog 類別 。
範例
本範例會先更新 CFileDialog
,再顯示它。 更新 m_ofn
成員變數之前,我們需要將其同步處理至對話方塊的目前狀態。
// Update the m_ofn variable
m_myFileDialogPtr->UpdateOFNFromShellDialog();
// Change the title
m_myFileDialogPtr->m_ofn.lpstrTitle = L"New Dialog Title";
// Apply the changes
m_myFileDialogPtr->ApplyOFNToShellDialog();
// Show the window
LRESULT result = m_myFileDialogPtr->DoModal();
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應