WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Помогите! Пропадаю! (DirectX & VC++)

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Помогите! Пропадаю! (DirectX & VC++)
Tramp опубликован 24-01-2001 03:15 MSK   Click Here to See the Profile for Tramp   Click Here to Email Tramp  
Взялся изучать VC++ и застрял. :((((
Проблема в следующем: Нужно написать программу устанавливающую режим 640х480х16bit и рисующую в этом режиме простую анимацию. Вот какой набросок у меня получился:

#include "stdafx.h"
#include <ddraw.h>
LPDIRECTDRAW lpDD;
BOOL DirectDrawInit(HWND hwnd)
{
HRESULT ddrval;
ddrval = DirectDrawCreate(NULL, &lpDD, NULL);
if( ddrval != DD_OK )
{
MessageBox(NULL, "ошибка 1", "", MB_OK);
return FALSE;
}
ddrval = lpDD->SetCooperativeLevel(hwnd, DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
if( ddrval != DD_OK )
{
lpDD->Release();
MessageBox(NULL, "ошибка 2", "", MB_OK);
return FALSE;
}
ddrval = lpDD->SetDisplayMode(640, 480, 16);
if( ddrval != DD_OK )
{
lpDD->Release();
MessageBox(NULL, "ошибка 3", "", MB_OK);
return FALSE;
}
return TRUE;
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hwnd=GetDesktopWindow();
DirectDrawInit(hwnd);
return 0;
}

Выдает: "ошибка 2", т.е. SetCooperativeLevel() не хочет работать. :( Я так понимаю из-за переменной hwnd, указателя на окно. Но где ее взять? DeskTop ей не нравится, NULL - тоже. Создать окно? Но ведь мне не нужен никакой Windows интерфейс, кроме работы с плоской графикой (не в окне) и файлами!
Исправте пожалуйста эту программу, или пришлите свой работающий исходник. Желательно, чтобы было как можно меньше различных #include <хрен_знает_чего.h> и т.д.
Для меня и так этот Visual С++ темный лес. Впрочем собственно C++ я знаю, но под Windows ничего, кроме баз данных на Paradox не писал. Помогите plz. А то я уже неделю читаю различные умные книги, а в них во всех рассматривается что-то вроде написания своей версии Word. Очень жду Вашей помощи. С уважением, Игорь.

Paul опубликован 24-01-2001 15:17 MSK     Click Here to See the Profile for Paul  Click Here to Email Paul     
Извини сильно ковыряться не хочется, поэтому почитай MSDN
hWnd
Window handle used for the application. Set to the calling application's top-level window handle (not a handle for any child windows created by the top-level window). This parameter !!!!!!! can be NULL when the DDSCL_NORMAL flag is specified in the dwFlags parameter.
(это тебе ссылка из него)
Wolfheart опубликован 25-01-2001 17:41 MSK     Click Here to See the Profile for Wolfheart  Click Here to Email Wolfheart     
Окошко-то увы создать придется; а вообще советую разобраться в общих чертах со всем этим и избавиться от геммороя путем использования классной библиотеки NukeDX
(www.nukesoftware.dk) на основе DirectX7 -
отличная, грамотно написанная вещь, причем очень простая в изучении
Bird опубликован 26-01-2001 11:05 MSK     Click Here to See the Profile for Bird  Click Here to Email Bird     
Попробовал запустить твою прогу, предварительно убрав "stdafx.h"(для чистого API он не нужен)и добавив в список используемых библиотек ddraw.lib.
SetCooperativeLevel работает.
Экранчик переводится в 640 на 480 на некоторое время, а потом все.
Рекомедуемая лит-ра:
Мешков, Тихомиров, "Visual C++ и MFC"
SkyNet опубликован 06-02-2001 01:04 MSK     Click Here to See the Profile for SkyNet  Click Here to Email SkyNet     
Да, окно все-таки придется создать,э
так как это именно тот способ, которым
Винда отслеживает input-сообщения твоей программе
меня другое интересует, как ты собираешься
синхронизировать свою анимацию ?
WM_TIMER'ом что-ли?

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.