Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-05-02

Re: Ресурсы по 3D Max

Мир Вам, Шешунов Вадим !

Думаю, здесь нужно начать с сайта http://render.ru
я в свое время учился по урокам с этого сайта. Там же есть хороший
форум и подборка ссылок.

   2005-05-02 22:50:23 (#360532)

Re[3]: MFC+гоячие клавиши

Здравствуйте !

> VVV> Для WM_KEYDOWN/UP обычно делают в PreTranslateMessage:
>
> Огромное спасибо за столь подробный ответ!
> Кстати, можно еще один ;). Хотел узнать, как можно получить прямой
> доступ к данным CDC. То есть, хочется считать данные,
> которые там есть
> (например, выведенный текст). Есть, конечно, вариант считывать тьму
> раз с помощью GetPixel, но есть ли возможность считать сразу всё в
> свой буфер (у CDC подобных методов не обнаружил)? Заранее спасибо!

Это, конечно, лучше в новом треде обсуждать :)

Как таковой прямой доступ именно к _данным_контекста_устройства
невозможен (контекст устройства - просто структура; вся структура
лежит в област памяти режима ядра, но часть ее дублируется
в пользовательский режим; можно получить ее содержимое через
таблицу объектов GDI - вроде функция GdiQueryTable возвращает
указатель (она недокументированная)).

То что в данной задаче надо - получить данные битмапа, выбранного
в данный момент в контексте. Можно конечно и через GetPixel, но это
очень долго (GetPixel создает однопиксельный растр, копирует туда 1
пиксел исходного контекста через BitBlt (или аналогичную функцию),
потом его данные получает и возвращает результат).
Кстати, такое получение данных имеет смысл именно если
в контексте выбран битмап (то есть если создали битмап при помощи
CreateCompatibleBitmap и выбрали его в контекст). В других
случаях получить эти самые данные нельзя (например, контекст
устройства - метафайловый или принтерный).

Короче, к данным битмапа, выбранного в контексте можно получить
доступ например так:

1. Использовать функцию GetDIBits (просто получает данные в буфер
в формате аппаратно-независимого растра).
2. Создать DIB секцию нужного формата (CreateDIBSection - при вызове
CreateDIBSection как раз указывается буфер, в котором будут храниться
данные изображения). А потом скопировать в нее исходный
аппаратно-зависимый растр при помощи BitBlt.

Кстати, если задача сводится к "нарисовать при помощи GDI и получить
то, что нарисовано в виде буфера", то удобнее вообще сразу создать
DIB-секцию и выбрать ее в контекст устройства. Потом на этом контексте
рисовать. Кстати, можно и обратное действие совершать - генерить изображение

в буфере, а потом при помощи DIB секции блиттить его куда угодно.
Кстати, DIB секции - вообще самое простое решение при обработке изображений,

т.к. позволяет с буфером работать.

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4414
Возраст листа : 589 (дней)
Количество подписчиков : 514
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/360531
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-05-02 22:49:25 (#360531)

Re: З-х мерная презентация.

Glad to greet, Alexey!

You seem to have written (Friday, April 29, 2005):

AK> Я архитектор и мне часто приходится сталкиваться с невозможностью
AK> представить заказчику свое решение. Я обычно делаю картинки и анимацию
AK> в 3DS MAX, но они не передают просторанство так, как бы мне хотелось.
AK> Хорошо было бы , чтобы заказчик мог походить по объекту, как в
AK> компьютерной игре, посмотреть вверх, вниз, пройтись по лестнице.
AK> Нет ли возможности как нибудь внедрить мою трехмерную модель в
AK> компьютерную игру типа "Квейк"?

Да, многие поддерживают либо один из стандартных форматов 3дс, либо
имеют свой экспортер. Правда, полного воспроизведения не получится,
это в первую очередь об особенностях материалов, а не геометрии.
Полагаю, в данной ситуации это не особенно принципиально.

AK> Или может быть можно как-то применить ей движок отдельно?

Думаю, стоит задать этот вопрос на форумах www.gamedev.ru или
www.dev.dtf.ru, там много людей, которые работали с разными движками.

Alles Gute!

...In Code We Trust...

   2005-05-02 18:25:30 (#360451)

Re[3]: Регистрация класса CPropertySheet (С++)

VV> >>> Есть такая проблема: класс-наследник CPropertySheet является главным
VV> >>> окном приложения. Его необходимо зарегистрировать с новым именем.
VV> >> В смысле - нужно окно с именем класса окна, отличного от #32770 ?
VV> > Да-да, именно это!
VV>
VV> Как ни прискорбно говорить, похоже (имхо) этого сделать нельзя :(
VV> (я путей решения не нашел).
VV>
Писать на MFC приходилось совсем мало, поэтому заранее
прошу простить, если что не так скажу.

Чтобы перехватить все сообщения, идущие в окно CPropertySheet,
скорее всего, можно воспользоваться тем, что
CPropertySheet наследуется от CWnd.
В CWnd есть виртуальная функция PreSubclassWindow(),
которая позволяет заменить функцию окна
еще до того, как это сделает MFC.

Так что регистрация своего класса не потребуется, если целью
является полный контроль над сообщениями.

Вот только не знаю, зачем такие сложности. Не
получается воспользоваться обычными
таблицами сообщений MFC?

Номер выпуска : 4412
Возраст листа : 589 (дней)
Количество подписчиков : 514
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/360330
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-05-02 12:37:37 (#360330)