OLE

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ljunix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.10.2004 (Вт) 15:05

OLE

Сообщение ljunix » 26.10.2004 (Вт) 16:19

Помогите! Как мне сохранить изображение OLE-объекта в виде картинки в файл, не активируя сам OLE-объект (без использования Ole.doVerb)? :cry:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.10.2004 (Вт) 17:28

Ну раз там есть hwnd, значит, getdc и bitblt :)
Это, конечно, если проперть picture не подходит...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ljunix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.10.2004 (Вт) 15:05

Сообщение ljunix » 27.10.2004 (Ср) 0:12

А если OLE бъект большой и не помещается на экране? Или сохранить надо когда форма минимизирована? :-( Просто такая ситуация, что при активации сразу изменяется OLE объект, что крайне нежелательно.
Кстати свойство OLE1.picture становится доступным только после активации OLE :-(

ljunix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.10.2004 (Вт) 15:05

Сообщение ljunix » 27.10.2004 (Ср) 17:48

:cry: :cry: :cry: :cry: :cry: :cry: :cry:
Ну помогите пожалуйста! :-(

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 27.10.2004 (Ср) 18:11

По-моему никак, не написав аналог нужного OLE.
Может имеет смысл хранить изображение в ресурсах, например.
Т.е. ОЛЕ активизируется в любом случае, один раз при вставке контейнера, как минимум. Пока все активно сохраняешь все, что необходимо, а потом читаешь и отображаешь в оффлайне :D .
Сохранять можно в ресурсы программы или просто на диск. Пример реализации обоих вариантов есть на форуме, приводили не раз.

Или может стоит отказаться от использования ОЛЕ?Я идиот! Убейте меня, кто-нибудь!???

ljunix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.10.2004 (Вт) 15:05

Сообщение ljunix » 28.10.2004 (Чт) 10:42

Но ведь на экране он как-то отображается без активации? Как это своровать и сохранить? Но только так, что если сам объект выходит за границы экрана, чтоб все сохранилось :-( Желательно с кодом программы

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 28.10.2004 (Чт) 11:23

Я не очень силен в ОЛЕ, но понимаю это как обобщенный контейнер для хранения информации о связях между объектом(документом) и сервером(приложением), которое обрабатывает объект(документ).
Так-же контейнер может хранить и сам объект(документ), но не сервер. И при отображении, скорее всего, показывает заранее приготовленную картинку, которую создает при инициализации контейнера документом. В момент инициализации, я так предполагаю, и вызывается сервер, и в этом месте можно попытаться перехватить сервер и получить от него все, что надо или вытащить это из ОЛЕ-объекта.

Может стоит подумать об отказе от использования ОЛЕ?

ljunix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.10.2004 (Вт) 15:05

Сообщение ljunix » 28.10.2004 (Чт) 13:10

А как вытащить то?
Ну а отказаться - никак нельзя :-(

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 28.10.2004 (Чт) 14:04

:oops: Не знаю, к сожалению. А разбираться сейчас некогда :oops: Поэтому и предлагал пересмотреть концепцию. Например запускать явно сервер обработки ОЛЕ-объекта. Например если это Ексель то там есть вариант сохранения всего листа с данными в виде рисунка.

А вообще, что это за объект, ты, держиш в ОЛЕ?

ljunix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.10.2004 (Вт) 15:05

Сообщение ljunix » 28.10.2004 (Чт) 14:29

В базе данных лежат разные объекты OLE (формулы, вордовские, экселевские документы, и многое другое), нужно их преобразовать в картинки.
Проблема в том, что тот-же самый microsoft Equation отображает формулы по разному в разных версиях, а как только OLE объект активируется - он меняется - растягивается, сжимается, меняется шрифт - а этого нельзя допустить. До вызова OLE1.doverb - объект выглядит и отображается в форме нормально, но его свойство picture еще не доступно :-(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.10.2004 (Чт) 14:58

Код: Выделить всё
Private Declare Function BitBlt Lib "gdi32.dll" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Private Sub Command1_Click()
  OLE1.BorderStyle = 0
  BitBlt Picture1.hDC, 0, 0, OLE1.Width, OLE1.Height, Me.hDC, OLE1.Left, OLE1.Top, vbSrcCopy
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron