Original Post
I''m a newbie and I just can''t get a window to open.
Here''s the code but all it seems to do is make the screen flicker.
What am I doing wrong. The Lib files are dxguid and ddraw.
#include <iostream>
#include <ddraw.h>
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam,
LPARAM lParam);
LPDIRECTDRAW7 lpDD;
LPDIRECTDRAWSURFACE7 lpPrimary;
LPDIRECTDRAWSURFACE7 lpBack;
DDSURFACEDESC2 ddsd;
DDSCAPS2 ddcaps;
HRESULT ddrval;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst,
LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = LoadIcon(NULL, IDI_EXCLAMATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "Isometric";
wc.hIconSm = LoadIcon(NULL, IDI_EXCLAMATION);
//register the new class
RegisterClassEx(&wc);
//create a window
hWnd = CreateWindowEx(
NULL,
"DDraw Success",
"DDraw Success",
WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL
);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
switch(nMsg)
{
case WM_CREATE:
ddrval = DirectDrawCreateEx(NULL,(void **)&lpDD,IID_IDirectDraw7, NULL);
ddrval = lpDD->SetCooperativeLevel(hWnd, DDSCL_NORMAL);
ddrval = lpDD->SetDisplayMode(1024,768,16,0,0);
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;
ddrval = lpDD->CreateSurface(&ddsd, &lpPrimary, NULL);
ZeroMemory(&ddcaps,sizeof(ddcaps));
ddcaps.dwCaps = DDSCAPS_BACKBUFFER;
ddrval = lpPrimary->GetAttachedSurface(&ddcaps, &lpBack);
break;
case WM_DESTROY:
KillTimer(hWnd, 1);
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd, nMsg, wParam, lParam));
}
return 0;
}