Esempio: finestra di dialogo Apri
L'esempio Shapes
usato è un po' contrived. Passiamo a un oggetto COM che potresti usare in un programma Windows reale: la finestra di dialogo apri .
Per visualizzare la finestra di dialogo Apri , un programma può utilizzare un oggetto COM denominato oggetto Common Item Dialog. La finestra di dialogo Elemento comune implementa un'interfaccia denominata IFileOpenDialog, dichiarata nel file di intestazione Shobjidl.h.
Ecco un programma che visualizza la finestra di dialogo Apri all'utente. Se l'utente seleziona un file, il programma visualizza una finestra di dialogo contenente il nome del 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;
}
Questo codice usa alcuni concetti che verranno descritti più avanti nel modulo, quindi non preoccuparti se non si comprende tutto qui. Ecco una struttura di base del codice:
- Chiamare CoInitializeEx per inizializzare la libreria COM.
- Chiamare CoCreateInstance per creare l'oggetto Common Item Dialog e ottenere un puntatore all'interfaccia IFileOpenDia log dell'oggetto.
- Chiamare il metodo show dell'oggetto dell'oggetto, che mostra la finestra di dialogo all'utente. Questo metodo si blocca fino a quando l'utente non chiude la finestra di dialogo.
- Chiamare il metodoGetResult dell'oggetto. Questo metodo restituisce un puntatore a un secondo oggetto COM, denominato elemento shell oggetto . L'elemento Shell, che implementa l'interfacciaIShellItem, rappresenta il file selezionato dall'utente.
- Chiamare metodo GetDisplayName dell'elemento shell. Questo metodo ottiene il percorso del file, sotto forma di stringa.
- Mostra una finestra di messaggio che visualizza il percorso del file.
- Chiamare CoUninitialize per annullare l'inizializzazione della libreria COM.
Passaggi 1, 2 e 7 chiamano le funzioni definite dalla libreria COM. Si tratta di funzioni COM generiche. I passaggi da 3 a 5 chiamano i metodi definiti dall'oggetto Common Item Dialog.
Questo esempio mostra entrambe le varietà di creazione di oggetti: la funzione CoCreateInstance generica e un metodo (GetResult) specifico dell'oggetto Common Item Dialog.
Prossimo
Gestione della durata di un di un oggetto
Argomenti correlati
-
finestra di dialogo Apri di esempio