Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сохранить форму в виде *.BMP? winapi & bitmap 
:(
    Опции темы
Baloo
Дата 10.1.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



всем привет!

Клиент захотел сделать доку для проги. В частности меня просит сохранить все формы (порядка 200:))) в виде картинок (JPEG, BMP ... формат особой роли не играет). Собстно можно придумать способ вызвать все формы автоматически (не заполняя их данными) - но как потом сделать автоматом что то вроде "ALT + PrintScreen" (сохранить активное окно), да сохранить его в файл.

накопал вроде инфу, что можно создавать bitmap-ы самому и заполнять их с помощью функции BitBlt c
параметром dwRop=SRCCOPY.

Сам процесс еще не очень ясен, но наверно так:
1) есть MDI-формочка из которой я буду автоматом по очереди вызывать каждую форму
2) делать задержку и запускать процесс "Х", который будет "сохранять" активное окно
3) автоматом закрыть (разрушить) активное окно, чтобы можно было вызвать следущее

помогите плиз со след:
1) по первому пункту вопросов нет
2) как запускать этот процесс "Х" - отдельной прогой или как то, тут же после загрузки формы;
самое важное - увы не работал с BitBlt - т.е. дайте плиз пример
3) как разрушить окно - device context окна можно узнать вроде функцией GetDC? smile

пасиба, за то что дочитали все это до концаsmile
и еще одно спасибо заранее - за совет как это все организовать, и за конкректную помощь кодомsmile

с уважением
Baloo
PM MAIL ICQ   Вверх
Exception
Дата 10.1.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Насчет принтскрина -- я когда-то пример давал. Как я помню, его просил Flotsky. Поищи как следует.
PM   Вверх
Akina
Дата 10.1.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Можно воспользоваться Form.PrintForm. Решить вопрос печати в графический файл имхо не очень сложно - есть такие драйверы. Скажем вот этот.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Exception
Дата 10.1.2006, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Да принтскрин в сто раз проще ведь )
PM   Вверх
Baloo
Дата 10.1.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



заслать форму в файл, похоже действительно не проблема, но как насчет оставшихся вопросов:

2) как запускать этот процесс "Х" - отдельной прогой или как то, тут же после загрузки формы;
3) как разрушить окно - device context окна можно узнать вроде функцией GetDC? smile

плиз, хэлп.
PM MAIL ICQ   Вверх
Akina
Дата 10.1.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Baloo @ 10.1.2006, 14:19 Найти цитируемый пост)

как запускать этот процесс "Х" - отдельной прогой или как то, тут же после загрузки формы;

Код

Sub Main()
' Это не код, а идея кода.
For Each OneForm In Forms
  With OneForm
    .Load
    .Show vbModeless, Me
    DoEvents
    .PrintForm
    DoEvents
    .Close
  End With
  OneForm.Unload
Next
End Sub

Цитата(Baloo @ 10.1.2006, 14:19 Найти цитируемый пост)

как разрушить окно

Не как, а зачем... Unload.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Baloo
Дата 10.1.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



спасибо, Акина, за твой вариант
я еще не ставил FinePrint, но судя по описанию он не позволит автоматом сохранять на локалке каждую засланную картинку под нужным именем (а без этого никак - клиенту будет больно не удобно копаться в куче безымянных картинок) - хотя это явно менее хлопотный вариант, но если не найдется другого решения - будем делать через API.

Exception, я нашел - за чем ты меня посылалsmile большой пасиб за полноценный проект!

З.Ы.
как здорово, что парни наконец то сделали RSS - можно вести пашти онлайн беседыsmile
PM MAIL ICQ   Вверх
Baloo
Дата 17.1.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



фактически тока сейчас взялся всерьез, и возник вопрос:
Цитата
Код

For Each OneForm In Forms    
  With OneForm    
    .Show vbModeless, Me    
    '......................................
  End With    
Next 

но коллекция Forms, как я понял, включает в себя только уже выведенные формы (т.е. к которым уже применен метод .Show).

Как же перебрать все формы, которые имеются в проекте еще до их отображения?

с уважением, Baloo

Это сообщение отредактировал(а) Baloo - 17.1.2006, 15:39
PM MAIL ICQ   Вверх
Akina
Дата 17.1.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Baloo @ 17.1.2006, 16:32 Найти цитируемый пост)

Как же перебрать все формы, которые имеются в проекте еще до их отображения?

никак. однако я не вижу сложностей - отпарси файл проекта и собери имена всех форм.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Baloo
Дата 17.1.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



действительно, сам не додумалсяsmile

хотя если просто так, для расширения кругозора:
если бы имена файлов с формами не совпадали бы с соответствующим Form.Name,то пришлось бы еще и сами файлы *.frm анализить и т.д. и т.п.
явно кривой способ, неужто реально нет более красивого способа?
хотя удивительно - у экземпляра проекта например Project1. после точки только список: форм, модулей и Main.
Добавлено @ 16:27
и пардон, как отобразить формуsmile даже если знаю ее имя?

пусть есть переменная strFormName = "Form1", я же не могу сказать Forms(strFormName).Load
PM MAIL ICQ   Вверх
cardinal
Дата 17.1.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Akina
Дата 17.1.2006, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Baloo @ 17.1.2006, 17:17 Найти цитируемый пост)

явно кривой способ, неужто реально нет более красивого способа?

Красивый способ называется "прямое программирование". В смысле только как альтернатива кривому, а не что-то иное и великое.

Именование форм обязано быть системным. Скажем давать им имена Form_xxxx (где хххх - порядковый номер), причем без пропусков, или иным способом поддерживать их список... если уж очень хочется давать им женские имена, то есть Tag, есть Caption...
Кроме того, оно обязано быть документировано. То есть канву доки, которую ты сейчас со скрипом рожаешь, надо создавать параллельно с написанием самого приложения.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1020 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.