CFileDialog – třída
Zapouzdřuje společné dialogové okno, které se používá pro operace otevření souboru nebo ukládání souborů.
Syntaxe
class CFileDialog : public CCommonDialog
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CFileDialog::CFileDialog | CFileDialog Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CFileDialog::AddCheckButton | Přidá do dialogového okna tlačítko zaškrtnutí. |
CFileDialog::AddComboBox | Přidá do dialogového okna pole se seznamem. |
CFileDialog::AddControlItem | Přidá položku do ovládacího prvku kontejneru v dialogovém okně. |
CFileDialog::AddEditBox | Přidá do dialogového okna textové pole. |
CFileDialog::AddMenu | Přidá do dialogového okna nabídku. |
CFileDialog::AddPlace | Přetíženo. Přidá složku do seznamu míst, která mají uživatel k dispozici k otevření nebo uložení položek. |
CFileDialog::AddPushButton | Přidá do dialogového okna tlačítko. |
CFileDialog::AddRadioButtonList | Přidá do dialogového okna skupinu přepínačů (označované také jako přepínač). |
CFileDialog::AddSeparator | Přidá do dialogového okna oddělovač. |
CFileDialog::AddText | Přidá do dialogového okna textový obsah. |
CFileDialog::ApplyOFNToShellDialog | Aktualizuje stav CFileDialog tak, aby odpovídal parametrům a příznakům uloženým m_ofn v členské proměnné. |
CFileDialog::D oModal | Zobrazí dialogové okno a povolí uživateli výběr. |
CFileDialog::EnableOpenDropDown | Povolí rozevírací seznam na tlačítku Otevřít nebo Uložit v dialogovém okně. |
CFileDialog::EndVisualGroup | Zastaví přidání prvků do skupiny vizuálů v dialogovém okně. |
CFileDialog::GetCheckButtonState | Získá aktuální stav zaškrtávacího tlačítka (zaškrtávací políčko) v dialogovém okně. |
CFileDialog::GetControlItemState | Získá aktuální stav položky v ovládacím prvku kontejneru nalezeného v dialogovém okně. |
CFileDialog::GetControlState | Získá aktuální viditelnost a povolené stavy daného ovládacího prvku. |
CFileDialog::GetEditBoxText | Získá aktuální text v ovládacím prvku textového pole. |
CFileDialog::GetFileExt | Vrátí příponu vybraného souboru. |
CFileDialog::GetFileName | Vrátí název souboru vybraného souboru. |
CFileDialog::GetFileTitle | Vrátí název vybraného souboru. |
CFileDialog::GetFolderPath | Načte cestu aktuálně otevřené složky nebo adresáře pro běžné dialogové okno Otevřít nebo Uložit jako ve stylu Průzkumníka. |
CFileDialog::GetIFileDialogCustomize | Načte interní objekt MODELU COM pro přizpůsobený CFileDialog objekt. |
CFileDialog::GetIFileOpenDialog | Načte interní objekt MODELU COM pro CFileDialog objekt, který se používá jako dialogové okno Otevřít soubor. |
CFileDialog::GetIFileSaveDialog | Načte interní objekt MODELU COM pro CFileDialog objekt, který se používá jako dialogové okno Uložit soubor. |
CFileDialog::GetNextPathName | Vrátí úplnou cestu k dalšímu vybranému souboru. |
CFileDialog::GetOFN | OPENFILENAME Načte strukturu objektuCFileDialog . |
CFileDialog::GetPathName | Vrátí úplnou cestu vybraného souboru. |
CFileDialog::GetReadOnlyPref | Vrátí stav vybraného souboru jen pro čtení. |
CFileDialog::GetResult | Získá volbu, kterou uživatel provedl v dialogovém okně. |
CFileDialog::GetResults | Získá možnosti uživatele v dialogovém okně, které umožňuje vícenásobný výběr. |
CFileDialog::GetSelectedControlItem | Získá konkrétní položku ze zadaných ovládacích prvků kontejneru v dialogovém okně. |
CFileDialog::GetStartPosition | Vrátí pozici prvního prvku seznamu názvů souborů. |
CFileDialog::HideControl | Skryje zadaný ovládací prvek v dialogovém okně Otevřít nebo Uložit jako společné. |
CFileDialog::IsPickFoldersMode | Určuje, zda aktuální dialogové okno v režimu výběru složky. |
CFileDialog::MakeProminent | Umístí ovládací prvek do dialogového okna tak, aby vynikl ve srovnání s ostatními přidaným ovládacími prvky. |
CFileDialog::RemoveControlItem | Odebere položku z ovládacího prvku kontejneru v dialogovém okně. |
CFileDialog::SetCheckButtonState | Nastaví aktuální stav zaškrtávacího tlačítka (zaškrtávací políčko) v dialogovém okně. |
CFileDialog::SetControlItemState | Nastaví aktuální stav položky v ovládacím prvku kontejneru nalezeném v dialogovém okně. |
CFileDialog::SetControlItemText | Nastaví text položky ovládacího prvku. Například text, který doprovází přepínač nebo položku v nabídce. |
CFileDialog::SetControlLabel | Nastaví text přidružený k ovládacímu prvku, například text tlačítka nebo popisek textového pole. |
CFileDialog::SetControlState | Nastaví aktuální viditelnost a povolené stavy daného ovládacího prvku. |
CFileDialog::SetControlText | Nastaví text pro zadaný ovládací prvek v dialogovém okně Otevřít nebo Uložit jako společné. |
CFileDialog::SetDefExt | Nastaví výchozí příponu názvu souboru pro dialogové okno Otevřít ve stylu Průzkumníka nebo Uložit jako společné. |
CFileDialog::SetEditBoxText | Nastaví aktuální text v ovládacím prvku textového pole. |
CFileDialog::SetProperties | Poskytuje úložiště vlastností, které definuje výchozí hodnoty, které se mají použít pro uloženou položku. |
CFileDialog::SetSelectedControlItem | Nastaví vybraný stav konkrétní položky ve skupině přepínačů nebo pole se seznamem nalezené v dialogovém okně. |
CFileDialog::SetTemplate | Nastaví šablonu dialogového okna pro CFileDialog objekt. |
CFileDialog::StartVisualGroup | Deklaruje skupinu vizuálů v dialogovém okně. Následná volání jakékoli metody add tyto prvky do této skupiny přidá. |
CFileDialog::UpdateOFNFromShellDialog | Aktualizuje data uložená v m_ofn členské proměnné tak, aby odpovídala aktuálnímu stavu dialogového okna souboru. |
Chráněné metody
Název | Popis |
---|---|
CFileDialog::OnButtonClicked | Volá se při kliknutí na tlačítko. |
CFileDialog::OnCheckButtonToggled | Volá se, když je zaškrtávací políčko zaškrtnuté nebo nezaškrtnuté. |
CFileDialog::OnControlActivating | Volá se, když je ovládací prvek aktivní. |
CFileDialog::OnFileNameChange | Zpracovává WM_NOTIFY CDN_SELCHANGE zprávu. |
CFileDialog::OnFileNameOK | Ověří název souboru zadaný v dialogovém okně. |
CFileDialog::OnFolderChange | Zpracovává zprávu WM_NOTIFY CDN_FOLDERCHANGE. |
CFileDialog::OninitDone | Zpracovává WM_NOTIFY CDN_INITDONE zprávu. |
CFileDialog::OnItemSelected | Volá se při výběru položky kontejneru. |
CFileDialog::OnLBSelChangedNotify | Umožňuje provádět vlastní akce při změně výběru souboru. |
CFileDialog::OnShareViolation | Zpracovává porušení sdílení. |
CFileDialog::OnTypeChange | Zpracovává WM_NOTIFY CDN_TYPECHANGE zprávu. |
Veřejné datové členy
Název | Popis |
---|---|
CFileDialog::m_ofn | Struktura Windows OPENFILENAME . Poskytuje přístup k základním parametrům dialogového okna souboru. |
Poznámky
Běžná dialogová okna souborů umožňují implementovat dialogová okna výběru souborů, například Otevřít soubor a Uložit jako způsobem, který je konzistentní se standardy Windows.
Můžete použít CFileDialog
stejně jako u zadaného konstruktoru, nebo můžete odvodit vlastní třídu dialogového okna a CFileDialog
napsat konstruktor tak, aby vyhovoval vašim potřebám. V obou případech se tato dialogová okna budou chovat jako standardní dialogová okna MFC, protože jsou odvozeny z CCommonDialog Třídy. CFileDialog
spoléhá na COMMDLG.DLL soubor, který je součástí Windows.
Vzhled i funkce CFileDialog
systému Windows Vista nebo novější se liší od předchozích verzí systému Windows. Výchozí nastavení CFileDialog
automaticky používá nový styl Windows Vista nebo novější bez změn kódu, pokud je program zkompilován a spuštěn v systému Windows Vista nebo novější. K ručnímu přepsání této automatické aktualizace použijte parametr bVistaStyle v konstruktoru. Výjimka automatické aktualizace je přizpůsobená dialogová okna. Nebudou převedeny na nový styl. Další informace o konstruktoru naleznete v tématu CFileDialog::CFileDialog.
Poznámka:
Systém ID ovládacího prvku se při použití CFileDialog
systému Windows Vista nebo novější liší od dřívějších verzí systému Windows . Před přenesením projektu z dřívější verze Windows je nutné aktualizovat všechny odkazy na CFileDialog
ovládací prvky v kódu.
Některé CFileDialog
metody nejsou podporovány v systému Windows Vista nebo novější. Informace o tom, jestli je metoda podporovaná, najdete v tématu jednotlivých metod. Kromě toho následující zděděné funkce nejsou podporovány v systému Windows Vista nebo novější:
Zprávy oken pro CFileDialog
třídu se liší v závislosti na tom, jaký operační systém používáte. Například Systém Windows XP nepodporuje CDialog::OnCancel a CDialog::OnOK pro CFileDialog
třídu. Operační systémy Windows Vista a novější je však podporují. Další informace o různých generovaných zprávách a pořadí, ve kterém jsou přijaty, naleznete v tématu CFileDialog Ukázka: Protokolování pořadí událostí.
Chcete-li použít CFileDialog
objekt, nejprve vytvořte objekt pomocí konstruktoru CFileDialog
. Po vytvoření dialogového okna můžete nastavit nebo upravit jakékoli hodnoty ve struktuře CFileDialog::m_ofn pro inicializaci hodnot nebo stavů ovládacích prvků dialogového okna. Struktura m_ofn
je typu OPENFILENAME
. Další informace naleznete ve struktuře OPENFILENAME v sadě Windows SDK.
Po inicializaci ovládacích prvků dialogového okna zavolejte CFileDialog::D oModal metoda zobrazení dialogového okna, aby uživatel mohl zadat cestu a název souboru. DoModal
vrátí, zda uživatel kliknul na TLAČÍTKO OK (IDOK) nebo na tlačítko Storno (IDCANCEL). Pokud DoModal
vrátí idOK, můžete pomocí jedné z CFileDialog
veřejných členských funkcí načíst informace vložené uživatelem.
Poznámka:
V systému Windows Vista nebo novějších více volání IFileDialog::SetFileTypes způsobí chybu. Druhé volání SetFileTypes
pro libovolnou CFileDialog
instanci vrátí E_UNEXPECTED v systému Windows Vista nebo novějším. Některé CFileDialog
funkce metody volají SetFileTypes
. Například dvě volání CFileDialog::DoModal
pro stejnou CFileDialog
instanci vygeneruje ASSERT.
CFileDialog
obsahuje několik chráněných členů, které umožňují provádět vlastní zpracování porušení sdílených složek, ověření názvu souboru a oznámení o změně seznamu. Tito chránění členové jsou funkce zpětného volání, které většina aplikací nemusí používat, protože výchozí zpracování se provádí automaticky. Položky mapy zpráv pro tyto funkce nejsou vyžadovány, protože se jedná o standardní virtuální funkce.
Pomocí funkce CommDlgExtendedError systému Windows můžete určit, jestli během inicializace dialogového okna došlo k chybě, a získat další informace o chybě.
CFileDialog
Zničení objektů se zpracovává automaticky. Nemusíte volat CDialog::EndDialog.
Pokud chcete, aby uživatel vybral více souborů, nastavte před voláním DoModal
příznak OFN_ALLOWMULTISELECT . Musíte zadat vlastní vyrovnávací paměť názvu souboru, aby se přizpůsobil vrácený seznam více názvů souborů. Proveďte to nahrazením m_ofn.lpstrFile
ukazatelem na vyrovnávací paměť, kterou jste přidělili, po vytvoření CFileDialog
, ale před voláním DoModal
.
Kromě toho je nutné nastavit m_ofn.nMaxFile
pomocí počtu znaků v vyrovnávací paměti, na kterou m_ofn.lpstrFile
odkazuje . Pokud nastavíte maximální počet souborů, na n
které se má vybrat, je požadovaná velikost n * (_MAX_PATH + 1) + 1
vyrovnávací paměti . První položka vrácená ve vyrovnávací paměti je cesta ke složce, ve které byly vybrané soubory. V dialogových oknech systému Windows Vista nebo novějších verzí jsou řetězce názvů adresářů a souborů ukončeny null s dodatečným znakem null za posledním názvem souboru. Tento formát umožňuje dialogovým oknem stylu Průzkumníka vrátit dlouhé názvy souborů, které obsahují mezery. V dialogových oknech starého stylu jsou řetězce názvů adresářů a souborů oddělené mezerami a funkce používá krátké názvy souborů pro názvy souborů s mezerami.
Následující příklad ukazuje, jak použít vyrovnávací paměť k načtení a výpisu více názvů souborů.
#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++;
}
}
Chcete-li změnit velikost vyrovnávací paměti v reakci na uživatele, který vybírá více názvů souborů, je nutné odvodit novou třídu z CFileDialog
CFileDialog::OnFileNameChange metoda.
Pokud odvozujete novou třídu, CFileDialog
můžete k zpracování všech zpráv použít mapu zpráv. Chcete-li rozšířit výchozí zpracování zpráv, odvodit třídu z CFileDialog
, přidat mapu zpráv do nové třídy a poskytnout členské funkce pro nové zprávy. K přizpůsobení dialogového okna nemusíte zadávat funkci háku.
Chcete-li přizpůsobit dialogové okno, odvodit třídu z CFileDialog
, poskytnout vlastní šablonu dialogového okna a přidat mapu zpráv pro zpracování oznámení zprávy z rozšířených ovládacích prvků. Předejte všechny nezpracované zprávy do základní třídy. Funkci háku nemusíte přizpůsobovat.
Používáte-li systém Windows Vista nebo novější styl CFileDialog
, nelze použít mapy zpráv a šablony dialogového okna. Místo toho musíte pro podobné funkce použít rozhraní MODELU COM.
Další informace o použití CFileDialog
naleznete v tématu Běžné třídy dialogových oken.
Hierarchie dědičnosti
CFileDialog
Požadavky
Hlavička: afxdlgs.h
CFileDialog::AddCheckButton
Přidá do dialogového okna tlačítko zaškrtnutí.
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
Parametry
dwIDCtl
ID tlačítka zaškrtnutí, které chcete přidat.
strLabel
Název tlačítka zaškrtnutí.
bChecked
Logická hodnota označující aktuální stav tlačítka zaškrtnutí. TRUE, pokud je zaškrtnuto; NEPRAVDA jinak
Poznámky
CFileDialog::AddComboBox
Přidá do dialogového okna pole se seznamem.
HRESULT AddComboBox(DWORD dwIDCtl);
Parametry
dwIDCtl
ID pole se seznamem, které chcete přidat.
Poznámky
CFileDialog::AddControlItem
Přidá položku do ovládacího prvku kontejneru v dialogovém okně.
HRESULT AddControlItem(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru pro přidání položky.
dwIDItem
ID položky.
strLabel
Text položky
Poznámky
CFileDialog::AddEditBox
Přidá do dialogového okna textové pole.
HRESULT AddEditBox(
DWORD dwIDCtl,
const CString& strText);
Parametry
dwIDCtl
ID pole pro úpravy, které chcete přidat.
strText
Název pole pro úpravy.
Poznámky
CFileDialog::AddMenu
Přidá do dialogového okna nabídku.
HRESULT AddMenu(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
ID nabídky, která se má přidat.
strLabel
Název nabídky.
Poznámky
CFileDialog::AddPlace
Přidá složku do seznamu míst, která mají uživatel k dispozici k otevření nebo uložení položek.
void AddPlace(
LPCWSTR lpszFolder,
FDAP fdap = FDAP_TOP) throw();
void AddPlace(
IShellItem* psi,
FDAP fdap = FDAP_TOP) throw();
Parametry
lpszFolder
Cesta ke složce, která má být uživateli zpřístupněna. Může to být jenom složka.
fdap
Určuje umístění složky v seznamu.
psí
Ukazatel na IShellItem, který představuje složku, která má být zpřístupněna uživateli. Může to být jenom složka.
Poznámky
CFileDialog::AddPushButton
Přidá do dialogového okna tlačítko.
HRESULT AddPushButton(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
ID tlačítka, které chcete přidat.
strLabel
Název tlačítka.
Poznámky
CFileDialog::AddRadioButtonList
Přidá do dialogového okna skupinu přepínačů (označované také jako přepínač).
HRESULT AddRadioButtonList(DWORD dwIDCtl);
Parametry
dwIDCtl
ID skupiny přepínačů, které chcete přidat.
Poznámky
CFileDialog::AddSeparator
Přidá do dialogového okna oddělovač.
HRESULT AddSeparator(DWORD dwIDCtl);
Parametry
dwIDCtl
ID oddělovače přidejte.
Poznámky
CFileDialog::AddText
Přidá text do dialogového okna.
HRESULT AddText(
DWORD dwIDCtl,
const CString& strText);
Parametry
dwIDCtl
ID textu, který chcete přidat.
strText
Název textu.
Poznámky
CFileDialog::ApplyOFNToShellDialog
Aktualizuje aktuální stav CFileDialog na základě hodnot uložených m_ofn
v datové struktuře.
void ApplyOFNToShellDialog();
Poznámky
Ve verzích windows před Windows Vista, člen OPENFILENAME datové struktury byl nepřetržitě synchronizován se stavem CFileDialog
. Všechny změny m_ofn členské proměnné se okamžitě projevily ve stavu dialogového okna. Všechny změny stavu dialogového okna také okamžitě aktualizují m_ofn
členovou proměnnou.
V systému Windows Vista nebo novějších není zaručeno synchronizaci hodnot v m_ofn
členské proměnné a stavu CFileDialog
. Tato funkce vynutí aktualizaci stavu CFileDialog
tak, aby odpovídala struktuře m_ofn
. Systém Windows volá tuto funkci automaticky během CFileDialog::D oModal.
Další informace o použití CFileDialog
třídy v systému Windows Vista nebo novější naleznete v tématu CFileDialog Třída.
Příklad
Podívejte se na příklad pro CFileDialog::UpdateOFNFromShellDialog.
CFileDialog::CFileDialog
Voláním této funkce vytvoříte standardní dialogové okno soubor systému 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);
Parametry
bOpenFileDialog
[v] Parametr, který určuje, jaký typ dialogového okna se má vytvořit. Nastavte hodnotu TRUE a vytvořte dialogové okno Otevřít soubor. Pokud chcete vytvořit dialogové okno Uložit jako soubor, nastavte ho na HODNOTU FALSE.
lpszDefExt
[v] Výchozí přípona názvu souboru. Pokud uživatel do pole Název souboru nezahrne známé rozšíření (které má přidružení v počítači uživatele), přípona zadaná lpszDefExt se automaticky připojí k názvu souboru. Pokud je tento parametr NULL, nepřipočítá se žádné rozšíření.
lpszFileName
[v] Počáteční název souboru, který se zobrazí v poli Název souboru. Pokud je hodnota NULL, nezobrazí se žádný počáteční název souboru.
dwFlags
[v] Kombinace jednoho nebo více příznaků, které můžete použít k přizpůsobení dialogového okna. Popis těchto příznaků naleznete ve struktuře OPENFILENAME v sadě Windows SDK. Pokud upravíte m_ofn.Flags
člen struktury, použijte ve změnách bitový operátor OR, abyste zachovali výchozí chování beze změny.
lpszFilter
[v] Řada párů řetězců, které určují filtry, které můžete použít pro soubor. Pokud zadáte filtry souborů, zobrazí se v seznamu Soubory pouze soubory, které splňují kritéria filtru. Další informace o práci s filtry souborů najdete v části Poznámky.
pParentWnd
[v] Ukazatel na nadřazené okno nebo okno vlastníka dialogového okna souboru.
dwSize
[v] Velikost OPENFILENAME
struktury. Tato hodnota závisí na verzi operačního systému. MFC tento parametr použil k určení vhodného typu dialogového okna pro vytvoření. Výchozí velikost 0 znamená, že kód MFC určí správnou velikost dialogového okna, která se má použít na základě verze operačního systému, na které je program spuštěn.
bVistaStyle
[v] Poznámka: Tento parametr je k dispozici v sadě Visual Studio 2008 a novější a způsobí použití dialogového okna nového stylu pouze v případě, že používáte v systému Windows Vista nebo novější.
Parametr, který určuje styl dialogového okna souboru. Nastavte hodnotu TRUE tak, aby používala nová dialogová okna souborů ve stylu Vista. V opačném případě se použije starý styl dialogových oken. Další informace o spuštění v části Poznámky naleznete v části Vista.
Poznámky
V závislosti na hodnotě bOpenFileDialog se vytvoří dialogové okno Otevřít soubor nebo Uložit jako.
Určení výchozího rozšíření pomocí lpszDefExt nemusí způsobit očekávané chování, protože je zřídka předvídatelné, jaké přípony mají přidružení souborů v počítači uživatele. Pokud potřebujete větší kontrolu nad připojením výchozího rozšíření, můžete odvodit vlastní třídu z CFileDialog
a přepsat metodu CFileDialog::OnFileNameOK
, aby prováděla vlastní zpracování rozšíření.
Pokud chcete uživateli povolit výběr více souborů, nastavte před voláním doModal příznak OFN_ALLOWMULTISELECT. Chcete-li uložit vrácený seznam více názvů souborů, musíte zadat vlastní vyrovnávací paměť názvu souboru. Uděláte to tak, že nahradíte m_ofn.lpstrFile
ukazatelem na vyrovnávací paměť, kterou jste přidělili, po vytvoření CFileDialog, ale před voláním DoModal
. Kromě toho je nutné nastavit m_ofn.nMaxFile
s počtem znaků v vyrovnávací paměti, na kterou m_ofn.lpstrFile
odkazuje . Pokud nastavíte maximální počet souborů, které mají být vybrány na n, je nezbytná velikost n
vyrovnávací paměti *(_MAX_PATH + 1) + 1. Příklad:
#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++;
}
}
Pokud chcete uživateli povolit změnu velikosti dialogového okna stylu Průzkumníka pomocí myši nebo klávesnice, nastavte příznak OFN_ENABLESIZING. Nastavení tohoto příznaku je nezbytné pouze v případě, že zadáte proceduru háku nebo vlastní šablonu. Příznak funguje pouze s dialogovým oknem ve stylu Průzkumníka; Dialogová okna starého stylu nelze změnit.
Parametr lpszFilter se používá k určení typu názvu souboru, který musí být zobrazen v seznamu souborů. První řetězec ve dvojici řetězců popisuje filtr; druhý řetězec označuje příponu názvu souboru, která se má použít. Více přípon může být určeno středníkem (znak ;) jako oddělovačem. Řetězec končí dvěma svislými znaky pruhu (||
), následovanými znakem NULL. Pro tento parametr můžete také použít objekt CString .
Microsoft Excel například umožňuje uživatelům otevírat soubory, které mají přípony .xlc (graf) nebo .xls (list), mimo jiné. Filtr pro Excel může být napsaný takto:
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
Pokud však plánujete použít tento řetězec k přímé aktualizaci OPENFILENAME
struktury, měli byste řetězce oddělovat znakem null místo '\0'
svislých pruhů ('|'
).
Parametr bVistaStyle je použitelný pouze při spuštění v systému Windows Vista nebo novější. V dřívějších verzích Windows se tento parametr ignoruje. Pokud je bVistaStyle nastavena na TRUE, při kompilaci programu pomocí sady Visual Studio 2008 nebo novější, bude použit nový Vista style File Dialog . V opačném případě se použije předchozí dialogové okno souboru stylu MFC.
Šablony dialogů nejsou podporovány v dialogech založených na bVistaStyle
Příklad
Podívejte se na příklad pro CFileDialog::D oModal.
CFileDialog::D oModal
Voláním této funkce zobrazíte dialogové okno Soubor systému Windows a umožníte uživateli procházet soubory a adresáře a zadat název souboru.
virtual INT_PTR DoModal();
Návratová hodnota
IDOK nebo IDCANCEL. Pokud je vrácena funkce IDCANCEL, zavolejte funkci CommDlgExtendedError systému Windows, abyste zjistili, zda došlo k chybě.
IDOK a IDCANCEL jsou konstanty, které označují, zda uživatel vybral tlačítko OK nebo Zrušit.
Poznámky
Pokud chcete inicializovat různé možnosti dialogového okna souboru nastavením členů m_ofn
struktury, měli byste to udělat před voláním DoModal
, ale po vytvoření objektu dialogového okna.
Pokud například chcete uživateli povolit výběr více souborů, nastavte před voláním DoModal
příznak OFN_ALLOWMULTISELECT, jak je znázorněno v příkladu kódu v tomto tématu.
Když uživatel klikne na tlačítka OK nebo Zrušit dialogové okno nebo vybere možnost Zavřít z nabídky ovládacích prvků dialogového okna, vrátí se do vaší aplikace ovládací prvek. Potom můžete volat další členské funkce, které načtou nastavení nebo informace o vstupech uživatele do dialogového okna.
DoModal
je virtuální funkce přepsaná z třídy CDialog
.
Příklad
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
Povolí rozevírací seznam na tlačítku Otevřít nebo Uložit v dialogovém okně.
HRESULT EnableOpenDropDown(DWORD dwIDCtl);
Parametry
dwIDCtl
ID rozevíracího seznamu
Poznámky
CFileDialog::EndVisualGroup
Zastaví přidání prvků do skupiny vizuálů v dialogovém okně.
HRESULT EndVisualGroup();
Návratová hodnota
Vrátí S_OK v případě úspěchu; v opačném případě se zobrazí chybová hodnota.
Poznámky
CFileDialog::GetCheckButtonState
Načte aktuální stav zaškrtávacího tlačítka (zaškrtávací políčko) v dialogovém okně.
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
Parametry
dwIDCtl
ID zaškrtávacího políčka.
bChecked
Stav zaškrtávacího políčka. PRAVDA označuje zaškrtnuté; NEPRAVDA označuje, že není zaškrtnuto.
Poznámky
CFileDialog::GetControlItemState
Načte aktuální stav položky v ovládacím prvku kontejneru nalezeném v dialogovém okně.
HRESULT GetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF& dwState);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru.
dwIDItem
ID položky.
dwState
Odkaz na proměnnou, která přijímá jednu z více hodnot z výčtu CDCONTROLSTATE, která označuje aktuální stav ovládacího prvku.
Poznámky
CFileDialog::GetControlState
Načte aktuální viditelnost a povolené stavy daného ovládacího prvku.
HRESULT GetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF& dwState);
Parametry
dwIDCtl
ID ovládacího prvku.
dwState
Odkaz na proměnnou, která přijímá jednu nebo více hodnot z výčtu CDCONTROLSTATE, která označuje aktuální stav ovládacího prvku.
Poznámky
CFileDialog::GetEditBoxText
Načte aktuální text v ovládacím prvku textového pole.
HRESULT GetEditBoxText(
DWORD dwIDCtl,
CString& strText);
Parametry
dwIDCtl
ID textového pole.
strText
Textová hodnota.
Poznámky
CFileDialog::GetFileExt
Voláním této funkce načtěte rozšíření názvu souboru zadaného do dialogového okna.
CString GetFileExt() const;
Návratová hodnota
Přípona názvu souboru.
Poznámky
Pokud je například zadaný název souboru DATA.TXT, GetFileExt
vrátí "TXT".
Pokud m_ofn.Flags
má nastavený příznak OFN_ALLOWMULTISELECT, obsahuje tento řetězec posloupnost řetězců ukončených hodnotou null, přičemž první řetězec je vybraná cesta k adresáři skupiny souborů následovaná názvy všech souborů vybraných uživatelem. K načtení názvů cest k souboru použijte členské funkce GetStartPosition a GetNextPathName .
CFileDialog::GetFileName
Voláním této funkce načtěte název souboru zadaného v dialogovém okně.
CString GetFileName() const;
Návratová hodnota
Název souboru.
Poznámky
Název souboru zahrnuje předponu i příponu. Vrátí se například GetFileName
text. DAT pro soubor C:\FILES\TEXT.DAT.
Pokud m_ofn.Flags
je OFN_ALLOWMULTISELECT
nastaven příznak, měli byste zavolat GetStartPosition a GetNextPathName načíst název cesty k souboru.
CFileDialog::GetFileTitle
Voláním této funkce načtěte název souboru zadaného v dialogovém okně.
CString GetFileTitle() const;
Návratová hodnota
Název souboru.
Poznámky
Název souboru obsahuje pouze jeho předponu bez cesty nebo přípony. Například GetFileTitle
vrátí "TEXT" pro soubor C:\FILES\TEXT.DAT.
Pokud m_ofn.Flags
má nastavený příznak OFN_ALLOWMULTISELECT, obsahuje tento řetězec posloupnost řetězců ukončených hodnotou null, přičemž první řetězec je vybraná cesta k adresáři skupiny souborů následovaná názvy všech souborů vybraných uživatelem. Z tohoto důvodu použijte členské funkce GetStartPosition a GetNextPathName k načtení dalšího názvu souboru v seznamu.
Příklad
Podívejte se na příklad pro CFileDialog::D oModal.
CFileDialog::GetFolderPath
Voláním této členské funkce načtěte cestu k aktuálně otevřené složce nebo adresáři pro dialogové okno Otevřít nebo Uložit jako.
CString GetFolderPath() const;
Návratová hodnota
CString objekt obsahující aktuálně otevřenou složku nebo adresář.
Poznámky
Dialogové okno musí být vytvořeno se stylem OFN_EXPLORER; jinak metoda selže s kontrolním výrazem.
Tuto metodu můžete volat pouze při zobrazení dialogového okna. Po zavření dialogového okna přestane tato funkce fungovat a metoda selže s kontrolním výrazem.
CFileDialog::GetIFileDialogCustomize
Načte ukazatel na interní objekt COM pro daný CFileDialog.
IFileDialogCustomize* GetIFileDialogCustomize();
Návratová hodnota
Ukazatel na interní objekt COM pro CFileDialog
objekt . Za správné uvolnění tohoto ukazatele je vaší zodpovědností.
Poznámky
Tuto funkci použijte pouze v systému Windows Vista nebo novějším s objektem, který má bVistaStyle nastaven na HODNOTU TRUE. Pokud tuto funkci použijete, když bVistaStyle je FALSE, vrátí hodnotu NULL v režimu vydání a vyvolá kontrolní výraz v režimu ladění.
Další informace o IFileDialogCustomize
rozhraní naleznete v tématu IFileDialogCustomize.
Příklad
Tento příklad načte interní objekt MODELU COM. Chcete-li spustit tento příklad kódu, je nutné jej zkompilovat v systému Windows Vista nebo novější.
// 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
Načte ukazatel na interní objekt MODELU COM pro danou CFileDialog
.
IFileOpenDialog* GetIFileOpenDialog();
Návratová hodnota
Ukazatel na interní objekt COM pro CFileDialog
objekt . Za správné uvolnění tohoto ukazatele je vaší zodpovědností.
Poznámky
Tuto funkci použijte pouze v systému Windows Vista nebo novějším s objektem, který má bVistaStyle nastaven na HODNOTU TRUE. Tato funkce vrátí hodnotu NULL, pokud CFileDialog
není dialogové okno Otevřít nebo pokud bVistaStyle je nastavena na HODNOTU FALSE. V tomto posledním případě vrátí funkce pouze hodnotu NULL v režimu vydání – v režimu ladění vyvolá kontrolní výraz.
Další informace o IFileOpenDialog
rozhraní naleznete v tématu IFileOpenDialog.
Příklad
Tento příklad načte interní objekt MODELU COM. Chcete-li spustit tento kód, je nutné jej zkompilovat v systému Windows Vista nebo novější.
// 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
Načte ukazatel na interní objekt MODELU COM pro danou CFileDialog
.
IFileSaveDialog* GetIFileSaveDialog();
Návratová hodnota
Ukazatel na interní objekt COM pro CFileDialog
objekt . Za správné uvolnění tohoto ukazatele je vaší zodpovědností.
Poznámky
Tuto funkci použijte pouze v systému Windows Vista nebo novějším s objektem, který má bVistaStyle nastaven na HODNOTU TRUE. Tato funkce vrátí hodnotu NULL, pokud CFileDialog
není dialogové okno Uložit nebo pokud bVistaStyle je nastavena na HODNOTU FALSE. V tomto posledním případě vrátí funkce pouze hodnotu NULL v režimu vydání – v režimu ladění vyvolá kontrolní výraz.
Další informace o IFileSaveDialog
rozhraní naleznete v tématu IFileSaveDialog.
Příklad
Tento příklad načte interní objekt MODELU COM. Chcete-li spustit tento příklad kódu, je nutné jej zkompilovat v systému Windows Vista nebo novější.
// 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
Voláním této funkce načtěte další název souboru ze skupiny vybrané v dialogovém okně.
CString GetNextPathName(POSITION& pos) const;
Parametry
Pos
Odkaz na hodnotu POSITION vrácenou předchozím GetNextPathName
voláním nebo GetStartPosition
voláním funkce Hodnota NULL, pokud byl dosažen konec seznamu.
Návratová hodnota
Úplná cesta k souboru.
Poznámky
Cesta k názvu souboru obsahuje název souboru a celou cestu k adresáři. Například GetNextPathName
vrátí "C:\FILES\TEXT" (C:\FILES\TEXT). DAT pro soubor C:\FILES\TEXT.DAT. Můžete použít GetNextPathName
ve smyčce přesměrování iterace, pokud vytvoříte počáteční pozici s voláním GetStartPosition
.
Pokud se výběr skládá jenom z jednoho souboru, vrátí se tento název souboru.
CFileDialog::GetOFN
Načte přidruženou OPENFILENAME
strukturu.
const OPENFILENAME& GetOFN() const;
OPENFILENAME& GetOFN();
Návratová hodnota
Struktura OPENFILENAME .
Poznámky
Druhá verze této funkce slouží k inicializaci vzhledu dialogového okna Otevřít soubor nebo Uložit soubor jako po jeho vytvoření, ale před zobrazením pomocí DoModal
členské funkce. Můžete například nastavit lpstrTitle
člena m_ofn
na titulek, který má dialogové okno mít.
CFileDialog::GetPathName
Voláním této funkce načtěte úplnou cestu k souboru zadanému v dialogovém okně.
CString GetPathName() const;
Návratová hodnota
Úplná cesta k souboru.
Poznámky
Cesta k názvu souboru obsahuje název souboru a celou cestu k adresáři. Například GetPathName
vrátí "C:\FILES\TEXT" (C:\FILES\TEXT). DAT pro soubor C:\FILES\TEXT.DAT.
Pokud m_ofn.Flags
má nastavený příznak OFN_ALLOWMULTISELECT, obsahuje tento řetězec posloupnost řetězců s hodnotou null-teminated, přičemž první řetězec je cesta k adresáři vybrané skupiny souborů následovaná názvy všech souborů vybraných uživatelem. Z tohoto důvodu použijte členské funkce GetStartPosition a GetNextPathName k načtení dalšího názvu souboru v seznamu.
Příklad
Podívejte se na příklad pro CFileDialog::D oModal.
CFileDialog::GetReadOnlyPref
Voláním této funkce určíte, zda bylo zaškrtnuto políčko Jen pro čtení v dialogových oknech Otevřít soubor ve Windows a Uložit jako.
BOOL GetReadOnlyPref() const;
Návratová hodnota
Nenulové, pokud je zaškrtnuto políčko Jen pro čtení v dialogovém okně; jinak 0.
Poznámky
Zaškrtávací políčko Jen pro čtení můžete skrýt nastavením stylu OFN_HIDEREADONLY v konstruktoru CFileDialog
.
Poznámka:
Objekty ve stylu CFileDialog
Windows Vista nebo novější tuto funkci nepodporují. Pokus o použití této funkce v systému Windows Vista nebo novější styl CFileDialog
vyvolá CNotSupportedException.
CFileDialog::GetResult
Načte volbu, kterou uživatel provedl v dialogovém okně.
IShellItem* GetResult() throw();
Návratová hodnota
Ukazatel na IShellItem, který představuje volbu uživatele.
Poznámky
CFileDialog::GetResults
Načte možnosti uživatele v dialogovém okně, které umožňuje vícenásobný výběr.
IShellItemArray* GetResults() throw();
Návratová hodnota
Ukazatel na IShellItemArray, prostřednictvím kterého lze získat přístup k položkám vybraným v dialogovém okně.
Poznámky
CFileDialog::GetSelectedControlItem
Načte konkrétní položku ze zadaného ovládacího prvku kontejneru v dialogovém okně.
HRESULT GetSelectedControlItem(
DWORD dwIDCtl,
DWORD& dwIDItem);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru.
dwIDItem
ID položky, kterou uživatel vybral v ovládacím prvku.
Poznámky
CFileDialog::GetStartPosition
Voláním této členské funkce načtěte pozici názvu první cesty k souboru v seznamu, pokud m_ofn.Flags
má nastavenou OFN_ALLOWMULTISELECT příznak.
POSITION GetStartPosition() const;
Návratová hodnota
Hodnota POSITION, kterou lze použít pro iteraci; Hodnota NULL, pokud je seznam prázdný.
CFileDialog::HideControl
Voláním této členské funkce skryjete zadaný ovládací prvek v dialogovém okně Otevřít nebo Uložit jako společné.
void HideControl(int nID);
Parametry
Nid
ID ovládacího prvku, který chcete skrýt.
Poznámky
Dialogové okno musí být vytvořeno se stylem OFN_EXPLORER; jinak funkce selže s kontrolním výrazem.
CFileDialog::IsPickFoldersMode
Určuje, zda je aktuální dialogové okno v režimu výběru složky.
BOOL IsPickFoldersMode() const;
Návratová hodnota
TRUE, pokud dialogové okno je v režimu pro výběr složky; jinak NEPRAVDA.
Poznámky
CFileDialog::m_ofn
m_ofn
je struktura typu OPENFILENAME
. Data v této struktuře představují aktuální stav CFileDialog
.
Poznámky
Tato struktura slouží k inicializaci vzhledu souboru Otevřít nebo Uložit jako dialogové okno po vytvoření, ale před zobrazením pomocí DoModal metoda. Můžete například nastavit člen m_ofn
lpstrTitle titulku, který má dialogové okno mít.
S Windows Vista nebo novějším stylem CFileDialog není zaručeno, m_ofn
že vždy odpovídá stavu dialogového okna. Synchronizuje se s dialogovým oknem ve starších verzích Windows. Další informace o synchronizaci struktury a CFileDialog
stavu v systému Windows Vista nebo novější naleznete v tématu CFileDialog::ApplyOFNToShellDialog a CFileDialog::UpdateOFNFromShellDialog.m_ofn
Dialogy souborů ve stylu Windows Vista nebo novější nepodporují určité členy a příznaky CFileDialog
souboru . V důsledku toho to nebude mít žádný vliv.
Následuje seznam členů, které nejsou podporovány systémem Windows Vista nebo novějším:
lpstrCustomFilter
lpstrInitialDir
lCustData
lpfnHook
lpTemplateName
Následující příznaky nejsou podporovány, a proto nemají žádný vliv při použití systému Windows Vista nebo novější styl CFileDialog
:
OFN_ENABLEHOOK
OFN_ENABLEINCLUDENOTIFY
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_EXTENSIONDIFFERENT
OFN_HIDEREADONLY
OFN_LONGNAMES – efektivně vždy v systému Windows Vista nebo novější
OFN_NOLONGNAMES – efektivně vždy vypnuto v systému Windows Vista nebo novějším
OFN_NONETWORKBUTTON – efektivně vždy v systému Windows Vista nebo novější
OFN_READONLY
OFN_SHOWHELP
Další informace o této struktuře naleznete ve struktuře OPENFILENAME v sadě Windows SDK.
CFileDialog::MakeProminent
Umístí ovládací prvek do dialogového okna tak, aby byl v porovnání s jinými ovládacími prvky vyniknut.
HRESULT MakeProminent(DWORD dwIDCtl);
Parametry
dwIDCtl
ID ovládacího prvku.
Poznámky
CFileDialog::OnButtonClicked
Volá se při kliknutí na tlačítko.
virtual void OnButtonClicked(DWORD dwIDCtl);
Parametry
dwIDCtl
ID tlačítka.
Poznámky
CFileDialog::OnCheckButtonToggled
Volá se, když je zaškrtávací políčko zaškrtnuté nebo nezaškrtnuté.
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
Parametry
dwIDCtl
ID zaškrtávacího políčka.
bChecked
Zaškrtnuté nebo nezaškrtnuté.
Poznámky
CFileDialog::OnControlActivating
Volá se při aktivaci ovládacího prvku.
virtual void OnControlActivating(DWORD dwIDCtl);
Parametry
dwIDCtl
ID ovládacího prvku.
Poznámky
CFileDialog::OnFileNameChange
Tuto metodu přepište, pokud chcete zpracovat WM_NOTIFY CDN_SELCHANGE zprávu.
virtual void OnFileNameChange();
Poznámky
Systém odešle CDN_SELCHANGE zprávu, když uživatel vybere nový soubor nebo složku v seznamu souborů dialogového okna Otevřít nebo Uložit jako . Tuto metodu přepište, pokud chcete provést jakékoli akce v reakci na tuto zprávu.
Systém tuto zprávu odešle pouze v případě, že se dialogové okno vytvořilo se zapnutým příznakem OFN_EXPLORER. Další informace o oznámení najdete v tématu CDN_SELCHANGE. Informace o příznaku OFN_EXPLORER naleznete ve struktuře OPENFILENAME a dialogových oknech Otevřít a Uložit jako.
CFileDialog::OnFileNameOK
Tuto funkci přepište pouze v případě, že chcete zadat vlastní ověření názvů souborů, které jsou zadány do společného dialogového okna soubor.
virtual BOOL OnFileNameOK();
Návratová hodnota
1, pokud název souboru není platný název souboru; jinak 0.
Poznámky
Tato funkce umožňuje odmítnout název souboru z jakéhokoli důvodu specifického pro aplikaci. Za normálních okolností tuto funkci nemusíte používat, protože architektura poskytuje výchozí ověření názvů souborů a zobrazí okno se zprávou, pokud je zadán neplatný název souboru.
Pokud se vrátí hodnota 1, zůstane dialogové okno zobrazeno, aby uživatel zadal jiný název souboru. Dialogové okno zavře dialogové okno, pokud je návrat 0. Jiné nenulové návratové hodnoty jsou aktuálně rezervované a neměly by se používat.
CFileDialog::OnFolderChange
Přepište tuto funkci tak, aby zpracovávala zprávu WM_NOTIFYCDN_FOLDERCHANGE.
virtual void OnFolderChange();
Poznámky
Zpráva s oznámením se odešle při otevření nové složky v dialogovém okně Otevřít nebo Uložit jako.
Oznámení se odešle pouze v případě, že se dialogové okno vytvořilo se stylem OFN_EXPLORER. Další informace o oznámení najdete v tématu CDN_FOLDERCHANGE. Informace o stylu OFN_EXPLORER naleznete ve struktuře OPENFILENAME a dialogových oknech Otevřít a Uložit jako.
CFileDialog::OninitDone
Přepište tuto funkci tak, aby zpracovávala zprávu WM_NOTIFY CDN_INITDONE.
virtual void OnInitDone();
Poznámky
Systém odešle tuto zprávu s oznámením, když systém dokončil uspořádání ovládacích prvků v dialogovém okně Otevřít nebo Uložit jako , aby byl prostor pro ovládací prvky podřízeného dialogového okna.
Systém tento příkaz odešle pouze v případě, že se dialogové okno vytvořilo se stylem OFN_EXPLORER. Další informace o oznámení najdete v tématu CDN_INITDONE. Informace o stylu OFN_EXPLORER naleznete ve struktuře OPENFILENAME a dialogových oknech Otevřít a Uložit jako.
Poznámka:
Dialogy souborů se systémem Windows Vista nebo novějším stylem tuto funkci nepodporují. Pokus o použití této funkce v dialogovém okně souboru se systémem Windows Vista nebo novějším stylem vyvolá CNotSupportedException.
CFileDialog::OnItemSelected
Volá se při výběru položky kontejneru.
virtual void OnItemSelected(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru.
dwIDItem
ID položky.
Poznámky
CFileDialog::OnLBSelChangedNotify
Tato funkce se volá vždy, když se bude měnit aktuální výběr v seznamu.
virtual void OnLBSelChangedNotify(
UINT nIDBox,
UINT iCurSel,
UINT nCode);
Parametry
nIDBox
ID pole se seznamem nebo pole se seznamem, ve kterém došlo k výběru.
iCurSel
Index aktuálního výběru.
nCode
Kód oznámení o ovládacím prvku. Tento parametr musí mít jednu z následujících hodnot:
CD_LBSELCHANGE Určuje iCurSel je vybraná položka v seznamu s jedním výběrem.
CD_LBSELSUB Určuje, že iCurSel již není vybrán v seznamu s vícenásobným výběrem.
CD_LBSELADD Určuje, že je v seznamu s vícenásobným výběrem vybrán iCurSel .
CD_LBSELNOITEMS Určuje, že v seznamu s vícenásobným výběrem neexistuje žádný výběr.
Poznámky
Přepsat tuto funkci tak, aby poskytovala vlastní zpracování změn výběru v seznamu. Pomocí této funkce můžete například zobrazit přístupová práva nebo datum poslední změny každého souboru, který uživatel vybere.
CFileDialog::OnShareViolation
Přepište tuto funkci tak, aby poskytovala vlastní zpracování porušení sdílení.
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
Parametry
lpszPathName
Cesta k souboru, na kterém došlo k narušení sdílené složky.
Návratová hodnota
Jedna z následujících hodnot:
OFN_SHAREFALLTHROUGH Název souboru se vrátí z dialogového okna.
OFN_SHARENOWARN Není nutné provádět žádnou další akci.
OFN_SHAREWARN Uživatel obdrží standardní zprávu upozornění pro tuto chybu.
Poznámky
Za normálních okolností tuto funkci nemusíte používat, protože architektura poskytuje výchozí kontrolu porušení sdílení a zobrazí okno se zprávou, pokud dojde k narušení sdílené složky.
Pokud chcete zakázat kontrolu porušení sdílení, použijte bitový operátor OR ke kombinování příznaku OFN_SHAREAWARE s m_ofn.Flags
.
CFileDialog::OnTypeChange
Přepište tuto funkci tak, aby zpracovávala WM_NOTIFYCDN_TYPECHANGE zprávu.
virtual void OnTypeChange();
Poznámky
Zpráva s oznámením se odešle, když uživatel vybere nový typ souboru ze seznamu typů souborů v dialogovém okně Otevřít nebo Uložit jako.
Oznámení se odešle pouze v případě, že se dialogové okno vytvořilo se stylem OFN_EXPLORER. Další informace o oznámení najdete v tématu CDN_TYPECHANGE. Informace o stylu OFN_EXPLORER naleznete ve struktuře OPENFILENAME a dialogových oknech Otevřít a Uložit jako.
CFileDialog::RemoveControlItem
Odebere položku z ovládacího prvku kontejneru v dialogovém okně.
HRESULT RemoveControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru pro odebrání položky.
dwIDItem
ID položky.
Poznámky
CFileDialog::SetCheckButtonState
Nastaví aktuální stav zaškrtávacího tlačítka (zaškrtávací políčko) v dialogovém okně.
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
Parametry
dwIDCtl
ID zaškrtávacího políčka.
bChecked
Stav zaškrtávacího políčka. PRAVDA označuje zaškrtnuté; NEPRAVDA označuje nezaškrtnutou hodnotu.
Poznámky
CFileDialog::SetControlItemState
Nastaví aktuální stav položky v ovládacím prvku kontejneru nalezeném v dialogovém okně.
HRESULT SetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF dwState);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru.
dwIDItem
ID položky.
dwState
Jedna nebo více hodnot z výčtu CDCONTROLSTATE, které označují nový stav ovládacího prvku.
Poznámky
CFileDialog::SetControlItemText
Nastaví text položky ovládacího prvku. Například text, který doprovází přepínač nebo položku v nabídce.
HRESULT SetControlItemText(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru.
dwIDItem
ID položky.
strLabel
Text položky
Poznámky
CFileDialog::SetControlLabel
Nastaví text přidružený k ovládacímu prvku, například text tlačítka nebo popisek textového pole.
HRESULT SetControlLabel(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
ID ovládacího prvku.
strLabel
Název ovládacího prvku.
Poznámky
CFileDialog::SetControlState
Nastaví aktuální viditelnost a povolené stavy daného ovládacího prvku.
HRESULT SetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF dwState);
Parametry
dwIDCtl
ID ovládacího prvku.
dwState
Jedna nebo více hodnot z výčtu CDCONTROLSTATE, které označují aktuální stav ovládacího prvku.
Poznámky
CFileDialog::SetControlText
Voláním této metody nastavíte text pro zadaný ovládací prvek v dialogovém okně Otevřít nebo Uložit jako v Průzkumník stylu.
void SetControlText(
int nID,
LPCSTR lpsz);
void SetControlText(
int nID,
const wchar_t *lpsz);
Parametry
Nid
[v] ID ovládacího prvku, pro který chcete nastavit text.
lpsz
[v] Ukazatel na řetězec, který obsahuje text nastavený pro ovládací prvek.
Poznámky
Obě verze této funkce jsou platné pro aplikace, které používají Unicode. Pouze verze s typem LPCSTR je však platná pro aplikace, které používají ANSI.
Chcete-li použít tuto metodu, je nutné vytvořit dialogové okno s OFN_EXPLORER styl. Jinak funkce selže s kontrolním výrazem.
CFileDialog::SetDefExt
Voláním této funkce nastavíte výchozí příponu názvu souboru pro společné dialogové okno Otevřít nebo Uložit jako.
void SetDefExt(LPCSTR lpsz);
Parametry
lpsz
Ukazatel na řetězec obsahující výchozí rozšíření, které se má použít pro objekt dialogového okna. Tento řetězec nesmí obsahovat tečku (.).
Poznámky
Dialogové okno musí být vytvořeno se stylem OFN_EXPLORER; jinak funkce selže s kontrolním výrazem.
CFileDialog::SetEditBoxText
Nastaví aktuální text v ovládacím prvku textového pole.
HRESULT SetEditBoxText(
DWORD dwIDCtl,
const CString& strText);
Parametry
dwIDCtl
ID textového pole.
strText
Textová hodnota.
Poznámky
CFileDialog::SetProperties
Poskytuje úložiště vlastností, které definuje výchozí hodnoty, které se mají použít pro uloženou položku.
BOOL SetProperties(LPCWSTR lpszPropList);
Parametry
lpszPropList
Seznam předdefinovaných vlastností oddělených textem ;. Seznam příznaků naleznete v části Příznaky OPENFILENAME.
Poznámky
CFileDialog::SetSelectedControlItem
Nastaví vybraný stav konkrétní položky ve skupině přepínačů nebo pole se seznamem nalezené v dialogovém okně.
HRESULT SetSelectedControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametry
dwIDCtl
ID ovládacího prvku kontejneru.
dwIDItem
ID položky, kterou uživatel vybral v ovládacím prvku.
Poznámky
CFileDialog::SetTemplate
Nastaví šablonu dialogového okna pro objekt CFileDialog .
void SetTemplate(
UINT nWin3ID,
UINT nWin4ID);
void SetTemplate(
LPCTSTR lpWin3ID,
LPCTSTR lpWin4ID);
Parametry
nWin3ID
[v] Obsahuje číslo ID prostředku šablony pro objekt, který není průzkumníkem CFileDialog
. Tato šablona se používá pouze u systém Windows NT 3.51 nebo v případě, že styl OFN_EXPLORER neexistuje.
nWin4ID
[v] Obsahuje číslo ID prostředku šablony pro objekt Průzkumníka CFileDialog
. Tato šablona se používá pouze v systém Windows NT 4.0 a novějších verzích, Windows 95 a novějších verzích nebo v případě, že je k dispozici styl OFN_EXPLORER.
lpWin3ID
[v] Obsahuje název prostředku šablony pro objekt, který není průzkumníkem CFileDialog
. Tato šablona se používá pouze u systém Windows NT 3.51 nebo v případě, že styl OFN_EXPLORER neexistuje.
lpWin4ID
[v] Obsahuje název prostředku šablony objektu Průzkumník CFileDialog
. Tato šablona se používá pouze v systém Windows NT 4.0 a novějších verzích, Windows 95 a novějších verzích nebo v případě, že je k dispozici styl OFN_EXPLORER.
Poznámky
Systém bude používat pouze jednu ze zadaných šablon. Systém určuje, kterou šablonu použít, na základě přítomnosti stylu OFN_EXPLORER a operačního systému, na kterém aplikace běží. Zadáním šablony bez Průzkumníka a Průzkumníka je snadné podporovat systém Windows NT 3.51, systém Windows NT 4.0 a novějších verzích a Windows 95 a novějších verzích.
Poznámka:
Dialogová okna souborů se systémem Windows Vista nebo novějším stylem tuto funkci nepodporují. Při pokusu o použití této funkce v dialogovém okně souboru se systémem Windows Vista nebo novější styl vyvolá CNotSupportedException. Alternativou je použití přizpůsobeného dialogového okna. Další informace o použití vlastního CFileDialog
souboru naleznete v tématu IFileDialogCustomize.
CFileDialog::StartVisualGroup
Deklaruje skupinu vizuálů v dialogovém okně. Následná volání jakékoli metody add tyto prvky do této skupiny přidá.
HRESULT StartVisualGroup(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
ID skupiny vizuálů.
strLabel
Název skupiny.
Poznámky
CFileDialog::UpdateOFNFromShellDialog
m_ofn
Aktualizuje datovou strukturu CFileDialog na základě aktuálního stavu interního objektu.
void UpdateOFNFromShellDialog();
Poznámky
Ve verzích windows před Windows Vista, člen OPENFILENAME datové struktury byl nepřetržitě synchronizován se stavem CFileDialog
. Všechny změny m_ofn členské proměnné přímo ovlivnily stav dialogového okna. Všechny změny stavu dialogového okna se také okamžitě aktualizovaly m_ofn členské proměnné.
V systému Windows Vista nebo novější není m_ofn
datová struktura automaticky aktualizována. Pokud chcete zaručit přesnost dat v m_ofn
členské proměnné, měli byste funkci před přístupem k datům volat UpdateOFNFromShellDialog
. Systém Windows volá tuto funkci automaticky během zpracování IFileDialog::OnFileOK.
Další informace o použití CFileDialog
třídy v systému Windows Vista nebo novější naleznete v tématu CFileDialog Třída.
Příklad
Tento příklad aktualizuje CFileDialog
před zobrazením. Před aktualizací m_ofn
členské proměnné ji musíme synchronizovat s aktuálním stavem dialogového okna.
// 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();