Öppna en förbättrad metafil och visa dess innehåll
Det här avsnittet innehåller ett exempel som visar hur ett program öppnar en förbättrad metafil som lagras på disken och visar den associerade bilden i klientområdet.
I exemplet används dialogrutan Öppna gemensam för att göra det möjligt för användaren att välja en utökad metafil från en lista över befintliga filer. Sedan skickas namnet på den valda filen till funktionen GetEnhMetaFile, som returnerar ett handtag som identifierar filen. Det här handtaget skickas till funktionen PlayEnhMetaFile för att visa bilden.
LoadString(hInst, IDS_FILTERSTRING,
(LPSTR)szFilter, sizeof(szFilter));
// Replace occurrences of '%' string separator
// with '\0'.
for (i=0; szFilter[i]!='\0'; i++)
{
if (szFilter[i] == '%')
szFilter[i] = '\0';
}
LoadString(hInst, IDS_DEFEXTSTRING,
(LPSTR)szDefExt, sizeof(szFilter));
// Use the OpenFilename common dialog box
// to obtain the desired filename.
szFile[0] = '\0';
OPENFILENAME Ofn;
Ofn.lStructSize = sizeof(OPENFILENAME);
Ofn.hwndOwner = hWnd;
Ofn.lpstrFilter = szFilter;
Ofn.lpstrCustomFilter = (LPSTR)NULL;
Ofn.nMaxCustFilter = 0L;
Ofn.nFilterIndex = 1L;
Ofn.lpstrFile = szFile;
Ofn.nMaxFile = sizeof(szFile);
Ofn.lpstrFileTitle = szFileTitle;
Ofn.nMaxFileTitle = sizeof(szFileTitle);
Ofn.lpstrInitialDir = (LPSTR) NULL;
Ofn.lpstrTitle = (LPSTR)NULL;
Ofn.Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
Ofn.nFileOffset = 0;
Ofn.nFileExtension = 0;
Ofn.lpstrDefExt = szDefExt;
GetOpenFileName(&Ofn);
// Open the metafile.
HENHMETAFILE hemf = GetEnhMetaFile(Ofn.lpstrFile);
// Retrieve a handle to a window device context.
HDC hDC = GetDC(hWnd);
// Retrieve the client rectangle dimensions.
GetClientRect(hWnd, &rct);
// Draw the picture.
PlayEnhMetaFile(hDC, hemf, &rct);
// Release the metafile handle.
DeleteEnhMetaFile(hemf);
// Release the window DC.
ReleaseDC(hWnd, hDC);