Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kullanmakta olduğumuz Shapes örnek bir şekilde eşleştirilmiştir. Şimdi gerçek bir Windows programında kullanabileceğiniz bir COM nesnesine dönelim: Aç iletişim kutusu.
ekran görüntüsü
Aç iletişim kutusunu göstermek için, bir program Ortak Öğe İletişim Kutusu nesnesi adlı bir COM nesnesi kullanabilir. Ortak Öğe İletişim Kutusu, Shobjidl.h üst bilgi dosyasında bildirilen IFileOpenDialogadlı bir arabirim uygular.
Kullanıcıya Aç iletişim kutusunu görüntüleyen bir program aşağıdadır. Kullanıcı bir dosya seçerse, program dosya adını içeren bir iletişim kutusu gösterir.
#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;
}
Bu kod, modülün ilerleyen bölümlerinde açıklanacak bazı kavramları kullanır, bu nedenle buradaki her şeyi anlamıyorsanız endişelenmeyin. Kodun temel bir ana hattı aşağıdadır:
- COM kitaplığını başlatmak için CoInitializeEx çağırın.
- Ortak Öğe İletişim Kutusu nesnesini oluşturmak ve nesnenin IFileOpenDialog arabirimine bir işaretçi almak için CoCreateInstance çağırın.
- Nesnenin Göster yöntemini çağırın. Bu yöntem kullanıcıya iletişim kutusunu gösterir. Bu yöntem, kullanıcı iletişim kutusunu kapatana kadar engeller.
- Nesnenin GetResult yöntemini çağırın. Bu yöntem, Kabuk öğesi nesnesi olarak adlandırılan ikinci bir COM nesnesine işaretçi döndürür. IShellItem arabirimini uygulayan Shell öğesi, kullanıcının seçtiği dosyayı temsil eder.
- Shell öğesinin GetDisplayName yöntemini çağırın. Bu yöntem, dosya yolunu dize biçiminde alır.
- Dosya yolunu görüntüleyen bir ileti kutusu gösterin.
- COM kitaplığını başlatmadan önce CoUninitialize çağırın.
ADıM 1, 2 ve 7, COM kitaplığı tarafından tanımlanan işlevleri çağırır. Bunlar genel COM işlevleridir. Adım 3-5, Ortak Öğe İletişim Kutusu nesnesi tarafından tanımlanan yöntemleri çağırır.
Bu örnek, her iki nesne oluşturma türünü de gösterir: CoCreateInstancegenelişlevi ve Ortak Öğe İletişim Kutusu nesnesine özgü bir yöntem (GetResult).
Önümüzdeki
Nesne Ömrünü Yönetme
İlgili konular