Страница: 1 | 2 |
Вопрос: интерфейсы, COM
Добавлено: 28.09.10 22:23
Автор вопроса: Winand | Web-сайт:
в продолжение темы об интерфейсах http://www.vbnet.ru/forum/show.aspx?id=200889
А как же создать инстанс IDropSource или IDropTarget?
Если их IID известны
Private Const IID_IDropTarget As String = "{00000122-0000-0000-C000-000000000046}"
Кто-то что-то знает об этом всём?
Ответы
Всего ответов: 25
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 29.09.10 00:02
Вот вечно у тебя не все как у людей.. вечно ты с какой нибудь фигней пристаешь... Нет бы спросил как на кнопочке цвет задать, так нет же.. IDropSource ему подавай..
Насколько я понимаю всю эту кухню, реализации этих интерфейсов нет и быть не может.. Следовательно создать их ты тоже не можешь и вот почему:
Эти интерфейсы должны реализовывать объекты предназначенные для операций перетаскивания.. Ты сам их должен писать.. К примеру, реализацию IDropTarget должен иметь объект, который ты будешь использовать в CoLockObjectExternal для его блокировки и дальнейшей передачи в RegisterDragDrop вместе с хендлом окна-приемника. То есть при старте формы ты должен проделать все эти манипуляции с окном, чтоб система восприняла твое окно как приемник на который можно сбрасывать нечто, реализующее интерфейс IDataObject.
Если я не ошибаюсь то для перетаскивания нужны 4 интерфейса, описания их легко найти в MSDN, примеров реализации на срр и дельфях тоже вроде вроде видел..
Только вот вопрос.. нафига тебе все это?
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 29.09.10 00:29
Вопрос в том, поддерживает ли VB6 имплементацию интерфейсов?
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 29.09.10 00:48
На сколько понимаю не поддерживает. (эх опять сам себе сейчас начну советы давать
Тут либо TLB нужно (если не ошибаюсь оно потом вкомпилится в экзешник) пример чего (даже для idropsource) я видел сегодня тут http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=61324&lngWId=1
Либо написать реализацию в цппшной библиотеке и по запросу программы создавать инстанс и возвращать указатель. (Так вообще возможно?)
спасибо EROS, я прозрел искал пример того, чего не может быть, неблагодарное дело)
Номер ответа: 4
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #4
Добавлено: 29.09.10 00:49
*Точнее получается, что vb6 поддерживает имплементацию ифейсов, но нужен тлбшник, чтобы показать что имплементим
Номер ответа: 5
Автор ответа:
Eugy
Вопросов: 0
Ответов: 73
Профиль | | #5
Добавлено: 29.09.10 05:00
Так и скомпилируй tlb из отдельного *.idl безо всякой реализации.
а потом в модуле класса VB реализация: Implements ImyFace
Или я не правильно понял вопрос?
Номер ответа: 6
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #6
Добавлено: 29.09.10 10:39
Вопрос в том, поддерживает ли VB6 имплементацию интерфейсов?
"Типа поддерживает."
Номер ответа: 7
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 29.09.10 11:01
а потом в модуле класса VB реализация: Implements ImyFace
С имплементацией вроде понятно.. хоть и через анус, но возможность, судя по всему, есть.. А сможет ли он в 6ке получить указатель на инстанс этого имлементирующего класса? Или тоже через анус?
Может правда проще все это в cpp-шной либе сделать ему?
Номер ответа: 8
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #8
Добавлено: 29.09.10 17:06
1. Инстанс интерфейса - нонсенс.
2. Имплементация интерфейсов поддерживается полностью, ибо COM.
3. Если получен указатель на IUnknown (для VB6 справедливо всегда), либо на любой другой интерфейс экземпляра класса, который имплементит какой-либо интерфейс - через него можно получить указатель на любой поддерживаемый классом интерфейс. Одно из основополагающих правил COM. В VB6 реализуется через простой Set.
Номер ответа: 9
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #9
Добавлено: 01.10.10 04:09
Выяснилось, что ц++ спасет быстрее. Для решения поставленной в моей предыдущей теме задачи - перетаскивание файла ИЗ программы - оказалось достаточно такого вот кода http://pastebin.mozilla-russia.org/107138
Нагло взятого из этой статьи http://blogs.msdn.com/b/oldnewthing/archive/2004/12/06/275659.aspx
Скомпилил в dll, вызвал бейстком dragout(hwnd) и всё.
Номер ответа: 10
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #10
Добавлено: 01.10.10 10:27
Я так и думал, что с цпп быстрее будет.. В любом случае, кроссафчег, что победил!
Номер ответа: 11
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #11
Добавлено: 01.10.10 11:12
Если для реализации двух интерфейсов отдельная сборка на другом языке программирования - это быстрее... то я - Элеонора Рузвельт. Если лениво объявлять интерфейсы самому - есть уйма готовых tlb, наподобие olelib, где эти интерфейсы уже "заготовлены" (при этом поставляется с исходниками). Подключаешь, компилишь все в одной сборке - и никаких левых dll, по штуке на интерфейс...
Номер ответа: 12
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #12
Добавлено: 01.10.10 12:56
ну а где же ты, весь такой красивый, раньше был? Чего же не подсказал?
ТС не просил написать за него код, более того он сам перерыл пол инета в поисках инфы.. Он лишь просил подсказать как подобные вещи на VB6 сделать..
А после того, как он все сам сделал (возможно и не совсем верно) приходишь ты и говоришь, что креатиф - гавно, а афтар - ... ну ты понял.
Номер ответа: 13
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #13
Добавлено: 01.10.10 14:08
Аффтар лишь просил подсказать как создать инстанс интерфейса. No comments.
По остальной части было сказано вполне достаточно. Осталось только
Номер ответа: 14
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #14
Добавлено: 01.10.10 16:49
Winand, один вопрос.. ты понимаешь суть и назначение интерфейсов, или лучше объяснить на примерах?.. Просто понимание интерфейсов - это реально очень важный момент в ООП..
Номер ответа: 15
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #15
Добавлено: 01.10.10 16:51
Если не секрет, а чем плох VB-шный OLEDrag?