本节包含一个示例,演示应用程序如何打开存储在磁盘上的增强型图元文件,并在客户区域中显示关联的图片。
该示例使用“打开”公共对话框以使用户能够从现有文件列表中选择增强型图元文件。然后将所选文件的名称传递给GetEnhMetaFile函数,该函数返回一个标识文件的句柄。该句柄被传递给PlayEnhMetaFile函数以显示图片。
LoadString(hInst,IDS_FILTERSTRING,
(LPSTR)szFilter, sizeof(szFilter));
/*
*替换'%'字符串分隔符的出现
*与'\\ 0'。
*/
for (i=0; szFilter[i]!='\0'; i++)
if (szFilter[i] == '%')
szFilter[i] = '\0';
LoadString(hInst,IDS_DEFEXTSTRING,
(LPSTR)szDefExt, sizeof(szFilter));
/*
*使用OpenFilename公共对话框
*以获得所需的文件名。
*/
szFile[0] = '\0';
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);
/ *打开图元文件。*/
hemf = GetEnhMetaFile(Ofn.lpstrFile);
/ *检索窗口DC的句柄。*/
hDC = GetDC(hWnd);
/ *检索客户矩形维度。*/
GetClientRect(hWnd, &rct);
/ *画画。*/
PlayEnhMetaFile(hDC, hemf, &rct);
/ *释放元文件句柄。*/
DeleteEnhMetaFile(hemf);
/ *释放窗口DC。*/
ReleaseDC(hWnd, hDC);