alibek писал(а):Простейший — PaintPicture.
Хакер писал(а):IPictureDisp::Render?
Хакер писал(а):Давай сначала разберёмся.
И теперь два вопроса:
1) Исходная картинка: это объект именно класса StdPicture или просто объект какого-то произвольного класса (в т.ч. и StdPicture), поддерживающий IPicture(Disp)?
2) Выходная картинка обязана быть именно объектом класса StdPicture, или объектом любого класса (в том числе StdPicture, но может быть даже своего!), поддерживающим IPicture(Disp)?
Хакер писал(а):1) Исходная картинка: это объект именно класса StdPicture или просто объект какого-то произвольного класса (в т.ч. и StdPicture), поддерживающий IPicture(Disp)?
2) Выходная картинка обязана быть именно объектом класса StdPicture, или объектом любого класса (в том числе StdPicture, но может быть даже своего!), поддерживающим IPicture(Disp)?
arthur2 писал(а):1 А какие ещё объекты его поддерживают (из известных)?
arthur2 писал(а):Пусть "даже своим" Как сделать этот "даже свой" объект?
arthur2 писал(а):и что есть Disp
дальше куда?
Set Me.Picture = New VeryNonStdPicture
Implements IPictureDisp
(только больно не пинай за "русский" бейсик - другого под рукой нетуОшибка компелляции:
Неверное взаимодействие для Реализаций: Взаимодействие содержит области данных<дальше ничего>
Как? Писать Тлб, в которой вместо эни объявить лонг?Хакер писал(а):Надо свой определить, с тем же IID-ом, но с отличающимся определением.
arthur2 писал(а):Как? Писать Тлб, в которой вместо эни объявить лонг?
куда после этого - ума не прилажу - представляю на уровне каких-то смутных ощущений
Что это? Какой из способов - не уточняетсяНеверное взаимодействие для Реализаций: способ имеет только выходной LCID параметр
typedef short VARIANT_BOOL;
VARIANT_TRUE = 0xFFFF;
VARIANT_FALSE = 0x0000;
Dim p As myTlb.IPicture
Set p = Me.Picture
Dim c As cMyPic
Set c = p
Dim p As myTlb.IPicture
Set p = New cMyPic
Dim p As myTlb.IPicture
Set p = Me.Picture
Set pic1.Picture = p
Dim p As myTlb.IPicture
Set p = New cMyPic
Set pic1.Picture = p
arthur2 писал(а):о почему тогда первый и второй вариант работают?
Хакер писал(а):Потому что класс StdPicture реализует интерфейс IPicture, а твой класс (с неправильной реализацией) здесь вообще никак не участвует.
Как тогда может быть неправильная реализация у правильного интерфейса?
Private Sub IPicture_Render(...)
' Пишем тут всякую чушь
End Sub
arthur2 писал(а):Так что откуда берется StdPicture, мне вообще не понятно
И как же все-таки сделать правильную реализацию?И как же все-таки сделать правильную реализацию?
Выходит, если написать не чушь, то всё заработает? Я почему-то думал, что даже если вообще ничего не писать, оставив все методы пустыми, то при условии, что интерфейс "тот самый" - со всеми методами и с правильным идентификатором - по меньшей мере само присвоение должно получиться.Хакер писал(а):
- Код: Выделить всё
Private Sub IPicture_Render(...)
' Пишем тут всякую чушь
End Sub
Раз картинки через IPicture из моей тлб загружаются,
Выходит, если написать не чушь, то всё заработает? Я почему-то думал, что даже если вообще ничего не писать, оставив все методы пустыми, то при условии, что интерфейс "тот самый" - со всеми методами и с правильным идентификатором - по меньшей мере само присвоение должно получиться.
Хакер писал(а):Чё? Где такое?
Хакер писал(а):Есть Set-хендлер, а что в нём — угадай сам.
Dim p As myTlb.IPicture
Set p = LoadPicture("test.bmp")
Set Me.Picture = p
Или всё равно нет?Артур писал(а):картинки через IPicture из моей тлб загружаются
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 95