directdraw

Started by
0 comments, last by jim678 22 years, 4 months ago
when ever i run this code,i get these three erors C:\mssdk\samples\Multimedia\DDraw\src\DDex1\ddex1.cpp(39) : error C2146: syntax error : missing '';'' before identifier ''g_pDD'' C:\mssdk\samples\Multimedia\DDraw\src\DDex1\ddex1.cpp(39) : error C2501: ''LPDIRECTDRAW4'' : missing storage-class or type specifiers C:\mssdk\samples\Multimedia\DDraw\src\DDex1\ddex1.cpp(39) : fatal error C1004: unexpected end of file found Error executing cl.exe. i cant figure out hoe to fix it will someone please help me //----------------------------------------------------------------------------- // File: DDEx1.CPP // // Desc: Direct Draw example program 1. Creates a Direct Draw // object and then a primary surface with a back buffer. // Slowly flips between the primary surface and the back // buffer. Press F12 to terminate the program. // // Copyright (c) 1995-1998 Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif //----------------------------------------------------------------------------- // Include files //----------------------------------------------------------------------------- #include #include #include #include #include "resource.h" //----------------------------------------------------------------------------- // Local definitions //----------------------------------------------------------------------------- #define NAME "DDExample1" #define TITLE "Direct Draw Example 1" //----------------------------------------------------------------------------- // Default settings //----------------------------------------------------------------------------- #define TIMER_ID 1 #define TIMER_RATE 500 //----------------------------------------------------------------------------- // Global data //----------------------------------------------------------------------------- LPDIRECTDRAW4 g_pDD = NULL; // DirectDraw object LPDIRECTDRAWSURFACE4 g_pDDSPrimary = NULL;// DirectDraw primary surface LPDIRECTDRAWSURFACE4 g_pDDSBack = NULL; // DirectDraw back surface BOOL g_bActive = FALSE; // Is application active? //----------------------------------------------------------------------------- // Local data //----------------------------------------------------------------------------- static char szMsg[] = "Page Flipping Test: Press F12 to exit"; static char szFrontMsg[] = "Front buffer (F12 to quit)"; static char szBackMsg[] = "Back buffer (F12 to quit)"; //----------------------------------------------------------------------------- // Name: ReleaseAllObjects() // Desc: Finished with all objects we use; release them //----------------------------------------------------------------------------- static void ReleaseAllObjects(void) { if (g_pDD != NULL) { if (g_pDDSPrimary != NULL) { g_pDDSPrimary->Release(); g_pDDSPrimary = NULL; } g_pDD->Release(); g_pDD = NULL; } } //----------------------------------------------------------------------------- // Name: InitFail() // Desc: This function is called if an initialization function fails //----------------------------------------------------------------------------- HRESULT InitFail(HWND hWnd, HRESULT hRet, LPCTSTR szError,...) { char szBuff[128]; va_list vl; va_start(vl, szError); vsprintf(szBuff, szError, vl); ReleaseAllObjects(); MessageBox(hWnd, szBuff, TITLE, MB_OK); DestroyWindow(hWnd); va_end(vl); return hRet; } //----------------------------------------------------------------------------- // Name: UpdateFrame() // Desc: Displays the proper text for the page //----------------------------------------------------------------------------- static void UpdateFrame(HWND hWnd) { static BYTE phase = 0; HDC hdc; DDBLTFX ddbltfx; RECT rc; SIZE size; // Use the blter to do a color fill to clear the back buffer ZeroMemory(&ddbltfx, sizeof(ddbltfx)); ddbltfx.dwSize = sizeof(ddbltfx); ddbltfx.dwFillColor = 0; g_pDDSBack->Blt(NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); if (g_pDDSBack->GetDC(&hdc) == DD_OK) { SetBkColor(hdc, RGB(0, 0, 255)); SetTextColor(hdc, RGB(255, 255, 0)); if (phase) { GetClientRect(hWnd, &rc); GetTextExtentPoint(hdc, szMsg, lstrlen(szMsg), &size); TextOut(hdc, (rc.right - size.cx) / 2, (rc.bottom - size.cy) / 2, szMsg, sizeof(szMsg) - 1); TextOut(hdc, 0, 0, szFrontMsg, lstrlen(szFrontMsg)); phase = 0; } else { TextOut(hdc, 0, 0, szBackMsg, lstrlen(szBackMsg)); phase = 1; } g_pDDSBack->ReleaseDC(hdc); } } //----------------------------------------------------------------------------- // Name: WindowProc() // Desc: The Main Window Procedure //----------------------------------------------------------------------------- long FAR PASCAL WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HRESULT hRet; switch (message) { case WM_ACTIVATEAPP: // Pause if minimized or not the top window g_bActive = (wParam == WA_ACTIVE) || (wParam == WA_CLICKACTIVE); return 0L; case WM_DESTROY: // Clean up and close the app ReleaseAllObjects(); PostQuitMessage(0); return 0L; case WM_KEYDOWN: // Handle any non-accelerated key commands switch (wParam) { case VK_ESCAPE: case VK_F12: PostMessage(hWnd, WM_CLOSE, 0, 0); return 0L; } break; case WM_SETCURSOR: // Turn off the cursor since this is a full-screen app SetCursor(NULL); return TRUE; case WM_TIMER: // Update and flip surfaces if (g_bActive && TIMER_ID == wParam) { UpdateFrame(hWnd); while (TRUE) { hRet = g_pDDSPrimary->Flip(NULL, 0); if (hRet == DD_OK) break; if (hRet == DDERR_SURFACELOST) { hRet = g_pDDSPrimary->Restore(); if (hRet != DD_OK) break; } if (hRet != DDERR_WASSTILLDRAWING) break; } } break; } return DefWindowProc(hWnd, message, wParam, lParam); } //----------------------------------------------------------------------------- // Name: InitApp() // Desc: Do work required for every instance of the application: // Create the window, initialize data //----------------------------------------------------------------------------- static HRESULT InitApp(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; WNDCLASS wc; DDSURFACEDESC2 ddsd; DDSCAPS2 ddscaps; HRESULT hRet; LPDIRECTDRAW pDD; // Set up and register window class wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WindowProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN_ICON)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH )GetStockObject(BLACK_BRUSH); wc.lpszMenuName = NAME; wc.lpszClassName = NAME; RegisterClass(&wc); // Create a window hWnd = CreateWindowEx(WS_EX_TOPMOST, NAME, TITLE, WS_POPUP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); SetFocus(hWnd); /////////////////////////////////////////////////////////////////////////// // Create the main DirectDraw object /////////////////////////////////////////////////////////////////////////// hRet = DirectDrawCreate(NULL, &pDD, NULL); if (hRet != DD_OK) return InitFail(hWnd, hRet, "DirectDrawCreate FAILED"); // Fetch DirectDraw4 interface hRet = pDD->QueryInterface(IID_IDirectDraw4, (LPVOID *) & g_pDD); if (hRet != DD_OK) return InitFail(hWnd, hRet, "QueryInterface FAILED"); // Get exclusive mode hRet = g_pDD->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); if (hRet != DD_OK) return InitFail(hWnd, hRet, "SetCooperativeLevel FAILED"); // Set the video mode to 640x480x8 hRet = g_pDD->SetDisplayMode(640, 480, 8, 0, 0); if (hRet != DD_OK) return InitFail(hWnd, hRet, "SetDisplayMode FAILED"); // Create the primary surface with 1 back buffer 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; hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSPrimary, NULL); if (hRet != DD_OK) return InitFail(hWnd, hRet, "CreateSurface FAILED"); // Get a pointer to the back buffer ddscaps.dwCaps = DDSCAPS_BACKBUFFER; hRet = g_pDDSPrimary->GetAttachedSurface(&ddscaps, &g_pDDSBack); if (hRet != DD_OK) return InitFail(hWnd, hRet, "GetAttachedSurface FAILED"); // Create a timer to flip the pages if (TIMER_ID != SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL)) return InitFail(hWnd, hRet, "SetTimer FAILED"); return DD_OK; } //----------------------------------------------------------------------------- // Name: WinMain() // Desc: Initialization, message loop //----------------------------------------------------------------------------- int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; if (InitApp(hInstance, nCmdShow) != DD_OK) return FALSE; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
Advertisement
Check your include path (in VC++: Tools->options->directories) add the Include directory of the directory where you installed the DX SDK, and move it on top of all the others, then try again

This topic is closed to new replies.

Advertisement