Klasa CFileDialog
Hermetyzuje typowe okno dialogowe używane do operacji otwierania pliku lub zapisywania plików.
Składnia
class CFileDialog : public CCommonDialog
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CFileDialog::CFileDialog | CFileDialog Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CFileDialog::AddCheckButton | Dodaje przycisk wyboru do okna dialogowego. |
CFileDialog::AddComboBox | Dodaje pole kombi do okna dialogowego. |
CFileDialog::AddControlItem | Dodaje element do kontrolki kontenera w oknie dialogowym. |
CFileDialog::AddEditBox | Dodaje do okna dialogowego okno dialogowe edytowania. |
CFileDialog::AddMenu | Dodaje menu do okna dialogowego. |
CFileDialog::AddPlace | Przeciążone. Dodaje folder do listy miejsc dostępnych dla użytkownika w celu otwierania lub zapisywania elementów. |
CFileDialog::AddPushButton | Dodaje przycisk do okna dialogowego. |
CFileDialog::AddRadioButtonList | Dodaje do okna dialogowego przycisk opcji (znany również jako przycisk radiowy). |
CFileDialog::AddSeparator | Dodaje separator do okna dialogowego. |
CFileDialog::AddText | Dodaje zawartość tekstowa do okna dialogowego. |
CFileDialog::ApplyOFNToShellDialog | Aktualizuje stan CFileDialog elementu , aby był zgodny z parametrami i flagami przechowywanymi w zmiennej składowej m_ofn . |
CFileDialog::D oModal | Wyświetla okno dialogowe i umożliwia użytkownikowi dokonanie wyboru. |
CFileDialog::EnableOpenDropDown | Włącza listę rozwijaną na przycisku Otwórz lub Zapisz w oknie dialogowym. |
CFileDialog::EndVisualGroup | Zatrzymuje dodawanie elementów do grupy wizualizacji w oknie dialogowym. |
CFileDialog::GetCheckButtonState | Pobiera bieżący stan przycisku wyboru (pole wyboru) w oknie dialogowym. |
CFileDialog::GetControlItemState | Pobiera bieżący stan elementu w kontrolce kontenera znalezionej w oknie dialogowym. |
CFileDialog::GetControlState | Pobiera bieżącą widoczność i włączone stany danej kontrolki. |
CFileDialog::GetEditBoxText | Pobiera bieżący tekst w kontrolce pola edycji. |
CFileDialog::GetFileExt | Zwraca rozszerzenie wybranego pliku. |
CFileDialog::GetFileName | Zwraca nazwę pliku wybranego pliku. |
CFileDialog::GetFileTitle | Zwraca tytuł wybranego pliku. |
CFileDialog::GetFolderPath | Pobiera ścieżkę aktualnie otwartego folderu lub katalogu dla okna dialogowego Otwórz lub Zapisz jako wspólne w stylu Eksploratora. |
CFileDialog::GetIFileDialogCustomize | Pobiera wewnętrzny obiekt COM dla niestandardowego CFileDialog obiektu. |
CFileDialog::GetIFileOpenDialog | Pobiera wewnętrzny obiekt COM dla obiektu CFileDialog , który jest używany jako okno dialogowe Otwieranie pliku. |
CFileDialog::GetIFileSaveDialog | Pobiera wewnętrzny obiekt COM dla obiektu CFileDialog , który jest używany jako okno dialogowe Zapisywanie pliku. |
CFileDialog::GetNextPathName | Zwraca pełną ścieżkę następnego wybranego pliku. |
CFileDialog::GetOFN | OPENFILENAME Pobiera strukturę CFileDialog obiektu. |
CFileDialog::GetPathName | Zwraca pełną ścieżkę wybranego pliku. |
CFileDialog::GetReadOnlyPref | Zwraca stan tylko do odczytu wybranego pliku. |
CFileDialog::GetResult | Pobiera wybór, który użytkownik dokonał w oknie dialogowym. |
CFileDialog::GetResults | Pobiera opcje użytkownika w oknie dialogowym, które umożliwia wybór wielu. |
CFileDialog::GetSelectedControlItem | Pobiera określony element z określonych kontrolek kontenera w oknie dialogowym. |
CFileDialog::GetStartPosition | Zwraca położenie pierwszego elementu listy nazw plików. |
CFileDialog::HideControl | Ukrywa określoną kontrolkę w stylu Eksploratora Otwórz lub Zapisz jako typowe okno dialogowe. |
CFileDialog::IsPickFoldersMode | Określa, czy bieżące okno dialogowe w trybie selektora folderów. |
CFileDialog::MakeProminent | Umieszcza kontrolkę w oknie dialogowym, tak aby wyróżniała się w porównaniu z innymi dodanymi kontrolkami. |
CFileDialog::RemoveControlItem | Usuwa element z kontrolki kontenera w oknie dialogowym. |
CFileDialog::SetCheckButtonState | Ustawia bieżący stan przycisku wyboru (pole wyboru) w oknie dialogowym. |
CFileDialog::SetControlItemState | Ustawia bieżący stan elementu w kontrolce kontenera znalezionej w oknie dialogowym. |
CFileDialog::SetControlItemText | Ustawia tekst elementu kontrolki. Na przykład tekst, który towarzyszy przyciskowi radiowemu lub elementowi w menu. |
CFileDialog::SetControlLabel | Ustawia tekst skojarzony z kontrolką, taką jak tekst przycisku lub etykieta pola edycji. |
CFileDialog::SetControlState | Ustawia bieżącą widoczność i włączone stany danej kontrolki. |
CFileDialog::SetControlText | Ustawia tekst dla określonej kontrolki w stylu Eksploratora Otwórz lub Zapisz jako typowe okno dialogowe. |
CFileDialog::SetDefExt | Ustawia domyślne rozszerzenie nazwy pliku dla okna dialogowego Otwórz lub Zapisz jako typowe w stylu Eksploratora. |
CFileDialog::SetEditBoxText | Ustawia bieżący tekst w kontrolce pola edycji. |
CFileDialog::SetProperties | Udostępnia magazyn właściwości, który definiuje wartości domyślne, które mają być używane do zapisywania elementu. |
CFileDialog::SetSelectedControlItem | Ustawia wybrany stan określonego elementu w grupie przycisków opcji lub w polu kombi znajdującym się w oknie dialogowym. |
CFileDialog::SetTemplate | Ustawia szablon okna dialogowego CFileDialog dla obiektu. |
CFileDialog::StartVisualGroup | Deklaruje grupę wizualizacji w oknie dialogowym. Kolejne wywołania dowolnej metody "add" dodają te elementy do tej grupy. |
CFileDialog::UpdateOFNFromShellDialog | Aktualizuje dane przechowywane w zmiennej m_ofn składowej, aby odpowiadały bieżącemu stanowi okna dialogowego pliku. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
CFileDialog::OnButtonClicked | Wywoływana po kliknięciu przycisku. |
CFileDialog::OnCheckButtonToggled | Wywoływana, gdy pole wyboru jest zaznaczone/niezaznaczone. |
CFileDialog::OnControlActivating | Wywoływana, gdy kontrolka jest aktywna. |
CFileDialog::OnFileNameChange | Obsługuje komunikat WM_NOTIFY CDN_SELCHANGE. |
CFileDialog::OnFileNameOK | Sprawdza poprawność nazwy pliku wprowadzonej w oknie dialogowym. |
CFileDialog::OnFolderChange | Obsługuje komunikat WM_NOTIFY CDN_FOLDERCHANGE. |
CFileDialog::OnInitDone | Obsługuje komunikat WM_NOTIFY CDN_INITDONE. |
CFileDialog::OnItemselected | Wywoływana po wybraniu elementu kontenera. |
CFileDialog::OnLBSelChangedNotify | Umożliwia wykonywanie niestandardowych akcji po zmianie wyboru pliku. |
CFileDialog::OnShareViolation | Obsługuje naruszenia udziału. |
CFileDialog::OnTypeChange | Obsługuje komunikat WM_NOTIFY CDN_TYPECHANGE. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CFileDialog::m_ofn | Struktura systemu Windows OPENFILENAME . Zapewnia dostęp do podstawowych parametrów okna dialogowego pliku. |
Uwagi
Typowe okna dialogowe plików umożliwiają implementowanie okien dialogowych wyboru plików, na przykład Otwórz plik i Zapisz jako w sposób zgodny ze standardami systemu Windows.
Można użyć CFileDialog
w taki sposób, jak w przypadku podanego konstruktora, lub możesz utworzyć własną klasę okna dialogowego z klasy i napisać konstruktor zgodnie z CFileDialog
potrzebami. W obu przypadkach te okna dialogowe będą zachowywać się jak standardowe okna dialogowe MFC, ponieważ pochodzą one z klasy CCommonDialog. CFileDialog
opiera się na pliku COMMDLG.DLL, który znajduje się w systemie Windows.
Wygląd i funkcjonalność systemu Windows Vista lub nowszego CFileDialog
różnią się od wcześniejszych wersji systemu Windows. Ustawienie domyślne CFileDialog
automatycznie używa nowego stylu systemu Windows Vista lub nowszego bez zmian kodu, jeśli program jest kompilowany i uruchamiany w systemie Windows Vista lub nowszym. Użyj parametru bVistaStyle w konstruktorze, aby ręcznie zastąpić tę automatyczną aktualizację. Wyjątkiem od automatycznej aktualizacji są dostosowane okna dialogowe. Nie zostaną one przekonwertowane na nowy styl. Aby uzyskać więcej informacji na temat konstruktora, zobacz CFileDialog::CFileDialog.
Uwaga
System identyfikatora kontrolki różni się w systemie Windows Vista lub nowszym od wcześniejszych wersji systemu Windows w przypadku korzystania z systemu CFileDialog
. Przed rozpoczęciem przenoszenia projektu z wcześniejszej wersji systemu Windows należy zaktualizować wszystkie odwołania do CFileDialog
kontrolek w kodzie.
Niektóre CFileDialog
metody nie są obsługiwane w systemie Windows Vista lub nowszym. Zapoznaj się z tematem indywidualnej metody, aby uzyskać informacje o tym, czy metoda jest obsługiwana. Ponadto następujące funkcje dziedziczone nie są obsługiwane w systemie Windows Vista lub nowszym:
Komunikaty systemu Windows dla CFileDialog
klasy różnią się w zależności od używanego systemu operacyjnego. Na przykład system Windows XP nie obsługuje CDialog::OnCancel i CDialog::OnOK dla CFileDialog
klasy . Jednak systemy operacyjne Windows Vista i nowsze obsługują je. Aby uzyskać więcej informacji na temat różnych komunikatów, które są generowane i kolejności ich odbierania, zobacz CFileDialog Sample: Logging Event Order (Przykład CFileDialog: rejestrowanie kolejności zdarzeń).
Aby użyć CFileDialog
obiektu, najpierw utwórz obiekt przy użyciu konstruktora CFileDialog
. Po utworzeniu okna dialogowego można ustawić lub zmodyfikować dowolne wartości w strukturze CFileDialog::m_ofn , aby zainicjować wartości lub stany kontrolek okna dialogowego. Struktura m_ofn
jest typu OPENFILENAME
. Aby uzyskać więcej informacji, zobacz strukturę OPENFILENAME w zestawie Windows SDK.
Po zainicjowaniu kontrolek okna dialogowego wywołaj metodę CFileDialog::D oModal , aby wyświetlić okno dialogowe, aby użytkownik mógł wpisać ścieżkę i nazwę pliku. DoModal
zwraca, czy użytkownik kliknął przycisk OK (IDOK) lub przycisk Anuluj (IDCANCEL). Jeśli DoModal
funkcja IDOK zwraca wartość IDOK, możesz użyć jednej z CFileDialog
funkcji publicznych elementów członkowskich, aby pobrać informacje wprowadzone przez użytkownika.
Uwaga
W systemie Windows Vista lub nowszym wiele wywołań metody IFileDialog::SetFileTypes powoduje błąd. Drugie wywołanie SetFileTypes
dla dowolnego wystąpienia obiektu CFileDialog
zwróci E_UNEXPECTED w systemie Windows Vista lub nowszym. Niektóre CFileDialog
funkcje metody wywołają metodę SetFileTypes
. Na przykład dwa wywołania CFileDialog::DoModal
dla tego samego wystąpienia CFileDialog
generuje funkcję ASSERT.
CFileDialog
zawiera kilka chronionych elementów członkowskich, które umożliwiają niestandardową obsługę naruszeń udziału, walidację nazwy pliku i powiadomienie o zmianie pola listy. Te chronione elementy członkowskie to funkcje wywołania zwrotnego, których większość aplikacji nie musi używać, ponieważ obsługa domyślna jest wykonywana automatycznie. Wpisy mapy komunikatów dla tych funkcji nie są wymagane, ponieważ są one standardowymi funkcjami wirtualnymi.
Możesz użyć funkcji Windows CommDlgExtendedError , aby określić, czy wystąpił błąd podczas inicjowania okna dialogowego i dowiedzieć się więcej o błędzie.
Niszczenie CFileDialog
obiektów jest obsługiwane automatycznie. Nie trzeba wywoływać CDialog::EndDialog.
Aby umożliwić użytkownikowi wybranie wielu plików, przed wywołaniem DoModal
polecenia ustaw flagę OFN_ALLOWMULTISELECT . Musisz podać własny bufor nazwy pliku, aby uwzględnić zwracaną listę wielu nazw plików. Zrób to, zastępując wskaźnik wskaźnikiem do przydzielonego buforuCFileDialog
, po skonstruowaniu m_ofn.lpstrFile
elementu , ale przed wywołaniem metody DoModal
.
Ponadto należy ustawić m_ofn.nMaxFile
przy użyciu liczby znaków w buforze wskazywanej przez m_ofn.lpstrFile
wartość . Jeśli ustawisz maksymalną liczbę plików do wybrania na n
wartość , wymagany rozmiar buforu to n * (_MAX_PATH + 1) + 1
. Pierwszy element zwrócony w buforze to ścieżka do folderu, w którym zostały wybrane pliki. W przypadku okien dialogowych systemu Windows Vista lub nowszych ciągi nazw katalogów i plików są zakończone wartością null, z dodatkowym znakiem null po nazwie pliku. Ten format umożliwia okno dialogowe w stylu Eksploratora zwraca długie nazwy plików, które zawierają spacje. W przypadku okien dialogowych starego stylu ciągi nazw katalogów i plików są oddzielone spacjami, a funkcja używa krótkich nazw plików dla nazw plików ze spacjami.
W poniższym przykładzie pokazano, jak używać buforu do pobierania i wyświetlania listy wielu nazw plików.
#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++;
}
}
Aby zmienić rozmiar buforu w odpowiedzi na użytkownika wybierającego wiele nazw plików, należy utworzyć nową klasę z CFileDialog
klasy i zastąpić metodę CFileDialog::OnFileNameChange .
Jeśli utworzysz nową klasę z CFileDialog
klasy , możesz użyć mapy komunikatów do obsługi dowolnych komunikatów. Aby rozszerzyć domyślną obsługę komunikatów, utwórz klasę z CFileDialog
klasy , dodaj mapę komunikatów do nowej klasy i podaj funkcje składowe dla nowych komunikatów. Nie trzeba udostępniać funkcji haka, aby dostosować okno dialogowe.
Aby dostosować okno dialogowe, utwórz klasę z CFileDialog
, podaj niestandardowy szablon okna dialogowego i dodaj mapę komunikatów w celu przetworzenia komunikatów powiadomień z rozszerzonych kontrolek. Przekaż wszelkie nieprzetworzone komunikaty do klasy bazowej. Nie trzeba dostosowywać funkcji haka.
W przypadku korzystania z systemu Windows Vista lub nowszego CFileDialog
stylu programu nie można używać map komunikatów i szablonów okien dialogowych. Zamiast tego należy użyć interfejsów COM dla podobnych funkcji.
Aby uzyskać więcej informacji na temat używania programu CFileDialog
, zobacz Typowe klasy okien dialogowych.
Hierarchia dziedziczenia
CFileDialog
Wymagania
Nagłówek: afxdlgs.h
CFileDialog::AddCheckButton
Dodaje przycisk wyboru do okna dialogowego.
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
Parametry
dwIDCtl
Identyfikator przycisku sprawdzania, który ma zostać dodany.
strLabel
Nazwa przycisku wyboru.
bChecked
Wartość logiczna wskazująca bieżący stan przycisku sprawdzania. Wartość TRUE, jeśli jest zaznaczona; FAŁSZ— w przeciwnym razie
Uwagi
CFileDialog::AddComboBox
Dodaje pole kombi do okna dialogowego.
HRESULT AddComboBox(DWORD dwIDCtl);
Parametry
dwIDCtl
Identyfikator pola kombi do dodania.
Uwagi
CFileDialog::AddControlItem
Dodaje element do kontrolki kontenera w oknie dialogowym.
HRESULT AddControlItem(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera, do których ma zostać dodany element.
dwIDItem
Identyfikator elementu.
strLabel
Tekst elementu.
Uwagi
CFileDialog::AddEditBox
Dodaje do okna dialogowego okno dialogowe edytowania.
HRESULT AddEditBox(
DWORD dwIDCtl,
const CString& strText);
Parametry
dwIDCtl
Identyfikator pola edycji do dodania.
strText
Nazwa pola edycji.
Uwagi
CFileDialog::AddMenu
Dodaje menu do okna dialogowego.
HRESULT AddMenu(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
Identyfikator menu do dodania.
strLabel
Nazwa menu.
Uwagi
CFileDialog::AddPlace
Dodaje folder do listy miejsc dostępnych dla użytkownika w celu otwierania lub zapisywania elementów.
void AddPlace(
LPCWSTR lpszFolder,
FDAP fdap = FDAP_TOP) throw();
void AddPlace(
IShellItem* psi,
FDAP fdap = FDAP_TOP) throw();
Parametry
lpszFolder
Ścieżka do folderu, który ma zostać udostępniony użytkownikowi. Może to być tylko folder.
fdap
Określa, gdzie folder znajduje się na liście.
Psi
Wskaźnik do elementu IShellItem, który reprezentuje folder, który ma zostać udostępniony użytkownikowi. Może to być tylko folder.
Uwagi
CFileDialog::AddPushButton
Dodaje przycisk do okna dialogowego.
HRESULT AddPushButton(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
Identyfikator przycisku do dodania.
strLabel
Nazwa przycisku.
Uwagi
CFileDialog::AddRadioButtonList
Dodaje do okna dialogowego przycisk opcji (znany również jako przycisk radiowy).
HRESULT AddRadioButtonList(DWORD dwIDCtl);
Parametry
dwIDCtl
Identyfikator grupy przycisków opcji do dodania.
Uwagi
CFileDialog::AddSeparator
Dodaje separator do okna dialogowego.
HRESULT AddSeparator(DWORD dwIDCtl);
Parametry
dwIDCtl
Identyfikator separatora dodaj.
Uwagi
CFileDialog::AddText
Dodaje tekst do okna dialogowego.
HRESULT AddText(
DWORD dwIDCtl,
const CString& strText);
Parametry
dwIDCtl
Identyfikator tekstu do dodania.
strText
Nazwa tekstu.
Uwagi
CFileDialog::ApplyOFNToShellDialog
Aktualizuje bieżący stan pliku CFileDialog na podstawie wartości przechowywanych w m_ofn
strukturze danych.
void ApplyOFNToShellDialog();
Uwagi
W wersjach systemu Windows przed Windows Vista struktura danych OPENFILENAME elementu członkowskiego była stale synchronizowana ze stanem CFileDialog
. Wszelkie zmiany zmiennej składowej m_ofn zostały natychmiast odzwierciedlone w stanie okna dialogowego. Ponadto wszelkie zmiany stanu okna dialogowego natychmiast aktualizują zmienną składową m_ofn
.
W systemie Windows Vista lub nowszym wartości w zmiennej m_ofn
składowej i stanie CFileDialog
nie mają gwarancji synchronizacji. Ta funkcja wymusza aktualizację stanu CFileDialog
elementu w celu dopasowania do m_ofn
struktury. System Windows automatycznie wywołuje tę funkcję podczas CFileDialog::D oModal.
Aby uzyskać więcej informacji na temat używania CFileDialog
klasy w systemie Windows Vista lub nowszym, zobacz Klasa CFileDialog.
Przykład
Zobacz przykład CFileDialog ::UpdateOFNFromShellDialog.
CFileDialog::CFileDialog
Wywołaj tę funkcję, aby utworzyć standardowe okno dialogowe pliku systemu 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
[in] Parametr określający typ okna dialogowego do utworzenia. Ustaw dla niej wartość TRUE, aby utworzyć okno dialogowe Otwieranie pliku. Ustaw wartość FALSE, aby skonstruować okno dialogowe Zapisywanie pliku jako .
lpszDefExt
[in] Domyślne rozszerzenie nazwy pliku. Jeśli użytkownik nie zawiera znanego rozszerzenia (jedno, które ma skojarzenie na komputerze użytkownika) w polu Nazwa pliku, rozszerzenie określone przez lpszDefExt jest automatycznie dołączane do nazwy pliku. Jeśli ten parametr ma wartość NULL, żadne rozszerzenie nie jest dołączane.
lpszFileName
[in] Początkowa nazwa pliku wyświetlana w polu Nazwa pliku. Jeśli wartość NULL, nie jest wyświetlana żadna początkowa nazwa pliku.
dwFlags
[in] Kombinacja co najmniej jednej flagi, której można użyć do dostosowania okna dialogowego. Opis tych flag można znaleźć w strukturze OPENFILENAME w zestawie Windows SDK. Jeśli zmodyfikujesz składową m_ofn.Flags
struktury, użyj operatora bitowego OR w swoich zmianach, aby zachować zachowanie domyślne bez zmian.
lpszFilter
[in] Seria par ciągów określających filtry, które można zastosować do pliku. Jeśli określisz filtry plików, na liście Pliki będą wyświetlane tylko pliki spełniające kryteria filtrowania. Zobacz sekcję Uwagi, aby uzyskać więcej informacji na temat sposobu pracy z filtrami plików.
pParentWnd
[in] Wskaźnik do okna nadrzędnego lub właściciela okna dialogowego pliku.
dwSize
[in] Rozmiar OPENFILENAME
struktury. Ta wartość zależy od wersji systemu operacyjnego. MFC użył tego parametru do określenia odpowiedniego rodzaju okna dialogowego do utworzenia. Domyślny rozmiar 0 oznacza, że kod MFC określi prawidłowy rozmiar okna dialogowego do użycia na podstawie wersji systemu operacyjnego, na której jest uruchamiany program.
bVistaStyle
[in] Uwaga Ten parametr jest dostępny w programie Visual Studio 2008 lub nowszym oraz powoduje użycie nowego okna dialogowego tylko w przypadku korzystania z systemu Windows Vista lub nowszego.
Parametr określający styl okna dialogowego pliku. Ustaw dla niego wartość TRUE, aby używać nowych okien dialogowych pliku stylu Vista. W przeciwnym razie zostanie użyty stary styl okien dialogowych. Zobacz sekcję Uwagi, aby uzyskać więcej informacji na temat uruchamiania w obszarze Vista.
Uwagi
Zostanie skonstruowane okno dialogowe Otwieranie pliku lub Zapisywanie pliku jako w zależności od wartości bOpenFileDialog.
Określenie rozszerzenia domyślnego przy użyciu lpszDefExt może nie spowodować oczekiwanego zachowania, ponieważ rzadko jest przewidywalne, jakie rozszerzenia mają skojarzenia plików na komputerze użytkownika. Jeśli potrzebujesz większej kontroli nad dołączaniem rozszerzenia domyślnego, możesz utworzyć własną klasę z CFileDialog
klasy i zastąpić metodę CFileDialog::OnFileNameOK
, aby wykonać własną obsługę rozszerzeń.
Aby umożliwić użytkownikowi wybranie wielu plików, przed wywołaniem funkcji DoModal ustaw flagę OFN_ALLOWMULTISELECT. Musisz podać własny bufor nazwy pliku, aby przechowywać zwracaną listę wielu nazw plików. Zrób to, zastępując wskaźnik wskaźnikiem do przydzielonego buforu, po skonstruowaniu m_ofn.lpstrFile
pliku CFileDialog, ale przed wywołaniem metody DoModal
. Ponadto należy ustawić m_ofn.nMaxFile
liczbę znaków w buforze wskazywaną przez m_ofn.lpstrFile
wartość . Jeśli ustawisz maksymalną liczbę plików do wybrania na n, wymagany rozmiar buforu to n
*(_MAX_PATH + 1) + 1. Na przykład:
#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++;
}
}
Aby umożliwić użytkownikowi zmianę rozmiaru okna dialogowego w stylu Eksploratora przy użyciu myszy lub klawiatury, ustaw flagę OFN_ENABLESIZING. Ustawienie tej flagi jest konieczne tylko w przypadku podania procedury zaczepienia lub szablonu niestandardowego. Flaga działa tylko w oknie dialogowym w stylu Eksploratora; Nie można zmienić rozmiaru okien dialogowych w starym stylu.
Parametr lpszFilter służy do określania typu nazwy pliku, który musi być wyświetlany na liście plików. Pierwszy ciąg w parze ciągów opisuje filtr; drugi ciąg wskazuje rozszerzenie nazwy pliku do użycia. Można określić wiele rozszerzeń przy użyciu średnika (znak ";") jako ogranicznika. Ciąg kończy się dwoma pionowymi znakami paska (||
), a następnie znakiem NULL. Można również użyć obiektu CString dla tego parametru.
Na przykład program Microsoft Excel umożliwia użytkownikom otwieranie plików z rozszerzeniami .xlc (chart) lub .xls (arkusz), między innymi. Filtr dla programu Excel można napisać jako:
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
Jeśli jednak planujesz używać tego ciągu do bezpośredniej OPENFILENAME
aktualizacji struktury, należy rozdzielić ciągi znakiem null , '\0'
zamiast pionowych pasków ('|'
).
Parametr bVistaStyle ma zastosowanie tylko w przypadku uruchamiania w systemie Windows Vista lub nowszym. W starszych wersjach systemu Windows ten parametr jest ignorowany. Jeśli bVistaStyle ma wartość TRUE, podczas kompilowania programu za pomocą programu Visual Studio 2008 lub nowszego zostanie użyte nowe okno dialogowe pliku stylu Vista. W przeciwnym razie zostanie użyte poprzednie okno dialogowe pliku stylu MFC.
Szablony okien dialogowych nie są obsługiwane w oknach dialogowych opartych na bVistaStyle
Przykład
Zobacz przykład CFileDialog::D oModal.
CFileDialog::D oModal
Wywołaj tę funkcję, aby wyświetlić okno dialogowe wspólnego pliku systemu Windows i zezwolić użytkownikowi na przeglądanie plików i katalogów oraz wprowadzanie nazwy pliku.
virtual INT_PTR DoModal();
Wartość zwracana
IDOK lub IDCANCEL. Jeśli element IDCANCEL jest zwracany, wywołaj funkcję Windows CommDlgExtendedError , aby ustalić, czy wystąpił błąd.
IDOK i IDCANCEL są stałymi, które wskazują, czy użytkownik wybrał przycisk OK, czy Anuluj.
Uwagi
Jeśli chcesz zainicjować różne opcje okna dialogowego pliku, ustawiając elementy członkowskie m_ofn
struktury, należy to zrobić przed wywołaniem DoModal
metody , ale po utworzeniu obiektu okna dialogowego.
Jeśli na przykład chcesz zezwolić użytkownikowi na wybranie wielu plików, ustaw flagę OFN_ALLOWMULTISELECT przed wywołaniem DoModal
metody , jak pokazano w przykładzie kodu w tym temacie.
Gdy użytkownik kliknie przycisk OK lub Anuluj okno dialogowe albo wybierze opcję Zamknij z menu sterowania okna dialogowego, kontrolka zostanie zwrócona do aplikacji. Następnie można wywołać inne funkcje członkowskie, aby pobrać ustawienia lub informacje wprowadzane przez użytkownika do okna dialogowego.
DoModal
to funkcja wirtualna przesłonięta z klasy CDialog
.
Przykład
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
Włącza listę rozwijaną na przycisku Otwórz lub Zapisz w oknie dialogowym.
HRESULT EnableOpenDropDown(DWORD dwIDCtl);
Parametry
dwIDCtl
Identyfikator listy rozwijanej.
Uwagi
CFileDialog::EndVisualGroup
Zatrzymuje dodawanie elementów do grupy wizualizacji w oknie dialogowym.
HRESULT EndVisualGroup();
Wartość zwracana
Zwraca S_OK w przypadku powodzenia; w przeciwnym razie wartość błędu.
Uwagi
CFileDialog::GetCheckButtonState
Pobiera bieżący stan przycisku wyboru (pole wyboru) w oknie dialogowym.
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
Parametry
dwIDCtl
Identyfikator pola wyboru.
bChecked
Stan pola wyboru. Wartość TRUE wskazuje zaznaczoną wartość; Fałsz wskazuje niezaznaczone.
Uwagi
CFileDialog::GetControlItemState
Pobiera bieżący stan elementu w kontrolce kontenera znalezionej w oknie dialogowym.
HRESULT GetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF& dwState);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera.
dwIDItem
Identyfikator elementu.
dwState
Odwołanie do zmiennej, która odbiera jedną z więcej wartości z wyliczenia CDCONTROLSTATE, która wskazuje bieżący stan kontrolki.
Uwagi
CFileDialog::GetControlState
Pobiera bieżącą widoczność i włączone stany danej kontrolki.
HRESULT GetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF& dwState);
Parametry
dwIDCtl
Identyfikator kontrolki.
dwState
Odwołanie do zmiennej, która odbiera co najmniej jedną wartość z wyliczenia CDCONTROLSTATE, która wskazuje bieżący stan kontrolki.
Uwagi
CFileDialog::GetEditBoxText
Pobiera bieżący tekst w kontrolce pola edycji.
HRESULT GetEditBoxText(
DWORD dwIDCtl,
CString& strText);
Parametry
dwIDCtl
Identyfikator pola edycji.
strText
Wartość tekstowa.
Uwagi
CFileDialog::GetFileExt
Wywołaj tę funkcję, aby pobrać rozszerzenie nazwy pliku wprowadzonego w oknie dialogowym.
CString GetFileExt() const;
Wartość zwracana
Rozszerzenie nazwy pliku.
Uwagi
Jeśli na przykład nazwa wprowadzonego pliku jest DATA.TXT, GetFileExt
zwraca wartość "TXT".
Jeśli m_ofn.Flags
ustawiono flagę OFN_ALLOWMULTISELECT, ten ciąg zawiera sekwencję ciągów zakończonych wartością null, a pierwszy ciąg jest ścieżką katalogu wybranej grupy plików, a następnie nazwy wszystkich plików wybranych przez użytkownika. Aby pobrać nazwy ścieżki pliku, użyj funkcji składowych GetStartPosition i GetNextPathName .
CFileDialog::GetFileName
Wywołaj tę funkcję, aby pobrać nazwę nazwy pliku wprowadzonego w oknie dialogowym.
CString GetFileName() const;
Wartość zwracana
Nazwa pliku.
Uwagi
Nazwa pliku zawiera zarówno prefiks, jak i rozszerzenie. Na przykład GetFileName
zostanie zwrócona wartość "TEXT". DAT" dla pliku C:\FILES\TEXT.DAT.
Jeśli m_ofn.Flags
ustawiono flagę OFN_ALLOWMULTISELECT
, należy wywołać metodę GetStartPosition i GetNextPathName , aby pobrać nazwę ścieżki pliku.
CFileDialog::GetFileTitle
Wywołaj tę funkcję, aby pobrać tytuł pliku wprowadzonego w oknie dialogowym.
CString GetFileTitle() const;
Wartość zwracana
Tytuł pliku.
Uwagi
Tytuł pliku zawiera tylko jego prefiks, bez ścieżki lub rozszerzenia. Na przykład GetFileTitle
zwraca wartość "TEXT" dla pliku C:\FILES\TEXT.DAT.
Jeśli m_ofn.Flags
ustawiono flagę OFN_ALLOWMULTISELECT, ten ciąg zawiera sekwencję ciągów zakończonych wartością null, a pierwszy ciąg jest ścieżką katalogu wybranej grupy plików, a następnie nazwy wszystkich plików wybranych przez użytkownika. Z tego powodu użyj funkcji składowych GetStartPosition i GetNextPathName , aby pobrać następną nazwę pliku na liście.
Przykład
Zobacz przykład CFileDialog::D oModal.
CFileDialog::GetFolderPath
Wywołaj tę funkcję składową, aby pobrać ścieżkę aktualnie otwartego folderu lub katalogu dla okna dialogowego Otwórz lub Zapisz jako wspólne w stylu Eksploratora.
CString GetFolderPath() const;
Wartość zwracana
Obiekt CString zawierający aktualnie otwarty folder lub katalog.
Uwagi
Okno dialogowe musi zostać utworzone przy użyciu stylu OFN_EXPLORER; w przeciwnym razie metoda zakończy się niepowodzeniem z asercją.
Tę metodę można wywołać tylko wtedy, gdy jest wyświetlane okno dialogowe. Po zamknięciu okna dialogowego ta funkcja nie będzie już działać, a metoda zakończy się niepowodzeniem z asercją.
CFileDialog::GetIFileDialogCustomize
Pobiera wskaźnik do wewnętrznego obiektu COM dla danego pliku CFileDialog.
IFileDialogCustomize* GetIFileDialogCustomize();
Wartość zwracana
Wskaźnik do wewnętrznego obiektu COM dla .CFileDialog
Twoim obowiązkiem jest odpowiednie zwolnienie tego wskaźnika.
Uwagi
Tej funkcji należy używać tylko w systemie Windows Vista lub nowszym z obiektem z właściwością bVistaStyle ustawioną na wartość TRUE. Jeśli używasz tej funkcji, gdy bVistaStyle ma wartość FALSE, zwróci wartość NULL w trybie wydania i zgłosi asercji w trybie debugowania.
Aby uzyskać więcej informacji na temat interfejsu IFileDialogCustomize
, zobacz IFileDialogCustomize.
Przykład
Ten przykład pobiera wewnętrzny obiekt COM. Aby uruchomić ten przykład kodu, należy skompilować go w systemie Windows Vista lub nowszym.
// 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
Pobiera wskaźnik do wewnętrznego obiektu COM dla danego CFileDialog
obiektu .
IFileOpenDialog* GetIFileOpenDialog();
Wartość zwracana
Wskaźnik do wewnętrznego obiektu COM dla .CFileDialog
Twoim obowiązkiem jest odpowiednie zwolnienie tego wskaźnika.
Uwagi
Tej funkcji należy używać tylko w systemie Windows Vista lub nowszym z obiektem z właściwością bVistaStyle ustawioną na wartość TRUE. Ta funkcja zwraca wartość NULL, jeśli CFileDialog
nie jest otwarte okno dialogowe lub jeśli właściwość bVistaStyle jest ustawiona na WARTOŚĆ FALSE. W tym ostatnim przypadku funkcja zwraca tylko wartość NULL w trybie wydania — w trybie debugowania zgłosi asercji.
Aby uzyskać więcej informacji na temat interfejsu IFileOpenDialog
, zobacz IFileOpenDialog.
Przykład
Ten przykład pobiera wewnętrzny obiekt COM. Aby uruchomić ten kod, należy skompilować go w systemie Windows Vista lub nowszym.
// 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
Pobiera wskaźnik do wewnętrznego obiektu COM dla danego CFileDialog
obiektu .
IFileSaveDialog* GetIFileSaveDialog();
Wartość zwracana
Wskaźnik do wewnętrznego obiektu COM dla .CFileDialog
Twoim obowiązkiem jest odpowiednie zwolnienie tego wskaźnika.
Uwagi
Tej funkcji należy używać tylko w systemie Windows Vista lub nowszym z obiektem z właściwością bVistaStyle ustawioną na wartość TRUE. Ta funkcja zwróci wartość NULL, jeśli CFileDialog
nie jest to okno dialogowe Zapisywanie lub jeśli dla właściwości bVistaStyle ustawiono wartość FALSE. W tym ostatnim przypadku funkcja zwraca tylko wartość NULL w trybie wydania — w trybie debugowania zgłosi asercji.
Aby uzyskać więcej informacji na temat interfejsu IFileSaveDialog
, zobacz IFileSaveDialog.
Przykład
Ten przykład pobiera wewnętrzny obiekt COM. Aby uruchomić ten przykład kodu, należy skompilować go w systemie Windows Vista lub nowszym.
// 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
Wywołaj tę funkcję, aby pobrać następną nazwę pliku z grupy wybranej w oknie dialogowym.
CString GetNextPathName(POSITION& pos) const;
Parametry
pozytyw
Odwołanie do wartości POSITION zwracanej przez poprzednie GetNextPathName
wywołanie funkcji lub GetStartPosition
. Wartość NULL, jeśli osiągnięto koniec listy.
Wartość zwracana
Pełna ścieżka pliku.
Uwagi
Ścieżka nazwy pliku zawiera tytuł pliku oraz całą ścieżkę katalogu. Na przykład GetNextPathName
zostanie zwrócona wartość "C:\FILES\TEXT. DAT" dla pliku C:\FILES\TEXT.DAT. Można użyć GetNextPathName
w pętli iteracji przesyłania dalej, jeśli ustanowisz pozycję początkową z wywołaniem metody GetStartPosition
.
Jeśli zaznaczenie składa się tylko z jednego pliku, zostanie zwrócona nazwa pliku.
CFileDialog::GetOFN
Pobiera skojarzona OPENFILENAME
struktura.
const OPENFILENAME& GetOFN() const;
OPENFILENAME& GetOFN();
Wartość zwracana
Struktura OPENFILENAME .
Uwagi
Użyj drugiej wersji tej funkcji, aby zainicjować wygląd okna dialogowego Otwieranie pliku lub Zapisywanie pliku jako po jego utworzeniu, ale przed wyświetleniem go z funkcją składową DoModal
. Możesz na przykład ustawić lpstrTitle
element członkowski m_ofn
na podpis, który ma zawierać okno dialogowe.
CFileDialog::GetPathName
Wywołaj tę funkcję, aby pobrać pełną ścieżkę pliku wprowadzonego w oknie dialogowym.
CString GetPathName() const;
Wartość zwracana
Pełna ścieżka pliku.
Uwagi
Ścieżka nazwy pliku zawiera tytuł pliku oraz całą ścieżkę katalogu. Na przykład GetPathName
zostanie zwrócona wartość "C:\FILES\TEXT. DAT" dla pliku C:\FILES\TEXT.DAT.
Jeśli m_ofn.Flags
ustawiono flagę OFN_ALLOWMULTISELECT, ten ciąg zawiera sekwencję ciągów z wartością null, a pierwszy ciąg jest ścieżką katalogu wybranej grupy plików, a następnie nazwy wszystkich plików wybranych przez użytkownika. Z tego powodu użyj funkcji składowych GetStartPosition i GetNextPathName , aby pobrać następną nazwę pliku na liście.
Przykład
Zobacz przykład CFileDialog::D oModal.
CFileDialog::GetReadOnlyPref
Wywołaj tę funkcję, aby określić, czy pole wyboru Tylko do odczytu zostało zaznaczone w standardowych oknach dialogowych Otwieranie pliku systemu Windows i Zapisywanie pliku jako.
BOOL GetReadOnlyPref() const;
Wartość zwracana
Bez zera, jeśli pole wyboru Tylko do odczytu w oknie dialogowym jest zaznaczone; w przeciwnym razie 0.
Uwagi
Możesz ukryć pole wyboru Tylko do odczytu, ustawiając styl OFN_HIDEREADONLY w konstruktorze CFileDialog
.
Uwaga
Obiekty stylu CFileDialog
systemu Windows Vista lub nowszego nie obsługują tej funkcji. Próba użycia tej funkcji w stylu systemu Windows Vista lub nowszym CFileDialog
spowoduje zgłoszenie CNotSupportedException.
CFileDialog::GetResult
Pobiera wybór, który użytkownik wykonał w oknie dialogowym.
IShellItem* GetResult() throw();
Wartość zwracana
Wskaźnik do elementu IShellItem, który reprezentuje wybór użytkownika.
Uwagi
CFileDialog::GetResults
Pobiera opcje użytkownika w oknie dialogowym, które umożliwia wybór wielu.
IShellItemArray* GetResults() throw();
Wartość zwracana
Wskaźnik do elementu IShellItemArray, za pomocą którego można uzyskać dostęp do elementów wybranych w oknie dialogowym.
Uwagi
CFileDialog::GetSelectedControlItem
Pobiera określony element z określonej kontrolki kontenera w oknie dialogowym.
HRESULT GetSelectedControlItem(
DWORD dwIDCtl,
DWORD& dwIDItem);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera.
dwIDItem
Identyfikator elementu wybranego przez użytkownika w kontrolce.
Uwagi
CFileDialog::GetStartPosition
Wywołaj tę funkcję składową, aby pobrać pozycję pierwszej nazwy ścieżki pliku na liście, jeśli m_ofn.Flags
ma ustawioną flagę OFN_ALLOWMULTISELECT.
POSITION GetStartPosition() const;
Wartość zwracana
Wartość POZYCJI, która może służyć do iteracji; Wartość NULL, jeśli lista jest pusta.
CFileDialog::HideControl
Wywołaj tę funkcję składową, aby ukryć określoną kontrolkę w stylu Eksploratora Otwórz lub Zapisz jako typowe okno dialogowe.
void HideControl(int nID);
Parametry
Nid
Identyfikator kontrolki do ukrycia.
Uwagi
Okno dialogowe musi zostać utworzone przy użyciu stylu OFN_EXPLORER; w przeciwnym razie funkcja zakończy się niepowodzeniem z asercją.
CFileDialog::IsPickFoldersMode
Określa, czy bieżące okno dialogowe jest w trybie selektora folderów.
BOOL IsPickFoldersMode() const;
Wartość zwracana
WARTOŚĆ TRUE, jeśli okno dialogowe jest w trybie selektora folderów; w przeciwnym razie FAŁSZ.
Uwagi
CFileDialog::m_ofn
m_ofn
jest strukturą typu OPENFILENAME
. Dane w tej strukturze reprezentują bieżący stan .CFileDialog
Uwagi
Użyj tej struktury, aby zainicjować wygląd okna dialogowego Otwieranie pliku lub Zapisywanie pliku jako po jego utworzeniu, ale przed wyświetleniem go za pomocą metody DoModal . Można na przykład ustawić element m_ofn
członkowski lpstrTitle na podpis, który ma mieć okno dialogowe.
W przypadku systemu Windows Vista lub nowszego stylu CFileDialog nie ma gwarancji, m_ofn
że zawsze pasuje do stanu okna dialogowego. Jest synchronizowany z okno dialogowe we wcześniejszych wersjach systemu Windows. Zobacz CFileDialog::ApplyOFNToShellDialog i CFileDialog::UpdateOFNFromShellDialog, aby uzyskać więcej informacji na temat synchronizowania m_ofn
struktury i CFileDialog
stanu w systemie Windows Vista lub nowszym.
Okna dialogowe plików stylów systemu Windows Vista lub nowszego nie obsługują niektórych elementów członkowskich i flag .CFileDialog
W rezultacie nie będą one miały żadnego wpływu.
Poniżej znajduje się lista członków, które nie są obsługiwane przez system Windows Vista lub nowszy:
lpstrCustomFilter
lpstrInitialDir
lCustData
lpfnHook
lpTemplateName
Następujące flagi nie są obsługiwane i dlatego nie mają żadnego wpływu podczas korzystania z systemu Windows Vista lub nowszego CFileDialog
stylu :
OFN_ENABLEHOOK
OFN_ENABLEINCLUDENOTIFY
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_EXTENSIONDIFFERENT
OFN_HIDEREADONLY
OFN_LONGNAMES — skutecznie zawsze w systemie Windows Vista lub nowszym
OFN_NOLONGNAMES - skutecznie wyłączać w systemie Windows Vista lub nowszym
OFN_NONETWORKBUTTON — skutecznie zawsze w systemie Windows Vista lub nowszym
OFN_READONLY
OFN_SHOWHELP
Aby uzyskać więcej informacji na temat tej struktury, zobacz strukturę OPENFILENAME w zestawie Windows SDK.
CFileDialog::MakeProminent
Umieszcza kontrolkę w oknie dialogowym, aby wyróżniała się w porównaniu z innymi kontrolkami.
HRESULT MakeProminent(DWORD dwIDCtl);
Parametry
dwIDCtl
Identyfikator kontrolki.
Uwagi
CFileDialog::OnButtonClicked
Wywoływana po kliknięciu przycisku.
virtual void OnButtonClicked(DWORD dwIDCtl);
Parametry
dwIDCtl
Identyfikator przycisku.
Uwagi
CFileDialog::OnCheckButtonToggled
Wywoływana, gdy pole wyboru jest zaznaczone lub niezaznaczone.
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
Parametry
dwIDCtl
Identyfikator pola wyboru.
bChecked
Zaznaczone lub niezaznaczone.
Uwagi
CFileDialog::OnControlActivating
Wywoływana po aktywowaniu kontrolki.
virtual void OnControlActivating(DWORD dwIDCtl);
Parametry
dwIDCtl
Identyfikator kontrolki.
Uwagi
CFileDialog::OnFileNameChange
Zastąpi tę metodę, jeśli chcesz obsłużyć komunikat WM_NOTIFY CDN_SELCHANGE.
virtual void OnFileNameChange();
Uwagi
System wysyła komunikat CDN_SELCHANGE, gdy użytkownik wybierze nowy plik lub folder na liście plików okna dialogowego Otwórz lub Zapisz jako . Zastąpi tę metodę, jeśli chcesz wykonać jakiekolwiek akcje w odpowiedzi na ten komunikat.
System wysyła ten komunikat tylko wtedy, gdy okno dialogowe zostało utworzone z włączoną flagą OFN_EXPLORER. Aby uzyskać więcej informacji na temat powiadomienia, zobacz CDN_SELCHANGE. Aby uzyskać informacje na temat flagi OFN_EXPLORER, zobacz strukturę OPENFILENAME i Okna dialogowe Otwórz i Zapisz jako.
CFileDialog::OnFileNameOK
Zastąpij tę funkcję tylko wtedy, gdy chcesz zapewnić niestandardową walidację nazw plików, które są wprowadzane w typowym oknie dialogowym pliku.
virtual BOOL OnFileNameOK();
Wartość zwracana
1, jeśli nazwa pliku nie jest prawidłową nazwą pliku; w przeciwnym razie 0.
Uwagi
Ta funkcja umożliwia odrzucenie nazwy pliku z dowolnej przyczyny specyficznej dla aplikacji. Zwykle nie trzeba używać tej funkcji, ponieważ platforma zapewnia domyślną walidację nazw plików i wyświetla okno komunikatu, jeśli wprowadzono nieprawidłową nazwę pliku.
Jeśli zostanie zwrócona wartość 1, okno dialogowe pozostanie wyświetlane dla użytkownika w celu wprowadzenia innej nazwy pliku. Procedura okna dialogowego odrzuca okno dialogowe, jeśli zwraca wartość 0. Inne wartości niezerowe są obecnie zarezerwowane i nie powinny być używane.
CFileDialog::OnFolderChange
Zastąpi tę funkcję do obsługi komunikatu WM_NOTIFYCDN_FOLDERCHANGE.
virtual void OnFolderChange();
Uwagi
Komunikat powiadomienia jest wysyłany po otwarciu nowego folderu w oknie dialogowym Otwórz lub Zapisz jako.
Powiadomienie jest wysyłane tylko wtedy, gdy okno dialogowe zostało utworzone przy użyciu stylu OFN_EXPLORER. Aby uzyskać więcej informacji na temat powiadomienia, zobacz CDN_FOLDERCHANGE. Aby uzyskać informacje o stylu OFN_EXPLORER, zobacz strukturę OPENFILENAME i Okna dialogowe Otwórz i Zapisz jako.
CFileDialog::OnInitDone
Zastąpi tę funkcję do obsługi komunikatu WM_NOTIFY CDN_INITDONE.
virtual void OnInitDone();
Uwagi
System wysyła ten komunikat powiadomienia po zakończeniu rozmieszczania kontrolek w oknie dialogowym Otwórz lub Zapisz jako , aby zapewnić miejsce na kontrolki okna dialogowego podrzędnego.
System wysyła to tylko wtedy, gdy okno dialogowe zostało utworzone przy użyciu stylu OFN_EXPLORER. Aby uzyskać więcej informacji na temat powiadomienia, zobacz CDN_INITDONE. Aby uzyskać informacje o stylu OFN_EXPLORER, zobacz strukturę OPENFILENAME i Okna dialogowe Otwórz i Zapisz jako.
Uwaga
Okna dialogowe plików stylów systemu Windows Vista lub nowszego nie obsługują tej funkcji. Próba użycia tej funkcji w oknie dialogowym pliku stylu systemu Windows Vista lub nowszego spowoduje zgłoszenie CNotSupportedException.
CFileDialog::OnItemselected
Wywoływana po wybraniu elementu kontenera.
virtual void OnItemSelected(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera.
dwIDItem
Identyfikator elementu.
Uwagi
CFileDialog::OnLBSelChangedNotify
Ta funkcja jest wywoływana za każdym razem, gdy bieżące zaznaczenie w polu listy zostanie zmienione.
virtual void OnLBSelChangedNotify(
UINT nIDBox,
UINT iCurSel,
UINT nCode);
Parametry
nIDBox
Identyfikator pola listy lub pola kombi, w którym wystąpił wybór.
iCurSel
Indeks bieżącego zaznaczenia.
nCode
Kod powiadomienia sterującego. Ten parametr musi mieć jedną z następujących wartości:
CD_LBSELCHANGE Określa element iCurSel jest wybranym elementem w polu listy z jednym zaznaczeniem.
CD_LBSELSUB Określa, że element iCurSel nie jest już zaznaczony w polu listy wielokrotnej wyboru.
CD_LBSELADD Określa, że element iCurSel jest zaznaczony w polu listy wielokrotnej wyboru.
CD_LBSELNOITEMS Określa, że nie ma zaznaczenia w polu listy wielokrotnej wyboru.
Uwagi
Zastąpi tę funkcję, aby zapewnić niestandardową obsługę zmian wyboru w polu listy. Na przykład za pomocą tej funkcji można wyświetlić prawa dostępu lub data ostatniej modyfikacji każdego pliku wybranego przez użytkownika.
CFileDialog::OnShareViolation
Zastąpij tę funkcję, aby zapewnić niestandardową obsługę naruszeń udziału.
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
Parametry
lpszPathName
Ścieżka pliku, na którym wystąpiło naruszenie udziału.
Wartość zwracana
Jedna z następujących wartości:
OFN_SHAREFALLTHROUGH Nazwa pliku jest zwracana z okna dialogowego.
OFN_SHARENOWARN Nie należy podejmować dalszych działań.
OFN_SHAREWARN Użytkownik otrzymuje standardowy komunikat ostrzegawczy dla tego błędu.
Uwagi
Zwykle nie trzeba używać tej funkcji, ponieważ platforma zapewnia domyślne sprawdzanie naruszeń udziału i wyświetla okno komunikatu, jeśli wystąpi naruszenie udziału.
Jeśli chcesz wyłączyć sprawdzanie naruszeń udziału, użyj operatora bitowego OR, aby połączyć flagę OFN_SHAREAWARE z m_ofn.Flags
.
CFileDialog::OnTypeChange
Zastąpi tę funkcję do obsługi komunikatu WM_NOTIFYCDN_TYPECHANGE.
virtual void OnTypeChange();
Uwagi
Komunikat powiadomienia jest wysyłany, gdy użytkownik wybierze nowy typ pliku z listy typów plików w oknie dialogowym Otwórz lub Zapisz jako.
Powiadomienie jest wysyłane tylko wtedy, gdy okno dialogowe zostało utworzone przy użyciu stylu OFN_EXPLORER. Aby uzyskać więcej informacji na temat powiadomienia, zobacz CDN_TYPECHANGE. Aby uzyskać informacje o stylu OFN_EXPLORER, zobacz strukturę OPENFILENAME i Okna dialogowe Otwórz i Zapisz jako.
CFileDialog::RemoveControlItem
Usuwa element z kontrolki kontenera w oknie dialogowym.
HRESULT RemoveControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera do usunięcia elementu.
dwIDItem
Identyfikator elementu.
Uwagi
CFileDialog::SetCheckButtonState
Ustawia bieżący stan przycisku wyboru (pole wyboru) w oknie dialogowym.
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
Parametry
dwIDCtl
Identyfikator pola wyboru.
bChecked
Stan pola wyboru. Wartość TRUE wskazuje zaznaczoną wartość; Fałsz wskazuje niezaznaczone.
Uwagi
CFileDialog::SetControlItemState
Ustawia bieżący stan elementu w kontrolce kontenera znalezionej w oknie dialogowym.
HRESULT SetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF dwState);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera.
dwIDItem
Identyfikator elementu.
dwState
Co najmniej jedna wartość z wyliczenia CDCONTROLSTATE wskazująca nowy stan kontrolki.
Uwagi
CFileDialog::SetControlItemText
Ustawia tekst elementu kontrolki. Na przykład tekst, który towarzyszy przyciskowi radiowemu lub elementowi w menu.
HRESULT SetControlItemText(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera.
dwIDItem
Identyfikator elementu.
strLabel
Tekst elementu.
Uwagi
CFileDialog::SetControlLabel
Ustawia tekst skojarzony z kontrolką, taką jak tekst przycisku lub etykieta pola edycji.
HRESULT SetControlLabel(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
Identyfikator kontrolki.
strLabel
Nazwa kontrolki.
Uwagi
CFileDialog::SetControlState
Ustawia bieżącą widoczność i włączone stany danej kontrolki.
HRESULT SetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF dwState);
Parametry
dwIDCtl
Identyfikator kontrolki.
dwState
Co najmniej jedna wartość z wyliczenia CDCONTROLSTATE wskazująca bieżący stan kontrolki.
Uwagi
CFileDialog::SetControlText
Wywołaj tę metodę, aby ustawić tekst dla określonej kontrolki w stylu Eksploratora Otwórz lub Zapisz jako okno dialogowe.
void SetControlText(
int nID,
LPCSTR lpsz);
void SetControlText(
int nID,
const wchar_t *lpsz);
Parametry
Nid
[in] Identyfikator kontrolki, dla której ma być ustawiony tekst.
lpsz
[in] Wskaźnik do ciągu zawierającego tekst ustawiony dla kontrolki.
Uwagi
Obie wersje tej funkcji są prawidłowe dla aplikacji korzystających z formatu Unicode. Jednak tylko wersja z typem LPCSTR jest prawidłowa dla aplikacji korzystających z ANSI.
Aby użyć tej metody, należy utworzyć okno dialogowe z stylem OFN_EXPLORER. W przeciwnym razie funkcja zakończy się niepowodzeniem z asercją.
CFileDialog::SetDefExt
Wywołaj tę funkcję, aby ustawić domyślne rozszerzenie nazwy pliku dla okna dialogowego Otwórz lub Zapisz jako typowe.
void SetDefExt(LPCSTR lpsz);
Parametry
lpsz
Wskaźnik do ciągu zawierającego rozszerzenie domyślne do użycia dla obiektu okna dialogowego. Ten ciąg nie może zawierać kropki (.).
Uwagi
Okno dialogowe musi zostać utworzone przy użyciu stylu OFN_EXPLORER; w przeciwnym razie funkcja zakończy się niepowodzeniem z asercją.
CFileDialog::SetEditBoxText
Ustawia bieżący tekst w kontrolce pola edycji.
HRESULT SetEditBoxText(
DWORD dwIDCtl,
const CString& strText);
Parametry
dwIDCtl
Identyfikator pola edycji.
strText
Wartość tekstowa.
Uwagi
CFileDialog::SetProperties
Udostępnia magazyn właściwości, który definiuje wartości domyślne, które mają być używane do zapisywania elementu.
BOOL SetProperties(LPCWSTR lpszPropList);
Parametry
lpszPropList
Lista wstępnie zdefiniowanych właściwości rozdzielonych znakami ";". Aby uzyskać listę flag, zobacz sekcję Flags (Flagi ) w pliku OPENFILENAME.
Uwagi
CFileDialog::SetSelectedControlItem
Ustawia wybrany stan określonego elementu w grupie przycisków opcji lub w polu kombi znajdującym się w oknie dialogowym.
HRESULT SetSelectedControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametry
dwIDCtl
Identyfikator kontrolki kontenera.
dwIDItem
Identyfikator elementu wybranego przez użytkownika w kontrolce.
Uwagi
CFileDialog::SetTemplate
Ustawia szablon okna dialogowego dla obiektu CFileDialog .
void SetTemplate(
UINT nWin3ID,
UINT nWin4ID);
void SetTemplate(
LPCTSTR lpWin3ID,
LPCTSTR lpWin4ID);
Parametry
nWin3ID
[in] Zawiera identyfikator zasobu szablonu dla obiektu innego niż Eksplorator CFileDialog
. Ten szablon jest używany tylko w systemie Windows NT 3.51 lub gdy styl OFN_EXPLORER nie jest obecny.
nWin4ID
[in] Zawiera identyfikator zasobu szablonu dla obiektu Eksploratora CFileDialog
. Ten szablon jest używany tylko w systemie Windows NT 4.0 i nowszych wersjach, Windows 95 i nowszych lub w przypadku wystąpienia stylu OFN_EXPLORER.
lpWin3ID
[in] Zawiera nazwę zasobu szablonu dla obiektu innego niż Eksplorator CFileDialog
. Ten szablon jest używany tylko w systemie Windows NT 3.51 lub gdy styl OFN_EXPLORER nie jest obecny.
lpWin4ID
[in] Zawiera nazwę zasobu szablonu obiektu Explorer CFileDialog
. Ten szablon jest używany tylko w systemie Windows NT 4.0 i nowszych wersjach, Windows 95 i nowszych lub w przypadku wystąpienia stylu OFN_EXPLORER.
Uwagi
System będzie używać tylko jednego z określonych szablonów. System określa, który szablon ma być używany na podstawie obecności stylu OFN_EXPLORER i systemu operacyjnego, na którym działa aplikacja. Określając zarówno szablon w stylu eksploratora, jak i eksploratora, można łatwo obsługiwać system Windows NT 3.51, Windows NT 4.0 i nowsze wersje oraz Windows 95 i nowsze wersje.
Uwaga
Okna dialogowe pliku stylu systemu Windows Vista lub nowszego nie obsługują tej funkcji. Próba użycia tej funkcji w oknie dialogowym pliku stylu systemu Windows Vista lub nowszego spowoduje zgłoszenie CNotSupportedException. Alternatywą jest użycie dostosowanego okna dialogowego. Aby uzyskać więcej informacji na temat używania niestandardowego CFileDialog
elementu , zobacz IFileDialogCustomize.
CFileDialog::StartVisualGroup
Deklaruje grupę wizualizacji w oknie dialogowym. Kolejne wywołania dowolnej metody "add" dodają te elementy do tej grupy.
HRESULT StartVisualGroup(
DWORD dwIDCtl,
const CString& strLabel);
Parametry
dwIDCtl
Identyfikator grupy wizualizacji.
strLabel
Nazwa grupy.
Uwagi
CFileDialog::UpdateOFNFromShellDialog
m_ofn
Aktualizuje strukturę danych CFileDialog na podstawie bieżącego stanu obiektu wewnętrznego.
void UpdateOFNFromShellDialog();
Uwagi
W wersjach systemu Windows przed Windows Vista struktura danych OPENFILENAME elementu członkowskiego była stale synchronizowana ze stanem CFileDialog
. Wszelkie zmiany zmiennej składowej m_ofn bezpośrednio miały wpływ na stan okna dialogowego. Ponadto wszelkie zmiany stanu okna dialogowego natychmiast zaktualizowały zmienną składową m_ofn.
W systemie Windows Vista lub nowszym m_ofn
struktura danych nie jest automatycznie aktualizowana. Aby zagwarantować dokładność danych w zmiennej m_ofn
składowej, należy wywołać UpdateOFNFromShellDialog
funkcję przed uzyskaniem dostępu do danych. System Windows automatycznie wywołuje tę funkcję podczas przetwarzania elementu IFileDialog::OnFileOK.
Aby uzyskać więcej informacji na temat używania CFileDialog
klasy w systemie Windows Vista lub nowszym, zobacz Klasa CFileDialog.
Przykład
Ten przykład aktualizuje element CFileDialog
przed jego wyświetleniem. Przed zaktualizowaniem zmiennej składowej m_ofn
musimy zsynchronizować ją z bieżącym stanem okna dialogowego.
// 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();