Aracılığıyla paylaş


CFileDialog::CFileDialog

Standart bir Windows dosya iletişim kutusu oluşturmak için bu işlevini çağırın.

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
);

Parametreler

  • [in] bOpenFileDialog
    Ne tür bir iletişim kutusu oluşturmak için belirten parametre.Ayarlamak TRUE oluşturmak için bir Dosya Aç iletişim kutusu.Ayarlamak FALSE oluşturmak için bir Aynı iletişim kutusu.

  • [in] lpszDefExt
    Varsayılan dosya adı uzantısı.Öğesi belirtilen kullanıcı dosya adı kutusunda bilinen uzantı (bir kullanıcının bilgisayarında bir ilişkilendirme vardır) içermiyorsa, lpszDefExt dosya adına otomatik olarak eklenir.Bu parametre ise NULL, hiçbir uzantı eklenir.

  • [in] lpszFileName
    İlk dosya adı dosya adı kutusunda görünür.NULL, İlk dosya adı görüntülenir.

  • [in] dwFlags
    İletişim kutusunu özelleştirmek için kullanabileceğiniz bir veya daha fazla bayrak birleşimi.Bu bayraklar açıklaması için bkz: AÇIKDOSYAADI , yapı Windows SDK.Değiştirirseniz, m_ofn.Flags üye yapısı, varsayılan davranışı korumanız için değişikliklerinizi bir bit seviyesinde or işlecini kullanın.

  • [in] lpszFilter
    Süzgeçleri belirleyen dize çiftleri bir dizi dosyaya uygulayabilirsiniz.Dosya filtrelerini belirtirseniz, filtre ölçütüne uyan dosyalar dosya listesinde görüntülenir.Dosya filtreleri ile çalışma hakkında daha fazla bilgi için açıklamalar bölümüne bakın.

  • [in] pParentWnd
    Dosya iletişim kutusunun üst veya sahibi penceresi için bir işaretçi.

  • [in] dwSize
    Boyutunu OPENFILENAME yapısı.Bu değer, işletim sistemi sürümüne göre değişir.mfc iletişim kutusu oluşturmak için uygun türünü belirlemek için bu parametre kullanılır (örneğin, yeni Windows 2000 iletişim kutuları NT4 iletişim kutuları yerine).Varsayılan boyutu, mfc kodu kullanmak için doğru iletişim kutusunun boyutu program üzerinde çalıştığı işletim sistemi sürümüne göre belirleyen 0 anlamına gelir.

  • [in] bVistaStyle
    Not Bu parametre Visual Studio 2008'de kullanılabilir ve daha sonra ise yalnızca çalıştırıyorsanız kullanılacak yeni stil iletişim neden Windows Vista veya sonraki bir sürümü.

    Dosya iletişim kutusu stilini belirtir parametresi.Ayarlamak TRUE yeni Vista stili dosya iletişim kutularını kullanmak için.Aksi halde, iletişim kutuları, eski stil kullanılacaktır.Daha fazla bilgi için açıklamalar bölümüne Vista altında çalışan bkz.

Notlar

Ya da bir Dosya Aç veya Aynı iletişim kutusu oluşturulur, değerine bağlı olarak bOpenFileDialog.

Varsayılan uzantısıyla belirtme lpszDefExt , nadiren hangi uzantıların kullanıcının bilgisayarında dosya ilişkileri olan önceden kestirilebilir olduğundan, beklediğiniz davranış üretmeyebilir.Bir varsayılan uzantısı ekleyerek üzerinde daha fazla denetim gerekiyorsa, kendi sınıfından türetebilirsiniz CFileDialogve geçersiz kılma CFileDialog::OnFileNameOK kendi uzantı işleme gerçekleştirmek için yöntem.

Birden çok dosya seçmesini sağlamak için OFN_ALLOWMULTISELECT çağırmadan önce bayrak DoModal.Döndürülen birden çok dosya adları listesini depolamak için kendi dosya adı arabelleği sağlamanız gerekir.Bunu değiştirerek m_ofn.lpstrFile , oluşturduktan sonra arabellek için bir işaretçi ile size, tahsis CFileDialog, ama çağırmadan önce DoModal.Ayrıca, ayarlamanız gerekir m_ofn.nMaxFile tarafından işaret arabellek karakter sayısı ile m_ofn.lpstrFile.Dosyalar için seçilecek en fazla sayısını ayarlarsanız, n, gerekli arabellek boyutu n*(_MAX_PATH + 1) + 1.Örne?in:

#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++;
  }
}

Kullanıcı fare veya klavyeyi kullanarak bir Explorer Stili iletişim kutusunu yeniden boyutlandırmak etkinleştirmek için OFN_ENABLESIZING bayrağı.Bu bayrak ayarlandığında, yalnızca bir kanca işlemi veya özel bir şablon sağlamak gerek yoktur.Bayrağı yalnızca bir Gezgini Stili iletişim kutusu ile çalışır; eski stil iletişim kutularını yeniden boyutlandırılamaz.

lpszFilter Parametresi dosya adı dosya listesinde görüntülenmek üzere bir dosya olması gerekir türünü belirlemek için kullanılır.İlk dize dize çift filtre açıklar; İkinci dize kullanmak için dosya adı uzantısını belirtir.Birden çok uzantı ayırıcı olarak noktalı virgül (';' karakterini) kullanılarak belirtilebilir.İki dizeyi biter ' |' karakteri, ardından bir NULL karakter.Ayrıca bir CString Bu parametre için nesne.

Örneğin, Microsoft Excel başka şeylerin yanı sıra, uzantıları .xlc (grafik) ya da (çalışma sayfası), .xls dosyaları açmak kullanıcılar sağlar.Excel için filtre olarak yazılabilir:

static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
   _T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
   _T("*.xlc; *.xls|All Files (*.*)|*.*||");

Ancak, bu dize için doğrudan kullanmayı planlıyorsanız, update OPENFILENAME yapısı, dizelerinizi '\0' dikey çubuklar yerine boş karakter ile sınırlandırın ('| ').

bVistaStyle Parametresi yalnızca altında çalışırken uygun Windows Vista.Windows'un önceki sürümlerinde, bu parametre dikkate alınmaz.bVistaStyle Ayarlamak TRUE, bir program ile derlerken Visual Studio 2008 veya daha yeni Vista stili Dosya iletişim kutusu kullanılacak.Aksi durumda, önceki mfc stil Dosya iletişim kutusu kullanılacak.Daha fazla bilgi için bkz. CFileDialog sınıfı.

İletişim şablonları temel alan iletişim kutuları desteklenmiyorbVistaStyle

Örnek

Örnek için bkz: CFileDialog::DoModal.

Gereksinimler

Header:afxdlgs.h

Ayrıca bkz.

Başvuru

CFileDialog sınıfı

Hiyerarşi grafik

CFileDialog::DoModal

GetOpenFileName

GetSaveFileName

OPENFILENAME