Составители:
Далее остается только разблокировать память и передать дескриптор
метафайла в буфер обмена.
GlobalUnlock( hGMem ) ;
TransferToClipboard( hwnd, hGMem, CF_METAFILEPICT
);
Чтение метафайла. Чтение метафайла начинается с открытия буфера
обмена, запроса дескриптора блока памяти, в котором содержится метафайл, и
последующей блокировки этой области.
OpenClipboard( hwnd );
hGMem = GetClipboardData( CF_METAFILEPICT );
lpMFP = (LPMETAFILEPICT) GlobalLock( hGMem );
Теперь переменная lpMFP содержит указатель блока памяти, в котором
находится метафайл, или, точнее, структуры METAFILEPICT,
которая, в свою
очередь, хранит указатель собственно метафайла.
Но прежде чем метафайл будет воспроизведен, необходимо решить ряд
дополнительных задач, начав с сохранения текущего контекста устройства.
SaveDC( hdc );
CreateMapMode( hdc, lpMFP, cxWnd, cyWnd ) ;
Далее информация, которая содержится в структуре METAFILEPICT,
передается на обработку функции CreateMapMode. Это делается потому, что
расшифровка информации о режиме отображения и о размерах - задача
довольно сложная.
Функция CreateMapMode вызывается с четырьмя параметрами, которые
задают дескриптор контекста устройства для приложения, указатель структуры
METAFILEPICT
и размеры окна приложения.
BOOL CreateMapMode( HDC hdc, LPMETAFILEPICT lpMFP,
int cxWnd, int cyWnd )
{
long lMapScale;
int nHRes, nVRes, nHSize, nVSize;
SetMapModet hdc, lpMFP->mm );
if( lpMFP->mm!=MM_ISOTROPIC&&lpMFP->mm!= MM_ANISOTROPIC
)
return( TRUE ) ;
Сначала функция CreateMapMode устанавливает режим отображения,
заданный для метафайла. Если задано какое-либо другое значение, не
39
Далее остается только разблокировать память и передать дескриптор метафайла в буфер обмена. GlobalUnlock( hGMem ) ; TransferToClipboard( hwnd, hGMem, CF_METAFILEPICT ); Чтение метафайла. Чтение метафайла начинается с открытия буфера обмена, запроса дескриптора блока памяти, в котором содержится метафайл, и последующей блокировки этой области. OpenClipboard( hwnd ); hGMem = GetClipboardData( CF_METAFILEPICT ); lpMFP = (LPMETAFILEPICT) GlobalLock( hGMem ); Теперь переменная lpMFP содержит указатель блока памяти, в котором находится метафайл, или, точнее, структуры METAFILEPICT, которая, в свою очередь, хранит указатель собственно метафайла. Но прежде чем метафайл будет воспроизведен, необходимо решить ряд дополнительных задач, начав с сохранения текущего контекста устройства. SaveDC( hdc ); CreateMapMode( hdc, lpMFP, cxWnd, cyWnd ) ; Далее информация, которая содержится в структуре METAFILEPICT, передается на обработку функции CreateMapMode. Это делается потому, что расшифровка информации о режиме отображения и о размерах - задача довольно сложная. Функция CreateMapMode вызывается с четырьмя параметрами, которые задают дескриптор контекста устройства для приложения, указатель структуры METAFILEPICT и размеры окна приложения. BOOL CreateMapMode( HDC hdc, LPMETAFILEPICT lpMFP, int cxWnd, int cyWnd ) { long lMapScale; int nHRes, nVRes, nHSize, nVSize; SetMapModet hdc, lpMFP->mm ); if( lpMFP->mm!=MM_ISOTROPIC&&lpMFP->mm!= MM_ANISOTROPIC ) return( TRUE ) ; Сначала функция CreateMapMode устанавливает режим отображения, заданный для метафайла. Если задано какое-либо другое значение, не 39
Страницы
- « первая
- ‹ предыдущая
- …
- 37
- 38
- 39
- 40
- 41
- …
- следующая ›
- последняя »