Главная страница
    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.45 MB
Время: 0.007 c
1-95832
Nikson
2002-08-12 12:55
2002.08.29
Работа с компонентом StringGrid


1-95790
Просто прохожий
2002-08-16 21:57
2002.08.29
Освобождение памяти


1-95880
ioRaptor
2002-08-18 14:11
2002.08.29
Как с помощю UpDown прокручивать вещественные числа


14-95980
Aga
2002-08-03 07:55
2002.08.29
ip


3-95652
Не зарегистрированный чайник
2002-08-07 23:17
2002.08.29
Выборка данных!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский