Главная страница
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.017 c
4-96024
v0id
2002-06-25 22:04
2002.08.29
Внедрение DLL


4-96005
MikeZ
2002-06-24 02:00
2002.08.29
Проверить перекрывание окна


3-95724
NDR
2002-08-09 14:09
2002.08.29
F1,F2,F3


1-95784
Magystr
2002-08-18 20:32
2002.08.29
Как сделать подсветку синтакса в RichEdit’е?


14-95963
demona
2002-08-04 09:35
2002.08.29
Help. Помогите с алгоритмом