Kelas CFileDialog
Merangkum kotak dialog umum yang digunakan untuk operasi buka file atau penyimpanan file.
Sintaks
class CFileDialog : public CCommonDialog
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CFileDialog::CFileDialog | Membuat CFileDialog objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CFileDialog::AddCheckButton | Menambahkan tombol centang ke dialog. |
CFileDialog::AddComboBox | Menambahkan kotak kombo ke dialog. |
CFileDialog::AddControlItem | Menambahkan item ke kontrol kontainer dalam dialog. |
CFileDialog::AddEditBox | Menambahkan kotak edit ke dialog. |
CFileDialog::AddMenu | Menambahkan menu ke dialog. |
CFileDialog::AddPlace | Kelebihan beban. Menambahkan folder ke daftar tempat yang tersedia bagi pengguna untuk membuka atau menyimpan item. |
CFileDialog::AddPushButton | Menambahkan tombol ke dialog. |
CFileDialog::AddRadioButtonList | Menambahkan grup tombol opsi (juga dikenal sebagai tombol radio) ke dialog. |
CFileDialog::AddSeparator | Menambahkan pemisah ke dialog. |
CFileDialog::AddText | Menambahkan isi teks ke dialog. |
CFileDialog::ApplyOFNToShellDialog | Memperbarui status CFileDialog agar sesuai dengan parameter dan bendera yang disimpan dalam m_ofn variabel anggota. |
CFileDialog::D oModal | Menampilkan kotak dialog dan memungkinkan pengguna membuat pilihan. |
CFileDialog::EnableOpenDropDown | Mengaktifkan daftar drop-down pada tombol Buka atau Simpan dalam dialog. |
CFileDialog::EndVisualGroup | Menghentikan penambahan elemen ke grup visual dalam dialog. |
CFileDialog::GetCheckButtonState | Mendapatkan status tombol centang saat ini (kotak centang) dalam dialog. |
CFileDialog::GetControlItemState | Mendapatkan status item saat ini dalam kontrol kontainer yang ditemukan dalam dialog. |
CFileDialog::GetControlState | Mendapatkan visibilitas saat ini dan mengaktifkan status kontrol tertentu. |
CFileDialog::GetEditBoxText | Mendapatkan teks saat ini dalam kontrol kotak edit. |
CFileDialog::GetFileExt | Mengembalikan ekstensi file yang dipilih. |
CFileDialog::GetFileName | Mengembalikan nama file dari file yang dipilih. |
CFileDialog::GetFileTitle | Mengembalikan judul file yang dipilih. |
CFileDialog::GetFolderPath | Mengambil jalur folder atau direktori yang saat ini terbuka untuk kotak dialog Buka atau Simpan Sebagai umum gaya Penjelajah. |
CFileDialog::GetIFileDialogCustomize | Mengambil objek COM internal untuk objek yang disesuaikan CFileDialog . |
CFileDialog::GetiFileOpenDialog | Mengambil objek COM internal untuk yang CFileDialog digunakan sebagai kotak dialog Buka file. |
CFileDialog::GetIFileSaveDialog | Mengambil objek COM internal untuk yang CFileDialog digunakan sebagai kotak dialog Simpan file. |
CFileDialog::GetNextPathName | Mengembalikan jalur lengkap dari file terpilih berikutnya. |
CFileDialog::GetOFN | Mengambil OPENFILENAME struktur CFileDialog objek. |
CFileDialog::GetPathName | Mengembalikan jalur lengkap file yang dipilih. |
CFileDialog::GetReadOnlyPref | Mengembalikan status baca-saja dari file yang dipilih. |
CFileDialog::GetResult | Mendapatkan pilihan yang dibuat pengguna dalam dialog. |
CFileDialog::GetResults | Mendapatkan pilihan pengguna dalam dialog yang memungkinkan beberapa pilihan. |
CFileDialog::GetSelectedControlItem | Mendapatkan item tertentu dari kontrol kontainer tertentu dalam dialog. |
CFileDialog::GetStartPosition | Mengembalikan posisi elemen pertama dari daftar nama file. |
CFileDialog::HideControl | Menyembunyikan kontrol yang ditentukan dalam kotak dialog Buka atau Simpan Sebagai umum gaya Penjelajah. |
CFileDialog::IsPickFoldersMode | Menentukan apakah dialog saat ini dalam mode pemilih folder. |
CFileDialog::MakeProminent | Menempatkan kontrol dalam dialog sehingga menonjol dibandingkan dengan kontrol lain yang ditambahkan. |
CFileDialog::RemoveControlItem | Menghapus item dari kontrol kontainer dalam dialog. |
CFileDialog::SetCheckButtonState | Mengatur status tombol centang saat ini (kotak centang) dalam dialog. |
CFileDialog::SetControlItemState | Mengatur status item saat ini dalam kontrol kontainer yang ditemukan dalam dialog. |
CFileDialog::SetControlItemText | Mengatur teks item kontrol. Misalnya, teks yang menyertai tombol radio atau item di menu. |
CFileDialog::SetControlLabel | Mengatur teks yang terkait dengan kontrol, seperti teks tombol atau label kotak edit. |
CFileDialog::SetControlState | Mengatur visibilitas saat ini dan mengaktifkan status kontrol tertentu. |
CFileDialog::SetControlText | Mengatur teks untuk kontrol yang ditentukan dalam kotak dialog Buka atau Simpan Sebagai umum gaya Penjelajah. |
CFileDialog::SetDefExt | Mengatur ekstensi nama file default untuk kotak dialog Buka atau Simpan Sebagai umum gaya Explorer. |
CFileDialog::SetEditBoxText | Mengatur teks saat ini dalam kontrol kotak edit. |
CFileDialog::SetProperties | Menyediakan penyimpanan properti yang menentukan nilai default yang akan digunakan untuk item yang disimpan. |
CFileDialog::SetSelectedControlItem | Mengatur status terpilih item tertentu dalam grup tombol opsi atau kotak kombo yang ditemukan dalam dialog. |
CFileDialog::SetTemplate | Mengatur templat kotak dialog untuk objek tersebut CFileDialog . |
CFileDialog::StartVisualGroup | Mendeklarasikan grup visual dalam dialog. Panggilan berikutnya ke metode "tambahkan" menambahkan elemen tersebut ke grup ini. |
CFileDialog::UpdateOFNFromShellDialog | Memperbarui data yang disimpan dalam m_ofn variabel anggota agar sesuai dengan status kotak dialog file saat ini. |
Metode yang Dilindungi
Nama | Deskripsi |
---|---|
CFileDialog::OnButtonClicked | Dipanggil saat tombol diklik. |
CFileDialog::OnCheckButtonToggled | Dipanggil saat kotak centang dicentang/tidak dicentang. |
CFileDialog::OnControlActivating | Dipanggil ketika kontrol sedang aktif. |
CFileDialog::OnFileNameChange | Menangani pesan WM_NOTIFY CDN_SELCHANGE. |
CFileDialog::OnFileNameOK | Memvalidasi nama file yang dimasukkan dalam kotak dialog. |
CFileDialog::OnFolderChange | Menangani pesan WM_NOTIFY CDN_FOLDERCHANGE. |
CFileDialog::OnInitDone | Menangani pesan WM_NOTIFY CDN_INITDONE. |
CFileDialog::OnItemSelected | Dipanggil saat item kontainer sedang dipilih. |
CFileDialog::OnLBSelChangedNotify | Memungkinkan Anda melakukan tindakan kustom saat pemilihan file berubah. |
CFileDialog::OnShareViolation | Menangani pelanggaran berbagi. |
CFileDialog::OnTypeChange | Menangani pesan WM_NOTIFY CDN_TYPECHANGE. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CFileDialog::m_ofn | Struktur Windows OPENFILENAME . Menyediakan akses ke parameter kotak dialog file dasar. |
Keterangan
Kotak dialog file umum memungkinkan Anda menerapkan kotak dialog pemilihan file, misalnya, Buka File dan Simpan Sebagai, dengan cara yang konsisten dengan standar Windows.
Anda dapat menggunakan CFileDialog
apa adanya dengan konstruktor yang disediakan, atau Anda dapat memperoleh kelas kotak dialog Anda sendiri dari CFileDialog
dan menulis konstruktor agar sesuai dengan kebutuhan Anda. Dalam kedua kasus, kotak dialog ini akan berperilaku seperti kotak dialog MFC standar karena berasal dari Kelas CCommonDialog. CFileDialog
bergantung pada file COMMDLG.DLL yang disertakan dalam Windows.
Tampilan dan fungsionalitas CFileDialog
dengan Windows Vista atau yang lebih baru berbeda dari versi Windows sebelumnya. Default CFileDialog
secara otomatis menggunakan gaya Windows Vista baru atau yang lebih baru tanpa perubahan kode jika program dikompilasi dan dijalankan di bawah Windows Vista atau yang lebih baru. Gunakan parameter bVistaStyle di konstruktor untuk mengambil alih pembaruan otomatis ini secara manual. Pengecualian untuk kotak dialog pembaruan otomatis dikustomisasi. Mereka tidak akan dikonversi ke gaya baru. Untuk informasi selengkapnya tentang konstruktor, lihat CFileDialog::CFileDialog.
Catatan
Sistem ID kontrol berbeda di Windows Vista atau yang lebih baru dari versi Windows yang lebih lama saat Anda menggunakan CFileDialog
. Anda harus memperbarui semua referensi ke CFileDialog
kontrol dalam kode sebelum Anda dapat memindahkan proyek Anda dari versi Windows yang lebih lama.
Beberapa CFileDialog
metode tidak didukung di bawah Windows Vista atau yang lebih baru. Periksa topik metode individual untuk informasi tentang apakah metode didukung. Selain itu, fungsi yang diwariskan berikut ini tidak didukung di bawah Windows Vista atau yang lebih baru:
Pesan windows untuk CFileDialog
kelas bervariasi berdasarkan sistem operasi apa yang Anda gunakan. Misalnya, Windows XP tidak mendukung CDialog::OnCancel dan CDialog::OnOK untuk CFileDialog
kelas . Namun, Windows Vista dan sistem operasi yang lebih baru mendukungnya. Untuk informasi selengkapnya tentang berbagai pesan yang dihasilkan dan urutan penerimaannya, lihat Sampel CFileDialog: Urutan Peristiwa Pengelogan.
Untuk menggunakan CFileDialog
objek, pertama-tama buat objek dengan menggunakan CFileDialog
konstruktor. Setelah kotak dialog dibuat, Anda dapat mengatur atau mengubah nilai apa pun di struktur CFileDialog::m_ofn untuk menginisialisasi nilai atau status kontrol kotak dialog. Strukturnya m_ofn
berjenis OPENFILENAME
. Untuk informasi selengkapnya, lihat struktur OPENFILENAME di Windows SDK.
Setelah Anda menginisialisasi kontrol kotak dialog, panggil metode CFileDialog::D oModal untuk menampilkan kotak dialog sehingga pengguna dapat mengetik jalur dan nama file. DoModal
mengembalikan apakah pengguna mengklik OK (IDOK) atau tombol Batal (IDCANCEL). Jika DoModal
mengembalikan IDOK, Anda dapat menggunakan salah CFileDialog
satu fungsi anggota publik untuk mengambil informasi yang dimasukkan oleh pengguna.
Catatan
Di bawah Windows Vista atau yang lebih baru, beberapa panggilan ke IFileDialog::SetFileTypes menyebabkan kesalahan. Panggilan kedua untuk SetFileTypes
instans apa pun akan CFileDialog
mengembalikan E_UNEXPECTED di Windows Vista atau yang lebih baru. Beberapa CFileDialog
fungsi metode memanggil SetFileTypes
. Misalnya, dua panggilan ke CFileDialog::DoModal
untuk instans yang CFileDialog
sama menghasilkan ASSERT.
CFileDialog
termasuk beberapa anggota yang dilindungi yang memungkinkan Anda melakukan penanganan kustom pelanggaran berbagi, validasi nama file, dan pemberitahuan perubahan kotak daftar. Anggota yang dilindungi ini adalah fungsi panggilan balik yang tidak perlu digunakan sebagian besar aplikasi karena penanganan default dilakukan secara otomatis. Entri peta pesan untuk fungsi-fungsi ini tidak diperlukan karena merupakan fungsi virtual standar.
Anda dapat menggunakan fungsi Windows CommDlgExtendedError untuk menentukan apakah terjadi kesalahan selama inisialisasi kotak dialog dan untuk mempelajari selengkapnya tentang kesalahan tersebut.
Penghancuran CFileDialog
objek ditangani secara otomatis. Anda tidak perlu memanggil CDialog::EndDialog.
Untuk mengizinkan pengguna memilih beberapa file, atur bendera OFN_ALLOWMULTISELECT sebelum Anda memanggil DoModal
. Anda harus menyediakan buffer nama file Anda sendiri untuk mengakomodasi daftar beberapa nama file yang dikembalikan. Lakukan ini dengan mengganti m_ofn.lpstrFile
dengan pointer ke buffer yang telah Anda alokasikan, setelah Anda membuat CFileDialog
, tetapi sebelum Anda memanggil DoModal
.
Selain itu, Anda harus mengatur m_ofn.nMaxFile
dengan menggunakan jumlah karakter dalam buffer yang ditujukkan oleh m_ofn.lpstrFile
. Jika Anda mengatur jumlah maksimum file yang akan dipilih ke n
, ukuran buffer yang diperlukan adalah n * (_MAX_PATH + 1) + 1
. Item pertama yang dikembalikan dalam buffer adalah jalur ke folder tempat file dipilih. Untuk kotak dialog Windows Vista atau gaya yang lebih baru, string nama direktori dan file dihentikan null, dengan karakter null tambahan setelah nama file terakhir. Format ini memungkinkan kotak dialog Gaya penjelajah untuk mengembalikan nama file panjang yang menyertakan spasi. Untuk kotak dialog gaya lama, string nama direktori dan file dipisahkan oleh spasi dan fungsi menggunakan nama file pendek untuk nama file dengan spasi.
Contoh berikut menunjukkan cara menggunakan buffer untuk mengambil dan mencantumkan beberapa nama file.
#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++;
}
}
Untuk mengubah ukuran buffer sebagai respons terhadap pengguna yang memilih beberapa nama file, Anda harus mendapatkan kelas baru dari CFileDialog
dan mengambil alih metode CFileDialog::OnFileNameChange .
Jika Anda mendapatkan kelas baru dari CFileDialog
, Anda dapat menggunakan peta pesan untuk menangani pesan apa pun. Untuk memperluas penanganan pesan default, dapatkan kelas dari CFileDialog
, tambahkan peta pesan ke kelas baru, dan berikan fungsi anggota untuk pesan baru. Anda tidak perlu menyediakan fungsi kait untuk mengkustomisasi kotak dialog.
Untuk mengkustomisasi kotak dialog, dapatkan kelas dari CFileDialog
, sediakan templat kotak dialog kustom, dan tambahkan peta pesan untuk memproses pesan pemberitahuan dari kontrol yang diperluas. Teruskan pesan yang tidak diolah ke kelas dasar. Anda tidak perlu menyesuaikan fungsi kait.
Ketika Anda menggunakan gaya CFileDialog
Windows Vista atau yang lebih baru , Anda tidak dapat menggunakan peta pesan dan templat kotak dialog. Sebagai gantinya, Anda harus menggunakan antarmuka COM untuk fungsionalitas serupa.
Untuk informasi selengkapnya tentang cara menggunakan CFileDialog
, lihat Kelas Dialog Umum.
Hierarki Warisan
CFileDialog
Persyaratan
Header: afxdlgs.h
CFileDialog::AddCheckButton
Menambahkan tombol centang ke dialog.
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
Parameter
dwIDCtl
ID tombol centang untuk ditambahkan.
strLabel
Nama tombol centang.
bChecked
Boolean yang menunjukkan status tombol centang saat ini. TRUE jika diperiksa; FALSE jika tidak
Keterangan
CFileDialog::AddComboBox
Menambahkan kotak kombo ke dialog.
HRESULT AddComboBox(DWORD dwIDCtl);
Parameter
dwIDCtl
ID kotak kombo yang akan ditambahkan.
Keterangan
CFileDialog::AddControlItem
Menambahkan item ke kontrol kontainer dalam dialog.
HRESULT AddControlItem(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parameter
dwIDCtl
ID kontrol kontainer untuk menambahkan item.
dwIDItem
ID item.
strLabel
Teks item.
Keterangan
CFileDialog::AddEditBox
Menambahkan kotak edit ke dialog.
HRESULT AddEditBox(
DWORD dwIDCtl,
const CString& strText);
Parameter
dwIDCtl
ID kotak edit yang akan ditambahkan.
strText
Nama kotak edit.
Keterangan
CFileDialog::AddMenu
Menambahkan menu ke dialog.
HRESULT AddMenu(
DWORD dwIDCtl,
const CString& strLabel);
Parameter
dwIDCtl
ID menu yang akan ditambahkan.
strLabel
Nama menu.
Keterangan
CFileDialog::AddPlace
Menambahkan folder ke daftar tempat yang tersedia bagi pengguna untuk membuka atau menyimpan item.
void AddPlace(
LPCWSTR lpszFolder,
FDAP fdap = FDAP_TOP) throw();
void AddPlace(
IShellItem* psi,
FDAP fdap = FDAP_TOP) throw();
Parameter
lpszFolder
Jalur ke folder yang akan disediakan untuk pengguna. Ini hanya bisa menjadi folder.
fdap
Menentukan tempat folder ditempatkan dalam daftar.
Psi
Penunjuk ke IShellItem yang mewakili folder yang akan disediakan untuk pengguna. Ini hanya bisa menjadi folder.
Keterangan
CFileDialog::AddPushButton
Menambahkan tombol ke dialog.
HRESULT AddPushButton(
DWORD dwIDCtl,
const CString& strLabel);
Parameter
dwIDCtl
ID tombol untuk ditambahkan.
strLabel
Nama tombol.
Keterangan
CFileDialog::AddRadioButtonList
Menambahkan grup tombol opsi (juga dikenal sebagai tombol radio) ke dialog.
HRESULT AddRadioButtonList(DWORD dwIDCtl);
Parameter
dwIDCtl
ID grup tombol opsi untuk ditambahkan.
Keterangan
CFileDialog::AddSeparator
Menambahkan pemisah ke dialog.
HRESULT AddSeparator(DWORD dwIDCtl);
Parameter
dwIDCtl
ID pemisah ditambahkan.
Keterangan
CFileDialog::AddText
Menambahkan teks ke dialog.
HRESULT AddText(
DWORD dwIDCtl,
const CString& strText);
Parameter
dwIDCtl
ID teks yang akan ditambahkan.
strText
Nama teks.
Keterangan
CFileDialog::ApplyOFNToShellDialog
Memperbarui status CFileDialog saat ini berdasarkan nilai yang disimpan dalam m_ofn
struktur data.
void ApplyOFNToShellDialog();
Keterangan
Dalam versi Windows sebelum Windows Vista, struktur data OPENFILENAME anggota terus disinkronkan dengan status CFileDialog
. Setiap perubahan pada variabel anggota m_ofn segera tercermin dalam status kotak dialog. Selain itu, setiap perubahan pada status kotak dialog segera memperbarui m_ofn
variabel anggota.
Di Windows Vista atau yang lebih baru, nilai dalam m_ofn
variabel anggota dan status CFileDialog
tidak dijamin disinkronkan. Fungsi ini memaksa status yang CFileDialog
akan diperbarui agar sesuai dengan m_ofn
struktur. Windows memanggil fungsi ini secara otomatis selama CFileDialog::D oModal.
Untuk informasi selengkapnya tentang cara menggunakan kelas di CFileDialog
bawah Windows Vista atau yang lebih baru, lihat Kelas CFileDialog.
Contoh
Lihat contoh untuk CFileDialog::UpdateOFNFromShellDialog.
CFileDialog::CFileDialog
Panggil fungsi ini untuk membuat kotak dialog file Windows standar.
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);
Parameter
bOpenFileDialog
[di] Parameter yang menentukan jenis kotak dialog apa yang akan dibuat. Atur ke TRUE untuk membuat kotak dialog Buka File. Atur ke FALSE untuk membuat kotak dialog Simpan File Sebagai .
lpszDefExt
[di] Ekstensi nama file default. Jika pengguna tidak menyertakan ekstensi yang diketahui (yang memiliki asosiasi di komputer pengguna) dalam kotak Nama file, ekstensi yang ditentukan oleh lpszDefExt secara otomatis ditambahkan ke nama file. Jika parameter ini NULL, tidak ada ekstensi yang ditambahkan.
lpszFileName
[di] Nama file awal yang muncul dalam kotak Nama file. Jika NULL, tidak ada nama file awal yang muncul.
dwFlags
[di] Kombinasi satu atau beberapa bendera yang bisa Anda gunakan untuk mengkustomisasi kotak dialog. Untuk deskripsi bendera ini, lihat struktur OPENFILENAME di Windows SDK. Jika Anda mengubah m_ofn.Flags
anggota struktur, gunakan operator bitwise-OR dalam perubahan Anda untuk menjaga perilaku default tetap utuh.
lpszFilter
[di] Serangkaian pasangan string yang menentukan filter yang dapat Anda terapkan ke file. Jika Anda menentukan filter file, hanya file yang cocok dengan kriteria filter yang akan muncul di daftar File. Lihat bagian Keterangan untuk informasi selengkapnya tentang cara bekerja dengan filter file.
pParentWnd
[di] Penunjuk ke jendela induk atau pemilik kotak dialog file.
dwSize
[di] Ukuran OPENFILENAME
struktur. Nilai ini tergantung pada versi sistem operasi. MFC menggunakan parameter ini untuk menentukan jenis kotak dialog yang sesuai untuk dibuat. Ukuran default 0 berarti bahwa kode MFC akan menentukan ukuran kotak dialog yang benar untuk digunakan berdasarkan versi sistem operasi tempat program dijalankan.
bVistaStyle
[di] Catatan Parameter ini tersedia di Visual Studio 2008 dan yang lebih baru dan menyebabkan dialog gaya baru digunakan hanya jika Anda berjalan di Windows Vista atau yang lebih baru.
Parameter yang menentukan gaya dialog file. Atur ke TRUE untuk menggunakan dialog file gaya Vista baru. Jika tidak, gaya lama kotak dialog akan digunakan. Lihat bagian Keterangan untuk informasi selengkapnya tentang menjalankan di bawah Vista.
Keterangan
Kotak dialog Buka File atau Simpan Sebagai File dibuat, tergantung pada nilai bOpenFileDialog.
Menentukan ekstensi default menggunakan lpszDefExt mungkin tidak menghasilkan perilaku yang Anda harapkan, karena jarang dapat diprediksi ekstensi apa yang memiliki asosiasi file di komputer pengguna. Jika Anda memerlukan kontrol lebih besar atas penambahan ekstensi default, Anda dapat memperoleh kelas Anda sendiri dari CFileDialog
, dan mengambil CFileDialog::OnFileNameOK
alih metode untuk melakukan penanganan ekstensi Anda sendiri.
Untuk memungkinkan pengguna memilih beberapa file, atur bendera OFN_ALLOWMULTISELECT sebelum Anda memanggil DoModal. Anda harus menyediakan buffer nama file Anda sendiri untuk menyimpan daftar beberapa nama file yang dikembalikan. Lakukan ini dengan mengganti m_ofn.lpstrFile
dengan pointer ke buffer yang telah Anda alokasikan, setelah Anda membuat CFileDialog, tetapi sebelum Anda memanggil DoModal
. Selain itu, Anda harus mengatur m_ofn.nMaxFile
dengan jumlah karakter dalam buffer yang diacu oleh m_ofn.lpstrFile
. Jika Anda mengatur jumlah maksimum file yang akan dipilih ke n, ukuran buffer yang diperlukan adalah n
*(_MAX_PATH + 1) + 1. Contohnya:
#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++;
}
}
Untuk mengaktifkan pengguna mengubah ukuran kotak dialog gaya Explorer dengan menggunakan mouse atau keyboard, atur bendera OFN_ENABLESIZING. Pengaturan bendera ini diperlukan hanya jika Anda menyediakan prosedur kait atau templat kustom. Bendera hanya berfungsi dengan kotak dialog gaya Explorer; kotak dialog gaya lama tidak dapat diubah ukurannya.
Parameter lpszFilter digunakan untuk menentukan jenis nama file file harus ditampilkan dalam daftar file. String pertama dalam pasangan string menjelaskan filter; string kedua menunjukkan ekstensi nama file yang akan digunakan. Beberapa ekstensi dapat ditentukan dengan menggunakan titik koma (karakter ';') sebagai pemisah. String diakhir dengan dua karakter bilah vertikal (||
), diikuti oleh karakter NULL. Anda juga dapat menggunakan objek CString untuk parameter ini.
Misalnya, Microsoft Excel memungkinkan pengguna membuka file yang memiliki ekstensi .xlc (bagan) atau .xls (lembar kerja), antara lain. Filter untuk Excel dapat ditulis sebagai:
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
Namun, jika Anda berencana untuk menggunakan string ini untuk langsung memperbarui OPENFILENAME
struktur, Anda harus memisahkan string Anda dengan karakter null, '\0'
, alih-alih bilah vertikal ('|'
).
Parameter bVistaStyle hanya berlaku saat berjalan di bawah Windows Vista atau yang lebih baru. Di bawah versi Windows yang lebih lama, parameter ini diabaikan. Jika bVistaStyle diatur ke TRUE, saat Anda mengkompilasi program dengan Visual Studio 2008 atau yang lebih baru, Dialog File gaya Vista baru akan digunakan. Jika tidak, Dialog File gaya MFC sebelumnya akan digunakan.
Templat dialog tidak didukung pada dialog berdasarkan bVistaStyle
Contoh
Lihat contoh untuk CFileDialog::D oModal.
CFileDialog::D oModal
Panggil fungsi ini untuk menampilkan kotak dialog file umum Windows dan perbolehkan pengguna menelusuri file dan direktori dan memasukkan nama file.
virtual INT_PTR DoModal();
Tampilkan Nilai
IDOK atau IDCANCEL. Jika IDCANCEL dikembalikan, panggil fungsi Windows CommDlgExtendedError untuk menentukan apakah terjadi kesalahan.
IDOK dan IDCANCEL adalah konstanta yang menunjukkan apakah pengguna memilih tombol OK atau Batal.
Keterangan
Jika Anda ingin menginisialisasi berbagai opsi kotak dialog file dengan mengatur anggota m_ofn
struktur, Anda harus melakukan ini sebelum memanggil DoModal
, tetapi setelah objek dialog dibangun.
Misalnya, jika Anda ingin mengizinkan pengguna memilih beberapa file, atur bendera OFN_ALLOWMULTISELECT sebelum memanggil DoModal
, seperti yang ditunjukkan dalam contoh kode dalam topik ini.
Saat pengguna mengklik tombol OK atau Batalkan kotak dialog, atau memilih opsi Tutup dari menu kontrol kotak dialog, kontrol dikembalikan ke aplikasi Anda. Anda kemudian dapat memanggil fungsi anggota lain untuk mengambil pengaturan atau informasi input pengguna ke dalam kotak dialog.
DoModal
adalah fungsi virtual yang diambil alih dari kelas CDialog
.
Contoh
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
Mengaktifkan daftar drop-down pada tombol Buka atau Simpan dalam dialog.
HRESULT EnableOpenDropDown(DWORD dwIDCtl);
Parameter
dwIDCtl
ID daftar drop-down.
Keterangan
CFileDialog::EndVisualGroup
Menghentikan penambahan elemen ke grup visual dalam dialog.
HRESULT EndVisualGroup();
Tampilkan Nilai
Mengembalikan S_OK jika berhasil; nilai kesalahan jika tidak.
Keterangan
CFileDialog::GetCheckButtonState
Mengambil status tombol centang saat ini (kotak centang) dalam dialog.
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
Parameter
dwIDCtl
ID kotak centang.
bChecked
Status kotak centang. TRUE menunjukkan diperiksa; FALSE menunjukkan tidak dicentang.
Keterangan
CFileDialog::GetControlItemState
Mengambil status item saat ini dalam kontrol kontainer yang ditemukan dalam dialog.
HRESULT GetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF& dwState);
Parameter
dwIDCtl
ID kontrol kontainer.
dwIDItem
ID item.
dwState
Referensi ke variabel yang menerima salah satu nilai lainnya dari enumerasi CDCONTROLSTATE yang menunjukkan status kontrol saat ini.
Keterangan
CFileDialog::GetControlState
Mengambil visibilitas saat ini dan mengaktifkan status kontrol tertentu.
HRESULT GetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF& dwState);
Parameter
dwIDCtl
ID kontrol.
dwState
Referensi ke variabel yang menerima satu atau beberapa nilai dari enumerasi CDCONTROLSTATE yang menunjukkan status kontrol saat ini.
Keterangan
CFileDialog::GetEditBoxText
Mengambil teks saat ini dalam kontrol kotak edit.
HRESULT GetEditBoxText(
DWORD dwIDCtl,
CString& strText);
Parameter
dwIDCtl
ID kotak edit.
strText
Nilai teks.
Keterangan
CFileDialog::GetFileExt
Panggil fungsi ini untuk mengambil ekstensi nama file yang dimasukkan ke dalam kotak dialog.
CString GetFileExt() const;
Tampilkan Nilai
Ekstensi nama file.
Keterangan
Misalnya, jika nama file yang dimasukkan DATA.TXT, GetFileExt
mengembalikan "TXT".
Jika m_ofn.Flags
memiliki set bendera OFN_ALLOWMULTISELECT, string ini berisi urutan string yang dihentikan null, dengan string pertama menjadi jalur direktori grup file yang dipilih, diikuti dengan nama semua file yang dipilih oleh pengguna. Untuk mengambil nama jalur file, gunakan fungsi anggota GetStartPosition dan GetNextPathName .
CFileDialog::GetFileName
Panggil fungsi ini untuk mengambil nama nama file yang dimasukkan dalam kotak dialog.
CString GetFileName() const;
Tampilkan Nilai
Nama file.
Keterangan
Nama file mencakup awalan dan ekstensi. Misalnya, GetFileName
akan mengembalikan "TEXT. DAT" untuk file C:\FILES\TEXT.DAT.
Jika m_ofn.Flags
memiliki OFN_ALLOWMULTISELECT
set bendera, Anda harus memanggil GetStartPosition dan GetNextPathName untuk mengambil nama jalur file.
CFileDialog::GetFileTitle
Panggil fungsi ini untuk mengambil judul file yang dimasukkan dalam kotak dialog.
CString GetFileTitle() const;
Tampilkan Nilai
Judul file.
Keterangan
Judul file hanya menyertakan awalannya, tanpa jalur atau ekstensi. Misalnya, GetFileTitle
akan mengembalikan "TEXT" untuk file C:\FILES\TEXT.DAT.
Jika m_ofn.Flags
memiliki set bendera OFN_ALLOWMULTISELECT, string ini berisi urutan string yang dihentikan null, dengan string pertama menjadi jalur direktori grup file yang dipilih, diikuti dengan nama semua file yang dipilih oleh pengguna. Untuk alasan ini, gunakan fungsi anggota GetStartPosition dan GetNextPathName untuk mengambil nama file berikutnya dalam daftar.
Contoh
Lihat contoh untuk CFileDialog::D oModal.
CFileDialog::GetFolderPath
Panggil fungsi anggota ini untuk mengambil jalur folder atau direktori yang saat ini terbuka untuk kotak dialog Buka atau Simpan Sebagai umum.
CString GetFolderPath() const;
Tampilkan Nilai
Objek CString yang berisi folder atau direktori yang saat ini terbuka.
Keterangan
Kotak dialog harus dibuat dengan gaya OFN_EXPLORER; jika tidak, metode akan gagal dengan pernyataan.
Anda hanya dapat memanggil metode ini saat kotak dialog sedang ditampilkan. Setelah kotak dialog ditutup, fungsi ini tidak akan lagi berfungsi, dan metode akan gagal dengan pernyataan.
CFileDialog::GetIFileDialogCustomize
Mengambil pointer ke objek COM internal untuk CFileDialog tertentu.
IFileDialogCustomize* GetIFileDialogCustomize();
Tampilkan Nilai
Penunjuk ke objek COM internal untuk CFileDialog
. Anda bertanggung jawab untuk melepaskan pointer ini dengan tepat.
Keterangan
Gunakan fungsi ini hanya di bawah Windows Vista atau yang lebih baru dengan objek yang memiliki bVistaStyle diatur ke TRUE. Jika Anda menggunakan fungsi ini ketika bVistaStyle false, fungsi ini akan mengembalikan NULL dalam mode rilis dan melempar pernyataan dalam mode debug.
Untuk informasi selengkapnya tentang IFileDialogCustomize
antarmuka, lihat IFileDialogCustomize.
Contoh
Contoh ini mengambil objek COM internal. Untuk menjalankan contoh kode ini, Anda harus mengkompilasinya di bawah Windows Vista atau yang lebih baru.
// 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
Mengambil penunjuk ke objek COM internal untuk .CFileDialog
IFileOpenDialog* GetIFileOpenDialog();
Tampilkan Nilai
Penunjuk ke objek COM internal untuk CFileDialog
. Anda bertanggung jawab untuk melepaskan pointer ini dengan tepat.
Keterangan
Gunakan fungsi ini hanya di bawah Windows Vista atau yang lebih baru dengan objek yang memiliki bVistaStyle diatur ke TRUE. Fungsi ini mengembalikan NULL jika CFileDialog
bukan kotak dialog Buka atau jika bVistaStyle diatur ke FALSE. Dalam kasus akhir ini, fungsi hanya mengembalikan NULL dalam mode rilis - dalam mode debug, fungsi tersebut akan memberikan pernyataan.
Untuk informasi selengkapnya tentang IFileOpenDialog
antarmuka, lihat IFileOpenDialog.
Contoh
Contoh ini mengambil objek COM internal. Untuk menjalankan kode ini, Anda harus mengkompilasinya di bawah Windows Vista atau yang lebih baru.
// 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
Mengambil penunjuk ke objek COM internal untuk .CFileDialog
IFileSaveDialog* GetIFileSaveDialog();
Tampilkan Nilai
Penunjuk ke objek COM internal untuk CFileDialog
. Anda bertanggung jawab untuk melepaskan pointer ini dengan tepat.
Keterangan
Gunakan fungsi ini hanya di bawah Windows Vista atau yang lebih baru dengan objek yang memiliki bVistaStyle diatur ke TRUE. Fungsi ini akan mengembalikan NULL jika CFileDialog
bukan kotak dialog Simpan atau jika bVistaStyle diatur ke FALSE. Dalam kasus akhir ini, fungsi hanya mengembalikan NULL dalam mode rilis - dalam mode debug, fungsi tersebut akan memberikan pernyataan.
Untuk informasi selengkapnya tentang IFileSaveDialog
antarmuka, lihat IFileSaveDialog.
Contoh
Contoh ini mengambil objek COM internal. Untuk menjalankan contoh kode ini, Anda harus mengkompilasinya di bawah Windows Vista atau yang lebih baru.
// 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
Panggil fungsi ini untuk mengambil nama file berikutnya dari grup yang dipilih dalam kotak dialog.
CString GetNextPathName(POSITION& pos) const;
Parameter
pos
Referensi ke nilai POSITION yang dikembalikan oleh panggilan sebelumnya GetNextPathName
atau GetStartPosition
fungsi. NULL jika akhir daftar telah tercapai.
Tampilkan Nilai
Jalur lengkap file.
Keterangan
Jalur nama file menyertakan judul file ditambah seluruh jalur direktori. Misalnya, GetNextPathName
akan mengembalikan "C:\FILES\TEXT. DAT" untuk file C:\FILES\TEXT.DAT. Anda dapat menggunakan GetNextPathName
dalam perulangan perulangan penerusan jika Anda membuat posisi awal dengan panggilan ke GetStartPosition
.
Jika pilihan hanya terdiri dari satu file, nama file tersebut akan dikembalikan.
CFileDialog::GetOFN
Mengambil struktur terkait OPENFILENAME
.
const OPENFILENAME& GetOFN() const;
OPENFILENAME& GetOFN();
Tampilkan Nilai
Struktur OPENFILENAME .
Keterangan
Gunakan versi kedua fungsi ini untuk menginisialisasi tampilan kotak dialog Buka File atau Simpan Sebagai File setelah dibuat tetapi sebelum ditampilkan dengan DoModal
fungsi anggota. Misalnya, Anda dapat mengatur lpstrTitle
anggota m_ofn
ke keterangan yang Anda inginkan untuk memiliki kotak dialog.
CFileDialog::GetPathName
Panggil fungsi ini untuk mengambil jalur lengkap file yang dimasukkan dalam kotak dialog.
CString GetPathName() const;
Tampilkan Nilai
Jalur lengkap file.
Keterangan
Jalur nama file menyertakan judul file ditambah seluruh jalur direktori. Misalnya, GetPathName
akan mengembalikan "C:\FILES\TEXT. DAT" untuk file C:\FILES\TEXT.DAT.
Jika m_ofn.Flags
memiliki set bendera OFN_ALLOWMULTISELECT, string ini berisi urutan string yang diteminasi null, dengan string pertama menjadi jalur direktori grup file yang dipilih, diikuti dengan nama semua file yang dipilih oleh pengguna. Untuk alasan ini, gunakan fungsi anggota GetStartPosition dan GetNextPathName untuk mengambil nama file berikutnya dalam daftar.
Contoh
Lihat contoh untuk CFileDialog::D oModal.
CFileDialog::GetReadOnlyPref
Panggil fungsi ini untuk menentukan apakah kotak centang Baca Saja telah dipilih dalam kotak dialog Buka File standar Windows dan Simpan File Sebagai.
BOOL GetReadOnlyPref() const;
Tampilkan Nilai
Bukan nol jika kotak centang Baca Saja dalam kotak dialog dipilih; jika tidak, 0.
Keterangan
Anda bisa menyembunyikan kotak centang Baca Saja dengan mengatur gaya OFN_HIDEREADONLY di CFileDialog
konstruktor.
Catatan
Objek gaya CFileDialog
Windows Vista atau yang lebih baru tidak mendukung fungsi ini. Mencoba menggunakan fungsi ini pada gaya CFileDialog
Windows Vista atau yang lebih baru akan melempar CNotSupportedException.
CFileDialog::GetResult
Mengambil pilihan yang dibuat pengguna dalam dialog.
IShellItem* GetResult() throw();
Tampilkan Nilai
Penunjuk ke IShellItem yang mewakili pilihan pengguna.
Keterangan
CFileDialog::GetResults
Mengambil pilihan pengguna dalam dialog yang memungkinkan beberapa pilihan.
IShellItemArray* GetResults() throw();
Tampilkan Nilai
Penunjuk ke IShellItemArray tempat item yang dipilih dalam dialog dapat diakses.
Keterangan
CFileDialog::GetSelectedControlItem
Mengambil item tertentu dari kontrol kontainer yang ditentukan dalam dialog.
HRESULT GetSelectedControlItem(
DWORD dwIDCtl,
DWORD& dwIDItem);
Parameter
dwIDCtl
ID kontrol kontainer.
dwIDItem
ID item yang dipilih pengguna dalam kontrol.
Keterangan
CFileDialog::GetStartPosition
Panggil fungsi anggota ini untuk mengambil posisi nama jalur file pertama dalam daftar, jika m_ofn.Flags
memiliki set bendera OFN_ALLOWMULTISELECT.
POSITION GetStartPosition() const;
Tampilkan Nilai
Nilai POSISI yang dapat digunakan untuk iterasi; NULL jika daftar kosong.
CFileDialog::HideControl
Panggil fungsi anggota ini untuk menyembunyikan kontrol yang ditentukan dalam kotak dialog Buka atau Simpan Sebagai umum gaya Penjelajah.
void HideControl(int nID);
Parameter
Nid
ID kontrol yang akan disembunyikan.
Keterangan
Kotak dialog harus dibuat dengan gaya OFN_EXPLORER; jika tidak, fungsi akan gagal dengan pernyataan.
CFileDialog::IsPickFoldersMode
Menentukan apakah dialog saat ini berada dalam mode pemilih folder.
BOOL IsPickFoldersMode() const;
Tampilkan Nilai
TRUE jika dialog berada dalam mode pemilih folder; jika tidak FALSE.
Keterangan
CFileDialog::m_ofn
m_ofn
adalah struktur jenis OPENFILENAME
. Data dalam struktur ini mewakili status saat ini dari CFileDialog
.
Keterangan
Gunakan struktur ini untuk menginisialisasi tampilan kotak dialog Buka File atau Simpan Sebagai File setelah Anda membangunnya tetapi sebelum Anda menampilkannya dengan metode DoModal . Misalnya, Anda dapat mengatur anggota lpstrTitle ke m_ofn
keterangan yang Anda inginkan untuk memiliki kotak dialog.
Dengan gaya Windows Vista atau yang lebih baru dari CFileDialog, m_ofn
tidak dijamin selalu cocok dengan status kotak dialog. Ini disinkronkan dengan kotak dialog di versi Windows sebelumnya. Lihat CFileDialog::ApplyOFNToShellDialog dan CFileDialog::UpdateOFNFromShellDialog untuk informasi selengkapnya tentang menyinkronkan m_ofn
struktur dan CFileDialog
status di bawah Windows Vista atau yang lebih baru.
Dialog file gaya Windows Vista atau yang lebih baru tidak mendukung anggota dan bendera tertentu dari CFileDialog
. Akibatnya, ini tidak akan berpengaruh.
Berikut ini adalah daftar anggota yang tidak didukung oleh Windows Vista atau yang lebih baru:
lpstrCustomFilter
lpstrInitialDir
lCustData
lpfnHook
lpTemplateName
Bendera berikut ini tidak didukung dan oleh karena itu tidak berpengaruh ketika Anda menggunakan Windows Vista atau gaya yang lebih baru dari CFileDialog
:
OFN_ENABLEHOOK
OFN_ENABLEINCLUDENOTIFY
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_EXTENSIONDIFFERENT
OFN_HIDEREADONLY
OFN_LONGNAMES - secara efektif selalu aktif di Windows Vista atau yang lebih baru
OFN_NOLONGNAMES - secara efektif selalu nonaktif di Windows Vista atau yang lebih baru
OFN_NONETWORKBUTTON - secara efektif selalu aktif di Windows Vista atau yang lebih baru
OFN_READONLY
OFN_SHOWHELP
Untuk informasi selengkapnya tentang struktur ini, lihat struktur OPENFILENAME di Windows SDK.
CFileDialog::MakeProminent
Tempatkan kontrol dalam dialog sehingga menonjol dibandingkan dengan kontrol lain.
HRESULT MakeProminent(DWORD dwIDCtl);
Parameter
dwIDCtl
ID kontrol.
Keterangan
CFileDialog::OnButtonClicked
Dipanggil saat tombol diklik.
virtual void OnButtonClicked(DWORD dwIDCtl);
Parameter
dwIDCtl
ID tombol.
Keterangan
CFileDialog::OnCheckButtonToggled
Dipanggil saat kotak centang dicentang atau tidak dicentang.
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
Parameter
dwIDCtl
ID kotak centang.
bChecked
Dicentang atau tidak dicentang.
Keterangan
CFileDialog::OnControlActivating
Dipanggil ketika kontrol diaktifkan.
virtual void OnControlActivating(DWORD dwIDCtl);
Parameter
dwIDCtl
ID kontrol.
Keterangan
CFileDialog::OnFileNameChange
Ambil alih metode ini jika Anda ingin menangani pesan WM_NOTIFY CDN_SELCHANGE.
virtual void OnFileNameChange();
Keterangan
Sistem mengirim pesan CDN_SELCHANGE saat pengguna memilih file atau folder baru dalam daftar file kotak dialog Buka atau Simpan Sebagai . Ambil alih metode ini jika Anda ingin melakukan tindakan apa pun sebagai respons terhadap pesan ini.
Sistem mengirim pesan ini hanya jika kotak dialog dibuat dengan bendera OFN_EXPLORER diaktifkan. Untuk informasi selengkapnya tentang pemberitahuan, lihat CDN_SELCHANGE. Untuk informasi tentang bendera OFN_EXPLORER, lihat struktur OPENFILENAME dan Buka dan Simpan Sebagai Kotak Dialog.
CFileDialog::OnFileNameOK
Ambil alih fungsi ini hanya jika Anda ingin memberikan validasi kustom nama file yang dimasukkan ke dalam kotak dialog file umum.
virtual BOOL OnFileNameOK();
Tampilkan Nilai
1 jika nama file bukan nama file yang valid; jika tidak, 0.
Keterangan
Fungsi ini memungkinkan Anda menolak nama file karena alasan khusus aplikasi apa pun. Biasanya, Anda tidak perlu menggunakan fungsi ini karena kerangka kerja menyediakan validasi default nama file dan menampilkan kotak pesan jika nama file yang tidak valid dimasukkan.
Jika 1 dikembalikan, kotak dialog akan tetap ditampilkan agar pengguna memasukkan nama file lain. Prosedur dialog menutup dialog jika pengembalian adalah 0. Nilai pengembalian bukan nol lainnya saat ini dicadangkan dan tidak boleh digunakan.
CFileDialog::OnFolderChange
Ambil alih fungsi ini untuk menangani pesan WM_NOTIFYCDN_FOLDERCHANGE.
virtual void OnFolderChange();
Keterangan
Pesan pemberitahuan dikirim saat folder baru dibuka dalam kotak dialog Buka atau Simpan Sebagai.
Pemberitahuan dikirim hanya jika kotak dialog dibuat dengan gaya OFN_EXPLORER. Untuk informasi selengkapnya tentang pemberitahuan, lihat CDN_FOLDERCHANGE. Untuk informasi tentang gaya OFN_EXPLORER, lihat struktur OPENFILENAME dan Kotak Dialog Buka dan Simpan Sebagai.
CFileDialog::OnInitDone
Ambil alih fungsi ini untuk menangani pesan WM_NOTIFY CDN_INITDONE.
virtual void OnInitDone();
Keterangan
Sistem mengirim pesan pemberitahuan ini ketika sistem telah selesai mengatur kontrol dalam kotak dialog Buka atau Simpan Sebagai untuk memberi ruang bagi kontrol kotak dialog anak.
Sistem mengirimkan ini hanya jika kotak dialog dibuat dengan gaya OFN_EXPLORER. Untuk informasi selengkapnya tentang pemberitahuan, lihat CDN_INITDONE. Untuk informasi tentang gaya OFN_EXPLORER, lihat struktur OPENFILENAME dan Kotak Dialog Buka dan Simpan Sebagai.
Catatan
Dialog file gaya Windows Vista atau yang lebih baru tidak mendukung fungsi ini. Mencoba menggunakan fungsi ini pada dialog file gaya Windows Vista atau yang lebih baru akan melempar CNotSupportedException.
CFileDialog::OnItemSelected
Dipanggil saat item kontainer dipilih.
virtual void OnItemSelected(
DWORD dwIDCtl,
DWORD dwIDItem);
Parameter
dwIDCtl
ID kontrol kontainer.
dwIDItem
ID item.
Keterangan
CFileDialog::OnLBSelChangedNotify
Fungsi ini dipanggil setiap kali pilihan saat ini dalam kotak daftar akan berubah.
virtual void OnLBSelChangedNotify(
UINT nIDBox,
UINT iCurSel,
UINT nCode);
Parameter
nIDBox
ID kotak daftar atau kotak kombo tempat pilihan terjadi.
iCurSel
Indeks pilihan saat ini.
nCode
Kode pemberitahuan kontrol. Parameter ini harus memiliki salah satu nilai berikut:
CD_LBSELCHANGE Menentukan iCurSel adalah item yang dipilih dalam kotak daftar pilihan tunggal.
CD_LBSELSUB Menentukan bahwa iCurSel tidak lagi dipilih dalam kotak daftar multiseleksi.
CD_LBSELADD Menentukan bahwa iCurSel dipilih dalam kotak daftar multiseleksi.
CD_LBSELNOITEMS Menentukan bahwa tidak ada pilihan dalam kotak daftar multiseleksi.
Keterangan
Ambil alih fungsi ini untuk menyediakan penanganan kustom perubahan pilihan dalam kotak daftar. Misalnya, Anda dapat menggunakan fungsi ini untuk menampilkan hak akses atau tanggal-terakhir-dimodifikasi dari setiap file yang dipilih pengguna.
CFileDialog::OnShareViolation
Ambil alih fungsi ini untuk memberikan penanganan kustom pelanggaran berbagi.
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
Parameter
lpszPathName
Jalur file tempat pelanggaran berbagi terjadi.
Tampilkan Nilai
Salah satu dari nilai berikut:
OFN_SHAREFALLTHROUGH Nama file dikembalikan dari kotak dialog.
OFN_SHARENOWARN Tidak ada tindakan lebih lanjut yang perlu diambil.
OFN_SHAREWARN Pengguna menerima pesan peringatan standar untuk kesalahan ini.
Keterangan
Biasanya, Anda tidak perlu menggunakan fungsi ini karena kerangka kerja menyediakan pemeriksaan default pelanggaran berbagi dan menampilkan kotak pesan jika pelanggaran berbagi terjadi.
Jika Anda ingin menonaktifkan pemeriksaan pelanggaran berbagi, gunakan operator OR bitwise untuk menggabungkan bendera OFN_SHAREAWARE dengan m_ofn.Flags
.
CFileDialog::OnTypeChange
Ambil alih fungsi ini untuk menangani pesan WM_NOTIFYCDN_TYPECHANGE.
virtual void OnTypeChange();
Keterangan
Pesan pemberitahuan dikirim ketika pengguna memilih jenis file baru dari daftar jenis file dalam kotak dialog Buka atau Simpan Sebagai.
Pemberitahuan dikirim hanya jika kotak dialog dibuat dengan gaya OFN_EXPLORER. Untuk informasi selengkapnya tentang pemberitahuan, lihat CDN_TYPECHANGE. Untuk informasi tentang gaya OFN_EXPLORER, lihat struktur OPENFILENAME dan Kotak Dialog Buka dan Simpan Sebagai.
CFileDialog::RemoveControlItem
Menghapus item dari kontrol kontainer dalam dialog.
HRESULT RemoveControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parameter
dwIDCtl
ID kontrol kontainer untuk menghapus item.
dwIDItem
ID item.
Keterangan
CFileDialog::SetCheckButtonState
Mengatur status tombol centang saat ini (kotak centang) dalam dialog.
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
Parameter
dwIDCtl
ID kotak centang.
bChecked
Status kotak centang. TRUE menunjukkan diperiksa; FALSE menunjukkan Tidak Dicentang.
Keterangan
CFileDialog::SetControlItemState
Mengatur status item saat ini dalam kontrol kontainer yang ditemukan dalam dialog.
HRESULT SetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF dwState);
Parameter
dwIDCtl
ID kontrol kontainer.
dwIDItem
ID item.
dwState
Satu atau beberapa nilai dari enumerasi CDCONTROLSTATE yang menunjukkan status kontrol baru.
Keterangan
CFileDialog::SetControlItemText
Mengatur teks item kontrol. Misalnya, teks yang menyertai tombol radio atau item di menu.
HRESULT SetControlItemText(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parameter
dwIDCtl
ID kontrol kontainer.
dwIDItem
ID item.
strLabel
Teks item.
Keterangan
CFileDialog::SetControlLabel
Mengatur teks yang terkait dengan kontrol, seperti teks tombol atau label kotak edit.
HRESULT SetControlLabel(
DWORD dwIDCtl,
const CString& strLabel);
Parameter
dwIDCtl
ID kontrol.
strLabel
Nama kontrol.
Keterangan
CFileDialog::SetControlState
Mengatur visibilitas saat ini dan mengaktifkan status kontrol tertentu.
HRESULT SetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF dwState);
Parameter
dwIDCtl
ID kontrol.
dwState
Satu atau beberapa nilai dari enumerasi CDCONTROLSTATE yang menunjukkan status kontrol saat ini.
Keterangan
CFileDialog::SetControlText
Panggil metode ini untuk mengatur teks untuk kontrol yang ditentukan dalam kotak dialog Buka atau Simpan Sebagai gaya Penjelajah.
void SetControlText(
int nID,
LPCSTR lpsz);
void SetControlText(
int nID,
const wchar_t *lpsz);
Parameter
Nid
[di] ID kontrol untuk mengatur teks.
lpsz
[di] Penunjuk ke string yang berisi teks yang akan diatur untuk kontrol.
Keterangan
Kedua versi fungsi ini valid untuk aplikasi yang menggunakan Unicode. Namun, hanya versi dengan jenis LPCSTR yang valid untuk aplikasi yang menggunakan ANSI.
Untuk menggunakan metode ini, Anda harus membuat kotak dialog dengan gaya OFN_EXPLORER. Jika tidak, fungsi akan gagal dengan pernyataan.
CFileDialog::SetDefExt
Panggil fungsi ini untuk mengatur ekstensi nama file default untuk kotak dialog Buka atau Simpan Sebagai umum gaya Penjelajah.
void SetDefExt(LPCSTR lpsz);
Parameter
lpsz
Penunjuk ke string yang berisi ekstensi default yang akan digunakan untuk objek kotak dialog. String ini tidak boleh berisi titik (.).
Keterangan
Kotak dialog harus dibuat dengan gaya OFN_EXPLORER; jika tidak, fungsi akan gagal dengan pernyataan.
CFileDialog::SetEditBoxText
Mengatur teks saat ini dalam kontrol kotak edit.
HRESULT SetEditBoxText(
DWORD dwIDCtl,
const CString& strText);
Parameter
dwIDCtl
ID kotak edit.
strText
Nilai teks.
Keterangan
CFileDialog::SetProperties
Menyediakan penyimpanan properti yang menentukan nilai default yang akan digunakan untuk item yang disimpan.
BOOL SetProperties(LPCWSTR lpszPropList);
Parameter
lpszPropList
Daftar properti yang telah ditentukan sebelumnya dipisahkan oleh ";". Untuk daftar bendera, lihat bagian Bendera OPENFILENAME.
Keterangan
CFileDialog::SetSelectedControlItem
Mengatur status terpilih item tertentu dalam grup tombol opsi atau kotak kombo yang ditemukan dalam dialog.
HRESULT SetSelectedControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parameter
dwIDCtl
ID kontrol kontainer.
dwIDItem
ID item yang dipilih pengguna dalam kontrol.
Keterangan
CFileDialog::SetTemplate
Mengatur templat kotak dialog untuk objek CFileDialog .
void SetTemplate(
UINT nWin3ID,
UINT nWin4ID);
void SetTemplate(
LPCTSTR lpWin3ID,
LPCTSTR lpWin4ID);
Parameter
nWin3ID
[di] Berisi nomor ID sumber daya templat untuk objek non-Explorer CFileDialog
. Templat ini hanya digunakan pada Windows NT 3.51 atau ketika gaya OFN_EXPLORER tidak ada.
nWin4ID
[di] Berisi nomor ID sumber daya templat untuk objek Explorer CFileDialog
. Templat ini hanya digunakan pada Windows NT 4.0 dan versi yang lebih baru, Windows 95 dan versi yang lebih baru, atau ketika gaya OFN_EXPLORER ada.
lpWin3ID
[di] Berisi nama sumber daya templat untuk objek non-Explorer CFileDialog
. Templat ini hanya digunakan pada Windows NT 3.51 atau ketika gaya OFN_EXPLORER tidak ada.
lpWin4ID
[di] Berisi nama sumber daya templat objek Explorer CFileDialog
. Templat ini hanya digunakan pada Windows NT 4.0 dan versi yang lebih baru, Windows 95 dan versi yang lebih baru, atau ketika gaya OFN_EXPLORER ada.
Keterangan
Sistem hanya akan menggunakan salah satu templat yang ditentukan. Sistem menentukan templat mana yang akan digunakan berdasarkan keberadaan gaya OFN_EXPLORER dan sistem operasi tempat aplikasi berjalan. Dengan menentukan templat gaya non-Explorer dan Explorer, mudah untuk mendukung Windows NT 3.51, Windows NT 4.0 dan versi yang lebih baru, dan Windows 95 dan versi yang lebih baru.
Catatan
Kotak dialog file gaya Windows Vista atau yang lebih baru tidak mendukung fungsi ini. Mencoba menggunakan fungsi ini pada kotak dialog file gaya Windows Vista atau yang lebih baru akan melempar CNotSupportedException. Alternatifnya adalah menggunakan dialog yang disesuaikan. Untuk informasi selengkapnya tentang menggunakan kustom CFileDialog
, lihat IFileDialogCustomize.
CFileDialog::StartVisualGroup
Mendeklarasikan grup visual dalam dialog. Panggilan berikutnya ke metode "tambahkan" menambahkan elemen tersebut ke grup ini.
HRESULT StartVisualGroup(
DWORD dwIDCtl,
const CString& strLabel);
Parameter
dwIDCtl
ID grup visual.
strLabel
Nama grup.
Keterangan
CFileDialog::UpdateOFNFromShellDialog
m_ofn
Memperbarui struktur data CFileDialog berdasarkan status objek internal saat ini.
void UpdateOFNFromShellDialog();
Keterangan
Dalam versi Windows sebelum Windows Vista, struktur data OPENFILENAME anggota terus disinkronkan dengan status CFileDialog
. Setiap perubahan pada variabel anggota m_ofn secara langsung memengaruhi status kotak dialog. Selain itu, setiap perubahan pada status dialog segera memperbarui variabel anggota m_ofn.
Di Windows Vista atau yang lebih baru, m_ofn
struktur data tidak diperbarui secara otomatis. Untuk menjamin akurasi data dalam m_ofn
variabel anggota, Anda harus memanggil UpdateOFNFromShellDialog
fungsi sebelum mengakses data. Windows memanggil fungsi ini secara otomatis selama pemrosesan IFileDialog::OnFileOK.
Untuk informasi selengkapnya tentang cara menggunakan kelas di CFileDialog
bawah Windows Vista atau yang lebih baru, lihat Kelas CFileDialog.
Contoh
Contoh ini memperbarui CFileDialog
sebelum menampilkannya. Sebelum memperbarui m_ofn
variabel anggota, kita perlu menyinkronkannya ke status kotak dialog saat ini.
// 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();