Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

Вопрос на который в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
1-95743
Alex
2002-08-18 23:50
2002.08.29
Помогите разобраться!!!


14-95971
FLIZ
2002-07-30 16:44
2002.08.29
Кто достоин носить звание


4-96025
LKBlack
2002-06-27 10:33
2002.08.29
На чистом API програмно дорисовать к иконке,на иконку есть HICON


1-95901
Teron
2002-08-18 20:25
2002.08.29
Не могу найти ответы на следующие вопросы... Может, плохо ищу?


7-95984
CrazyAngel
2002-06-14 18:18
2002.08.29
ExitWindowsEx





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский