共用方式為


CFileDialog 類別

封裝用於檔案開啟或檔案儲存作業的通用對話方塊。

語法

class CFileDialog : public CCommonDialog

成員

公用建構函式

名稱 描述
CFileDialog::CFileDialog 建構 CFileDialog 物件。

公用方法

名稱 描述
CFileDialog::AddCheckButton 將核取按鈕新增至對話方塊。
CFileDialog::AddComboBox 將下拉式方塊新增至對話方塊。
CFileDialog::AddControlItem 將專案新增至對話方塊中的容器控制項。
CFileDialog::AddEditBox 將編輯方塊新增至對話方塊。
CFileDialog::AddMenu 將功能表新增至對話方塊。
CFileDialog::AddPlace 已多載。 將資料夾新增至可供使用者開啟或儲存專案的位置清單。
CFileDialog::AddPushButton 將按鈕新增至對話方塊。
CFileDialog::AddRadioButtonList 將選項按鈕(也稱為選項按鈕)群組新增至對話方塊。
CFileDialog::AddSeparator 將分隔符號加入對話方塊。
CFileDialog::AddText 將文字內容新增至對話方塊。
CFileDialog::ApplyOFNToShellDialog 更新 的狀態 CFileDialog ,以符合儲存在成員變數中的 m_ofn 參數和旗標。
CFileDialog::D oModal 顯示對話方塊,並讓使用者進行選取。
CFileDialog::EnableOpenDropDown 在對話方塊中的 [開啟 ] 或 [儲存 ] 按鈕上啟用下拉式清單。
CFileDialog::EndVisualGroup 停止將專案加入至對話方塊中的視覺群組。
CFileDialog::GetCheckButtonState 取得對話方塊中核取方塊的目前狀態。
CFileDialog::GetControlItemState 取得對話方塊中找到之容器控制項中專案的目前狀態。
CFileDialog::GetControlState 取得指定控制項的目前可見度和啟用狀態。
CFileDialog::GetEditBoxText 取得編輯方塊控制項中的目前文字。
CFileDialog::GetFileExt 傳回所選檔案的副檔名。
CFileDialog::GetFileName 傳回所選檔案的檔案名。
CFileDialog::GetFileTitle 傳回所選檔案的標題。
CFileDialog::GetFolderPath 擷取 [檔案總管] 樣式 的 [開啟 ] 或 [另存新檔 ] 通用對話方塊之目前開啟資料夾或 目錄的路徑。
CFileDialog::GetIFileDialogCustomize 擷取自訂 CFileDialog 物件的內部 COM 物件。
CFileDialog::GetIFileOpenDialog CFileDialog 取做為 [開啟 檔案] 對話方塊之 的內部 COM 物件。
CFileDialog::GetIFileSaveDialog CFileDialog 取做為 [儲存檔案] 對話方塊之 的內部 COM 物件。
CFileDialog::GetNextPathName 傳回下一個選取檔案的完整路徑。
CFileDialog::GetOFN OPENFILENAME 取 物件的結構 CFileDialog
CFileDialog::GetPathName 傳回所選取檔案的完整路徑。
CFileDialog::GetReadOnlyPref 傳回所選檔案的唯讀狀態。
CFileDialog::GetResult 取得使用者在對話方塊中所做的選擇。
CFileDialog::GetResults 取得對話方塊中允許使用者選擇的選項。
CFileDialog::GetSelectedControlItem 從對話方塊中的指定容器控制項取得特定專案。
CFileDialog::GetStartPosition 傳回檔案名清單第一個專案的位置。
CFileDialog::HideControl 在 [檔案總管] 樣式 的 [開啟 ] 或 [另存新檔 ] 通用對話方塊中隱藏指定的控制項。
CFileDialog::IsPickFoldersMode 判斷資料夾選擇器模式中的目前對話方塊。
CFileDialog::MakeProminent 將控制項放在對話方塊中,使其與其他新增的控制項相較之下脫穎而出。
CFileDialog::RemoveControlItem 從對話方塊中的容器控制項中移除專案。
CFileDialog::SetCheckButtonState 設定對話方塊中核取方塊的目前狀態。
CFileDialog::SetControlItemState 設定對話方塊中找到之容器控制項中專案的目前狀態。
CFileDialog::SetControlItemText 設定控制項專案的文字。 例如,選項按鈕或功能表中專案隨附的文字。
CFileDialog::SetControlLabel 設定與控制項相關聯的文字,例如按鈕文字或編輯方塊標籤。
CFileDialog::SetControlState 設定指定控制項的目前可見度和啟用狀態。
CFileDialog::SetControlText 在 [檔案總管] 樣式 的 [開啟 ] 或 [另存新檔 ] 通用對話方塊中,設定指定控制項的文字。
CFileDialog::SetDefExt 設定檔案總管樣式 的 [開啟 ] 或 [另存新檔 ] 通用對話方塊的預設副檔名。
CFileDialog::SetEditBoxText 設定編輯方塊控制項中的目前文字。
CFileDialog::SetProperties 提供屬性儲存區,可定義要用於所儲存之項目的預設值。
CFileDialog::SetSelectedControlItem 在選項按鈕群組或對話方塊中找到的下拉式方塊中,設定特定專案的選取狀態。
CFileDialog::SetTemplate 設定 物件的對話方塊範本 CFileDialog
CFileDialog::StartVisualGroup 在對話方塊中宣告視覺群組。 後續對任何「新增」方法的呼叫會將這些專案新增至此群組。
CFileDialog::UpdateOFNFromShellDialog 更新儲存在成員變數中的資料 m_ofn ,以符合檔案對話方塊的目前狀態。

受保護的方法

名稱 描述
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 的詳細資訊,請參閱 通用對話方塊類別

繼承階層架構

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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.FlagsOFN_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
先前 GetNextPathNameGetStartPosition 函式呼叫所傳回之 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();

另請參閱

CCommonDialog 類別
階層架構圖表