開啟增強型中繼檔並顯示其內容
本節包含一個範例,示範應用程式如何開啟儲存在磁片上的增強中繼檔,並在工作區中顯示相關聯的圖片。
此範例會使用 [ 開啟 一般] 對話方塊,讓使用者從現有檔案清單中選取增強的中繼檔。 然後它會將選取的檔案名傳遞至 GetEnhMetaFile 函式,以傳回識別檔案的控制碼。 此控制碼會傳遞至 PlayEnhMetaFile 函式,以顯示圖片。
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);