Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Вопрос на который в Delphi Help я не нашел ответа   Найти похожие ветки 

 
Dick ©   (2002-08-17 12:11) [0]

Требуется повернуть Enhanced Metafile, но вопрос не в этом. Лезем в win32 Sdk, выкапываем функцию EnumEnhMetafile.

BOOL EnumEnhMetaFile(
HDC hdc,
HENHMETAFILE hemf,//handle of enhanced metafile
ENHMFENUMPROC lpEnhMetaFunc,// address of callback function
LPVOID lpData,// address of callback-function data
CONST RECT * lpRect// address of bounding rectangle
);

C ней все понятно. Потом создаем callback function
для обработки записи метафайла.

int CALLBACK EnhMetaFileProc(
HDC hDC, //handle of device context
HANDLETABLE FAR *lpHTable,//address of metafile handle table
ENHMETARECORD FAR *lpEMFR, // address of metafile record
int nObj, // count of objects
LPARAM lpData // address of optional data
);

Здесь тоже понятно почти все. Смотрим параметр ENHMETARECORD.
Находим в Windows.pas описание соответствующего типа.

PEnhMetaRecord = ^TEnhMetaRecord;
TEnhMetaRecord = packed record
iType: DWORD; { Record type EMR_XXX}
nSize: DWORD; { Record size in bytes}
dParm: array[0..0] of DWORD; { Parameters}
end;

С первыми двумя полями - все ясно. Смысл последнего - тоже понятен - задать параметры для фунции отрисовки метафайла(Specifies an array of parameters passed to the GDI function identified by the record), но КАКИМ ОБРАЗОМ можно получить доступ к этим самым параметрам, и ЧТО означает синтаксис - array[0..0] of xxx - не знаю. Заранее благодарен )).


 
Набережных С.   (2002-08-17 14:28) [1]


> ЧТО означает синтаксис - array[0..0] of xxx

Массив нефиксированной длины. И доступ соответственно.


 
Dick ©   (2002-08-18 01:33) [2]

Примерчик можно, а то не получается.


 
Набережных С.   (2002-08-18 09:28) [3]

Что именно не получается? Такая запись означает, что вслед за полем nSize расположено энное количество четырехбайтных слов и обращаться к ним можно, например, так: dParm[3]. Количество их можно выяснить через значение nSize. Судя по комментарию, там содержится размер в байтах всего рекорда, хотя я с этой структурой не работал, так что проверь сам, может это и размер массива, хелп иногда врет.
Только перед обращением нужно выключить проверку диапазона, а после опять включить.
Если не получится, то покажи как делаешь. Часов через 10 я еще сюда загляну, если раньше кто-нибудь не поможет.



Страницы: 1 вся ветка

Текущий архив: 2002.08.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
1-95795
^Sanya
2002-08-19 14:59
2002.08.29
Опять и опять....


1-95763
Olorin
2002-08-19 13:59
2002.08.29
Как реагировать на хот кей только при активной форме?


1-95738
Aszbed
2002-08-19 06:14
2002.08.29
Расположение форм


1-95804
unfam
2002-08-20 02:47
2002.08.29
Про память


1-95739
Nazareth
2002-08-18 23:44
2002.08.29
Teechart 5.02 - опять проблемы