Příklad: Dialogové okno Otevřít
Shapes
příklad, který jsme používali, je poněkud kontrakce. Pojďme se obrátit na objekt COM, který můžete použít v reálném programu systému Windows: dialogové okno Otevřít.
Chcete-li zobrazit dialogové okno Otevřít, může program použít objekt COM s názvem Common Item Dialog objekt. Dialogové okno Společné položky implementuje rozhraní s názvem IFileOpenDialog, který je deklarován v souboru hlavičky Shobjidl.h.
Tady je program, který uživateli zobrazí dialogové okno Otevřít. Pokud uživatel vybere soubor, program zobrazí dialogové okno obsahující název souboru.
#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;
}
Tento kód používá některé koncepty, které budou popsány dále v tomto modulu, takže se nemusíte obávat, pokud tady nerozumíte všemu. Tady je základní osnova kódu:
- Volání CoInitializeEx inicializace knihovny COM.
- Volání CoCreateInstance vytvoření objektu Common Item Dialog a získání ukazatele na IFileOpenDialog rozhraní.
- Volání objektu Zobrazit metodu, která zobrazuje dialogové okno pro uživatele. Tato metoda blokuje, dokud uživatel dialogové okno nespustí.
- Volejte metodu GetResult objektu. Tato metoda vrátí ukazatel na druhý objekt MODELU COM, který se nazývá položka Shell objektu. Položka prostředí, která implementuje IShellItem rozhraní, představuje soubor, který uživatel vybral.
- Volejte GetDisplayName položky shellu metoda. Tato metoda získá cestu k souboru ve formě řetězce.
- Zobrazí okno se zprávou, ve které se zobrazí cesta k souboru.
- Voláním CoUninitialize zrušte inicializaci knihovny COM.
Kroky 1, 2 a 7 volání funkcí, které jsou definovány knihovnou COM. Jedná se o obecné funkce modelu COM. Kroky 3–5 volání metod, které jsou definovány objektem Common Item Dialog.
Tento příklad ukazuje obě varianty vytvoření objektu: obecná CoCreateInstance funkce a metoda (GetResult), která je specifická pro objekt Common Item Dialog.
Další
Související témata
-
Ukázková dialogového okna Otevřít dialogové okno