| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > как сохранить форму в виде *.BMP? |
| Автор: Baloo 10.1.2006, 10:53 |
| всем привет! Клиент захотел сделать доку для проги. В частности меня просит сохранить все формы (порядка 200:))) в виде картинок (JPEG, BMP ... формат особой роли не играет). Собстно можно придумать способ вызвать все формы автоматически (не заполняя их данными) - но как потом сделать автоматом что то вроде "ALT + PrintScreen" (сохранить активное окно), да сохранить его в файл. накопал вроде инфу, что можно создавать bitmap-ы самому и заполнять их с помощью функции BitBlt c параметром dwRop=SRCCOPY. Сам процесс еще не очень ясен, но наверно так: 1) есть MDI-формочка из которой я буду автоматом по очереди вызывать каждую форму 2) делать задержку и запускать процесс "Х", который будет "сохранять" активное окно 3) автоматом закрыть (разрушить) активное окно, чтобы можно было вызвать следущее помогите плиз со след: 1) по первому пункту вопросов нет 2) как запускать этот процесс "Х" - отдельной прогой или как то, тут же после загрузки формы; самое важное - увы не работал с BitBlt - т.е. дайте плиз пример 3) как разрушить окно - device context окна можно узнать вроде функцией GetDC? пасиба, за то что дочитали все это до конца и еще одно спасибо заранее - за совет как это все организовать, и за конкректную помощь кодом с уважением Baloo |
| Автор: Exception 10.1.2006, 11:02 |
| Насчет принтскрина -- я когда-то пример давал. Как я помню, его просил Flotsky. Поищи как следует. |
| Автор: Akina 10.1.2006, 11:54 |
| Можно воспользоваться Form.PrintForm. Решить вопрос печати в графический файл имхо не очень сложно - есть такие драйверы. Скажем http://www.fineprint.com/products/fineprint/index.html. |
| Автор: Exception 10.1.2006, 12:08 |
| Да принтскрин в сто раз проще ведь ) |
| Автор: Baloo 10.1.2006, 13:19 |
| заслать форму в файл, похоже действительно не проблема, но как насчет оставшихся вопросов: 2) как запускать этот процесс "Х" - отдельной прогой или как то, тут же после загрузки формы; 3) как разрушить окно - device context окна можно узнать вроде функцией GetDC? плиз, хэлп. |
| Автор: Baloo 10.1.2006, 15:45 |
| спасибо, Акина, за твой вариант я еще не ставил FinePrint, но судя по описанию он не позволит автоматом сохранять на локалке каждую засланную картинку под нужным именем (а без этого никак - клиенту будет больно не удобно копаться в куче безымянных картинок) - хотя это явно менее хлопотный вариант, но если не найдется другого решения - будем делать через API. Exception, я нашел - за чем ты меня посылал З.Ы. как здорово, что парни наконец то сделали RSS - можно вести пашти онлайн беседы |
| Автор: Baloo 17.1.2006, 15:32 | ||||
фактически тока сейчас взялся всерьез, и возник вопрос:
но коллекция Forms, как я понял, включает в себя только уже выведенные формы (т.е. к которым уже применен метод .Show). Как же перебрать все формы, которые имеются в проекте еще до их отображения? с уважением, Baloo |
| Автор: Akina 17.1.2006, 15:58 | ||
никак. однако я не вижу сложностей - отпарси файл проекта и собери имена всех форм. |
| Автор: Baloo 17.1.2006, 16:17 |
| действительно, сам не додумался хотя если просто так, для расширения кругозора: если бы имена файлов с формами не совпадали бы с соответствующим Form.Name,то пришлось бы еще и сами файлы *.frm анализить и т.д. и т.п. явно кривой способ, неужто реально нет более красивого способа? хотя удивительно - у экземпляра проекта например Project1. после точки только список: форм, модулей и Main. Добавлено @ 16:27 и пардон, как отобразить форму пусть есть переменная strFormName = "Form1", я же не могу сказать Forms(strFormName).Load |
| Автор: cardinal 17.1.2006, 22:05 |
| http://forum.vingrad.ru/index.php?showtopic=16767 |
| Автор: Akina 17.1.2006, 23:43 |
| Красивый способ называется "прямое программирование". В смысле только как альтернатива кривому, а не что-то иное и великое. Именование форм обязано быть системным. Скажем давать им имена Form_xxxx (где хххх - порядковый номер), причем без пропусков, или иным способом поддерживать их список... если уж очень хочется давать им женские имена, то есть Tag, есть Caption... Кроме того, оно обязано быть документировано. То есть канву доки, которую ты сейчас со скрипом рожаешь, надо создавать параллельно с написанием самого приложения. |