Klasa CFileDialog

Hermetyzuje typowe okno dialogowe używane do operacji otwierania pliku lub zapisywania plików.

Składnia

class CFileDialog : public CCommonDialog

Członkowie

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 Aktualizacje stan elementu CFileDialog , aby był zgodny z parametrami i flagami przechowywanymi w zmiennej składowejm_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 Aktualizacje dane przechowywane w zmiennej m_ofn składowej w celu dopasowania do bieżącego stanu 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 DoModalpolecenia 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.lpstrFilewartość . Jeśli ustawisz maksymalną liczbę plików do wybrania na nwartość , 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 CFileDialogklasy , 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 CFileDialogklasy , 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 CFileDialogstylu 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

Cobject

Ccmdtarget

Cwnd

Cdialog

CCommonDialog

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

Aktualizacje bieżącego stanuCFileDialog 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 CFileDialogklasy 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.lpstrFilewartość . Jeśli ustawisz maksymalną liczbę plików do wybrania na n, wymagany rozmiar buforu to n*(_MAX_PATH + 1) + 1. 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 DoModalmetody , 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 DoModalmetody , 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 wprowadzona nazwa pliku to 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 CFileDialogobiektu .

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 otwarteokno 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 CFileDialogobiektu .

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

Poz
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żna na przykład ustawić lpstrTitle element członkowski m_ofn na podpis, które ma mieć 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 członkowski m_ofn lpstrTitle na podpis, które 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 CFileDialogstylu :

  • 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 CFileDialogelementu , 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 Aktualizacje 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();

Zobacz też

Klasa CCommonDialog
Wykres hierarchii