Zdravím, som tu dlhšie, ale nezvykol som sa aktívnejšie zapájať do diskusíi
No teraz by som sa práve potreboval poradiť. Snažím sa vytvoriť najjednoduchšiu DirectDraw aplikáciu, teda len prázdne čierne fullscreen okno, ale vypisuje mi mnou definovanú chybu pri registrácii okna, alebo teda metódy wc. Poviem pravdu, neviem v čom robím chybu, ale skúšal som už kadečo, je to niečo s os? Prosím ak by tu bol niekto, kto by mal s týmto skúsenosť, bol by som vďačný za pomoc.
Prikladám celú inicializáciu, v ktorej predpokladám, že je chyba:
Kód:
bool CWindow::Initialize(void)
{
DDSURFACEDESC2 ddsd;
DDSCAPS2 ddscaps;
WNDCLASS wc;
ZeroMemory(&wc, sizeof(wc));
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.hInstance = GetModuleHandle(NULL);
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH);
wc.lpszClassName = APP_NAME;
if(!RegisterClass(&wc))
{
sprintf(g_tcError,TEXT("Chyba pri registrácii okna aplikácie!"));
return(false);
}
if(!(m_hWnd = CreateWindowEx(0, APP_NAME, APP_NAME, WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, wc.hInstance, NULL)))
{
sprintf(g_tcError,TEXT("Chyba pri vytváraní okna aplikácie!"));
return(false);
}
if((DirectDrawCreateEx(NULL, (void**)&m_lpDD, IID_IDirectDraw7, NULL))!=DD_OK)
{
sprintf(g_tcError,TEXT("Nedá sa vytvoriť objekt DirectDraw!"));
return(false);
}
if((m_lpDD->SetCooperativeLevel(m_hWnd, DDSCL_ALLOWREBOOT|DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN))!=DD_OK)
{
sprintf(g_tcError,TEXT("Nedajú sa nastaviť vlastnosti DirectDraw aplikácie!"));
return(false);
}
if((m_lpDD->SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, 0, 0))!=DD_OK)
{
sprintf(g_tcError,TEXT("Nedá sa nastaviť rozlíšenie obrazovky!"));
return(false);
}
GetClientRect(m_hWnd, &m_ddRect);
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
if((m_lpDD->CreateSurface(&ddsd, &m_lpDDFront, NULL))!=DD_OK)
{
sprintf(g_tcError,TEXT("Nedá sa vytvoriť front buffer!"));
return(false);
}
ZeroMemory(&ddscaps, sizeof(ddscaps));
ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
if((m_lpDDFront->GetAttachedSurface(&ddscaps, &m_lpDDBack))!=DD_OK)
{
sprintf(g_tcError,TEXT("Nedá sa vytvoriť back buffer!"));
return(false);
}
ShowWindow(m_hWnd, SW_SHOW);
UpdateWindow(m_hWnd);
return(true);
}