Een afbeelding weergeven en opslaan in een uitgebreid metabestand
Deze sectie bevat een voorbeeld waarin het maken van een afbeelding en het proces voor het opslaan van de bijbehorende records in een metabestand wordt gedemonstreerd. Het voorbeeld geeft een afbeelding weer op het scherm of slaat deze op in een metabestand. Als er een contextgreep voor een weergaveapparaat wordt gegeven, wordt er een afbeelding naar het scherm getekend met behulp van verschillende GDI-functies. Als er een verbeterde metabestandapparaatcontext wordt gegeven, wordt dezelfde afbeelding opgeslagen in het verbeterde metabestand.
void DrawOrStore(HWND hwnd, HDC hdcMeta, HDC hdcDisplay)
{
RECT rect;
HDC hDC;
int fnMapModeOld;
HBRUSH hbrOld;
// Draw it to the display DC or store it in the metafile device context.
if (hdcMeta)
hDC = hdcMeta;
else
hDC = hdcDisplay;
// Set the mapping mode in the device context.
fnMapModeOld = SetMapMode(hDC, MM_LOENGLISH);
// Find the midpoint of the client area.
GetClientRect(hwnd, (LPRECT)&rect);
DPtoLP(hDC, (LPPOINT)&rect, 2);
// Select a gray brush.
hbrOld = SelectObject(hDC, GetStockObject(GRAY_BRUSH));
// Draw a circle with a one inch radius.
Ellipse(hDC, (rect.right/2 - 100), (rect.bottom/2 + 100),
(rect.right/2 + 100), (rect.bottom/2 - 100));
// Perform additional drawing here.
// Set the device context back to its original state.
SetMapMode(hDC, fnMapModeOld);
SelectObject(hDC, hbrOld);
}