![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Deutsch |
|
|||
|
Unregistered |
Как связан HDC, получаемый процедурой GetDC() у первичной поверхности объекта DirectDraw и DC, являющийся аргументом функции OnPaint в приложении, созданом при помощи MFC? Проблема состоит в замене рисования при помощи Windows GUI рисованием при помощи DirectDraw.
|
|||
|
||||
| Ridat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 21.6.2003 Репутация: нет Всего: нет |
В чем конкретно проблема?
При работе с DD я работал именно DD + MFC. В этом направление, насколько я понял, важен стиль окна и не плохо бы использовать BackSurface. Пишешь в нее и меняешь (LpDD->Filp). Что касается HDC, то получаешь его GetDC и с помощью GDI рисуешь. Чувствую, что ты хотел рисовать с MFC, я не пробовал, но на уровне интуиции, скорее всего дескрипторы разные, хотя есть возможность подключить HDC к DD что-то вроде AttachDC(?) В Доке по DX это есть. |
|||
|
||||
| kruchinin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 19.4.2003 Репутация: нет Всего: нет |
Никак не связан. При создании поверхности создается совершенно другой интерфейс
|
|||
|
||||
| Deutsch |
|
|||
|
Unregistered |
Проблема состоит в следующем:
Есть некий алгоритм счета, который считает и проецирует 3D поверхность, по таймеру поверхность изменяется. Каждый элемент поверхности (четырехугольник или треугольник) прорисовывается самостоятельно в процедуре собственного класса, получая при этом подготовленный DC из процедуры OnPaint. При программировании этой процедуры в Windows GUI все сильно мигает. Хотелось бы получить DC от объекта DirectDrawSurface->GetDC() подготовить и рисовать. Можно при этом использывать два объекта DirectDrawSurface первичный и буферный. Попутный вопрос: Процедура CreateSurface возвращает значение -2005532447, чему это сответствует из списка DDERR_INCOMPATIBLEPRIMARY DDERR_INVALIDCAPS DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DDERR_INVALIDPIXELFORMAT DDERR_NOALPHAHW DDERR_NOCOOPERATIVELEVELSET DDERR_NODIRECTDRAWHW DDERR_NOEMULATION DDERR_NOEXCLUSIVEMODE DDERR_NOFLIPHW DDERR_NOMIPMAPHW DDERR_NOOVERLAYHW DDERR_NOZBUFFERHW DDERR_OUTOFMEMORY DDERR_OUTOFVIDEOMEMORY DDERR_PRIMARYSURFACEALREADYEXISTS DDERR_UNSUPPORTEDMODE и где это можно посмотреть? |
|||
|
||||
| Deutsch |
|
|||
|
Unregistered |
Проблема действительно решается, если получить от поверхности HDC и рисовать при помощи функий Windows API, которым только HDC и нужен. Для рисования в MFC нужно как-то пристегнуть к полученному HDC полноценный объект класса CDC, связанный с окном CChildView. Кто знает как, подскажите.
Спасибо Ridatу за полезный комментарий. |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
CDC::Attache
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |