Contoh: Kotak dialog Buka
Contoh Shapes
yang telah kita gunakan agak disusupi. Mari kita beralih ke objek COM yang mungkin Anda gunakan dalam program Windows nyata: kotak dialog Buka .
Untuk memperlihatkan kotak dialog Buka , program bisa menggunakan objek COM yang disebut objek Dialog Item Umum. Dialog Item Umum mengimplementasikan antarmuka bernama IFileOpenDialog, yang dideklarasikan dalam file header Shobjidl.h.
Berikut adalah program yang menampilkan kotak dialog Buka kepada pengguna. Jika pengguna memilih file, program akan menampilkan kotak dialog yang berisi nama file.
#include <windows.h>
#include <shobjidl.h>
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
IFileOpenDialog *pFileOpen;
// Create the FileOpenDialog object.
hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL,
IID_IFileOpenDialog, reinterpret_cast<void**>(&pFileOpen));
if (SUCCEEDED(hr))
{
// Show the Open dialog box.
hr = pFileOpen->Show(NULL);
// Get the file name from the dialog box.
if (SUCCEEDED(hr))
{
IShellItem *pItem;
hr = pFileOpen->GetResult(&pItem);
if (SUCCEEDED(hr))
{
PWSTR pszFilePath;
hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
// Display the file name to the user.
if (SUCCEEDED(hr))
{
MessageBoxW(NULL, pszFilePath, L"File Path", MB_OK);
CoTaskMemFree(pszFilePath);
}
pItem->Release();
}
}
pFileOpen->Release();
}
CoUninitialize();
}
return 0;
}
Kode ini menggunakan beberapa konsep yang akan dijelaskan nanti dalam modul, jadi jangan khawatir jika Anda tidak memahami semuanya di sini. Berikut adalah kerangka dasar kode:
- Panggil CoInitializeEx untuk menginisialisasi pustaka COM.
- Panggil CoCreateInstance untuk membuat objek Dialog Item Umum dan dapatkan penunjuk ke antarmuka IFileOpenDialog objek.
- Panggil metode Tampilkan objek, yang memperlihatkan kotak dialog kepada pengguna. Metode ini memblokir hingga pengguna menutup kotak dialog.
- Panggil metode GetResult objek. Metode ini mengembalikan penunjuk ke objek COM kedua, yang disebut objek item Shell . Item Shell, yang mengimplementasikan antarmuka IShellItem , mewakili file yang dipilih pengguna.
- Panggil metode GetDisplayName item Shell. Metode ini mendapatkan jalur file, dalam bentuk string.
- Perlihatkan kotak pesan yang menampilkan jalur file.
- Panggil CoUninitialize untuk membatalkan inisialisasi pustaka COM.
Langkah 1, 2, dan 7 fungsi panggilan yang ditentukan oleh pustaka COM. Ini adalah fungsi COM generik. Langkah 3–5 metode panggilan yang ditentukan oleh objek Dialog Item Umum.
Contoh ini menunjukkan kedua varietas pembuatan objek: Fungsi CoCreateInstance generik, dan metode (GetResult) yang khusus untuk objek Dialog Item Umum.
Berikutnya
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk