Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как нарисовать METAFILEPICT ?


GuAV ©   (2005-11-29 01:02:00) 

Сабж. METAFILEPICT получается из HGLOBAL, возвращаемого OleGetIconOfClass.


GuAV   (2005-11-30 22:42:00) [1]


> MBo ©   (30.11.05 21:20) [6]


Спасибо.
Выяснил, что или это не та функция, или я её не так вызываю. Мне нужен значок, который виден например в Word при Вставка->Объект->Создание->[x]В виде значка.


MBo   (2005-11-30 21:20:00) [2]

Так у меня работает:

var
 h: HGLOBAL;
 m: tmetafile;
begin
 h := OleGetIconOfClass(ProgIDToClassID('Word.Document'), 'Test', False);
 Clipboard.SetAsHandle(CF_METAFILEPICT, h);
 m := tmetafile.create;
 m.Assign(clipboard);
 canvas.Draw(0, 0, m);


GuAV   (2005-11-30 20:44:00) [3]


> MBo ©   (30.11.05 7:54) [3]


> MBo ©   (30.11.05 8:02) [4]


Ничего не вышло. Мой код:

var h: HGLOBAL; P: PMetafilePict; hMF: THandle;
begin
 h :=  OleGetIconOfClass(
   ProgIDToClassID('Word.Document'), 'Test', False);
 P := GlobalLock(h);


MBo   (2005-11-30 08:02:00) [4]

или так:
HEnhMF:=CopyEnhMetafile(PGolbal.hMF,nil);


MBo   (2005-11-30 07:54:00) [5]

Через клипборд попробуй  - т.е. записать туда CF_METAFILEPICT, а считать - CF_ENHMETAFILE


GuAV   (2005-11-30 00:05:00) [6]


> PlayEnhMetaFile c METAFILEPICT.hMF


Возвращает False, RaiseLastOSError даёт:
System Error.  Code: 6.
Неверный дескриптор.


Дескриптор 0x32260922, mm = 8 = MM_ANISOTROPIC, высота и ширина многоватые для пикселей, но для сотых мм реальные, т.е. структура, похоже, правильная.


MBo   (2005-11-29 07:36:00) [7]

PlayEnhMetaFile c METAFILEPICT.hMF
или загвоздка в чем-то ином?


Наверх

Титульная страница Поиск, карта сайта Написать письмо