Главная страница
    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.007 c
14-95981
BAY
2002-08-02 20:33
2002.08.29
Visual Studio


14-95950
AL2002
2002-08-02 19:27
2002.08.29
Как запаролить CD?


1-95866
dimonf
2002-08-17 17:42
2002.08.29
Как отменить перетаскивание и минимизирование MDI окна?


8-95916
Chir
2002-04-20 21:15
2002.08.29
Проигрывание *.bik файлов


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