![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как нарисовать 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
или загвоздка в чем-то ином?