Archived

This topic is now archived and is closed to further replies.

jim678

directdraw

Recommended Posts

jim678    122
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; }

Share this post


Link to post
Share on other sites