1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 | // main.cpp : Defines the entry point for the application. // // include the Direct3D Library file #pragma comment (lib, "d3d9.lib") #pragma comment (lib, "d3dx9.lib") //#pragma comment(lib, "dsound.lib") //#pragma comment (lib, "dinput8.lib") //#pragma comment (lib, "dxguid.lib") //#pragma comment(lib, "ddraw.lib") //#pragma comment(lib, "dxguid.lib") #define _CRT_SECURE_NO_WARNINGS #define STRICT #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers //#define VC_EXTRALEAN // Windows Header Files: //#include <ddraw.h> #include <windows.h> #include <windowsx.h> //#include <MMSystem.h> #include <D3dx9.h> #include <d3d9.h> #include "Direct3D9.h" #include "Vector2D.h" #include "main.h" #include "Timer.h" #include "Game.h" //#include "DirectDraw.h" //#include "Singleton.h" //////////////////////////////////////////////////////////////// //Global Functions Decarations //////////////////////////////////////////////////////////////// LRESULT CALLBACK WndProc(HWND hWindow,UINT msg, WPARAM wParam, LPARAM lParam); bool m_fullScreen = false; bool m_running; Game* m_game; Timer m_timer; unsigned __int64 m_lastTime; unsigned __int64 m_timerFrequency; float m_timeCounter; float m_frameTime; float secPerCent; //////////////////////////////////////////////////////////////// //Global Functions //////////////////////////////////////////////////////////////// void CleanUp() { delete m_game; Direct3D9::Destroy(); //DirectDraw::Destroy(); } ////////////////////////////////////////////////////// //The render method for the program, //everything that need to be rendered will be placed here. ////////////////////////////////////////////////////// void Render(HWND hWindow) { //cleans the screen Direct3D9::GetInstance()->ClearSurface(); m_game->Render(Direct3D9::GetInstance()->GetD3dDevice()); Direct3D9::GetInstance()->GetD3dDevice()->Present(NULL,NULL,NULL,NULL); //D3dx9::GetD3dDevice()->Present(0,0,0,0); // //DirectDraw::GetInstance()->ClearSurface(hWindow); //m_game->Render(DirectDraw::GetInstance()->GetBackBuffer()); //DirectDraw::GetInstance()->PresentBackBuffer(hWindow); } /////////////////////////////////////////////////////////// //Update method that controls all things checked per //program cycle /////////////////////////////////////////////////////////// void Update() { float timeNow = (float)m_timer.GetTime(); float timeDiff = timeNow -(float)m_lastTime; m_lastTime = (unsigned __int64)timeNow; float timeDiffFloat = timeDiff * secPerCent; //DirectDraw::GetInstance()->RestoreSurfaces(); m_game->Update(timeDiffFloat); } //////////////////////////////////////////////////////////////// //This is the WinMain Function, Like the Main Function of a console application //The WinMain Function is the entry point of a windows program, //It is mainly used to set up the window then within a while loop, //process the windows messages recieved by the system, //////////////////////////////////////////////////////////////// int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) { //m_enviromentPosition = Vector2D(900,0); //This is the name of the application static TCHAR szAppName[] = TEXT("Direct3D9 Behaviour Systems"); //WNDCLASSEX structure contains window class information WNDCLASSEX wndclass; //HWND is the window handle HWND hWindow; //Is contains the latest windows message MSG msg; wndclass.cbSize = sizeof(WNDCLASSEX); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = NULL; wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; wndclass.hIconSm = NULL; //This Registers the windows class with the system, if any parameter is invalid //the program will terminate here if(!RegisterClassEx(&wndclass)) return 0; RECT rc; // Calculate size of window based on desired client window size rc.left = 0; rc.top = 0; rc.right = 800; rc.bottom = 600; if (m_fullScreen) { hWindow = CreateWindowEx(0, szAppName, szAppName, WS_POPUP, 0, 0,rc.right-rc.left, rc.bottom-rc.top,NULL, NULL, hInstance, NULL ); } else { AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, FALSE ); hWindow = CreateWindowEx(0, szAppName, szAppName, WS_OVERLAPPEDWINDOW, 100, 100,rc.right-rc.left, rc.bottom-rc.top,NULL, NULL, hInstance, NULL ); } //Now show and update the window for the first time ShowWindow(hWindow,iCmdShow); UpdateWindow(hWindow); m_running = true; //DirectDraw::Create(); Direct3D9::Create(); //if (DirectDraw::GetInstance()->CreateDevice( hWindow ,800 , 600 ,m_fullScreen) != 1) //{ // MessageBox( hWindow, "Failed to create surfaces", "Error", MB_OK ); // return 0; //} if (Direct3D9::GetInstance()->InitialiseDirect3D(hWindow) != 1) { MessageBox( hWindow, "Failed to create surfaces", "Error", MB_OK ); return 0; } InvalidateRect( hWindow, NULL, TRUE ); //we create a timer to force the game to update every 1/60th of a second //otherwise there could be preformance issues as the buffers are being swapped //too quickly SetTimer(hWindow,Refresh,1000/200,NULL); m_game = new Game(Direct3D9::GetInstance()->GetD3dDevice()); m_timerFrequency = m_timer.GetFrequency(); secPerCent = 1.0f / (float)m_timerFrequency; m_lastTime = m_timer.GetTime(); //this is the main look of the windows application , while the window is open //its processes and translates windows messages into something useable, //then sends the message to the relivent location. //when the program closes, the program exits the loop and the messages will end, resulting on the exit of this loop. while(m_running) { while(PeekMessage(&msg, NULL, 0,0, PM_NOREMOVE)) { BOOL bGetResult = GetMessage(&msg, NULL, 0, 0); TranslateMessage(&msg); DispatchMessage(&msg); } Update(); } CleanUp(); return (int)msg.wParam; } ////////////////////////////////////////////////////////////////////////// //The WndProc method processes the messages sent through windows, //each message contains WM_ and then the message, for example, if the user clicks the left mouse button //the message WM_LBUTTONDOWN is sent. ////////////////////////////////////////////////////////////////////////// LRESULT CALLBACK WndProc(HWND hWindow,UINT msg,WPARAM wParam,LPARAM lParam) { //this switch statement processes the message sent, here you can program the code //for each type of message's reaction switch(msg) { //WM_PAINT is a render command case WM_PAINT: ValidateRect( hWindow, NULL ); return 0; break; //WM_LBUTTONDOWN is a message send every time the left mouse button is clicked over the Client area case WM_TIMER: switch(wParam) { case Refresh: Render(hWindow); break; } return 0; break; case WM_LBUTTONDOWN: //m_BackGround->SetScrollVelocity(Vector2D(-m_BackGround->GetScrollVelocity().x,0)); return 0; break; //the WM_DESTROY message is the message sent when the program is going to terminate case WM_DESTROY: DestroyWindow( hWindow ); m_running = false; PostQuitMessage(0); return 0; break; } //it returns default processing for any window message that an switch statement does not process return DefWindowProc(hWindow,msg,wParam,lParam); } |
Ly8gbWFpbi5jcHAgOiBEZWZpbmVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGFwcGxpY2F0aW9uLgovLwoKLy8gaW5jbHVkZSB0aGUgRGlyZWN0M0QgTGlicmFyeSBmaWxlCiNwcmFnbWEgY29tbWVudCAobGliLCAiZDNkOS5saWIiKQojcHJhZ21hIGNvbW1lbnQgKGxpYiwgImQzZHg5LmxpYiIpCi8vI3ByYWdtYSBjb21tZW50KGxpYiwgImRzb3VuZC5saWIiKQovLyNwcmFnbWEgY29tbWVudCAobGliLCAiZGlucHV0OC5saWIiKQovLyNwcmFnbWEgY29tbWVudCAobGliLCAiZHhndWlkLmxpYiIpCgoKLy8jcHJhZ21hIGNvbW1lbnQobGliLCAiZGRyYXcubGliIikKLy8jcHJhZ21hIGNvbW1lbnQobGliLCAiZHhndWlkLmxpYiIpCgojZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCiNkZWZpbmUgU1RSSUNUCiNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTiAgICAgICAgICAgICAvLyBFeGNsdWRlIHJhcmVseS11c2VkIHN0dWZmIGZyb20gV2luZG93cyBoZWFkZXJzCi8vI2RlZmluZSBWQ19FWFRSQUxFQU4KLy8gV2luZG93cyBIZWFkZXIgRmlsZXM6Ci8vI2luY2x1ZGUgPGRkcmF3Lmg+CiNpbmNsdWRlIDx3aW5kb3dzLmg+CiNpbmNsdWRlIDx3aW5kb3dzeC5oPgovLyNpbmNsdWRlIDxNTVN5c3RlbS5oPgoKI2luY2x1ZGUgPEQzZHg5Lmg+CiNpbmNsdWRlIDxkM2Q5Lmg+CiNpbmNsdWRlICJEaXJlY3QzRDkuaCIKCiNpbmNsdWRlICJWZWN0b3IyRC5oIgojaW5jbHVkZSAibWFpbi5oIgojaW5jbHVkZSAiVGltZXIuaCIKI2luY2x1ZGUgIkdhbWUuaCIKLy8jaW5jbHVkZSAiRGlyZWN0RHJhdy5oIgoKCi8vI2luY2x1ZGUgIlNpbmdsZXRvbi5oIgoKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy9HbG9iYWwgRnVuY3Rpb25zIERlY2FyYXRpb25zCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCgpMUkVTVUxUIENBTExCQUNLIFduZFByb2MoSFdORCBoV2luZG93LFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKTsgIAoKYm9vbCBtX2Z1bGxTY3JlZW4gPSBmYWxzZTsKCmJvb2wgbV9ydW5uaW5nOwoKR2FtZSogbV9nYW1lOwoKVGltZXIgbV90aW1lcjsKdW5zaWduZWQgX19pbnQ2NCBtX2xhc3RUaW1lOwp1bnNpZ25lZCBfX2ludDY0IG1fdGltZXJGcmVxdWVuY3k7CmZsb2F0IG1fdGltZUNvdW50ZXI7CmZsb2F0IG1fZnJhbWVUaW1lOwpmbG9hdCBzZWNQZXJDZW50OwoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovL0dsb2JhbCBGdW5jdGlvbnMKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKdm9pZCBDbGVhblVwKCkKewoJCglkZWxldGUgbV9nYW1lOwoJRGlyZWN0M0Q5OjpEZXN0cm95KCk7CgkvL0RpcmVjdERyYXc6OkRlc3Ryb3koKTsKfQoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vVGhlIHJlbmRlciBtZXRob2QgZm9yIHRoZSBwcm9ncmFtLCAKLy9ldmVyeXRoaW5nIHRoYXQgbmVlZCB0byBiZSByZW5kZXJlZCB3aWxsIGJlIHBsYWNlZCBoZXJlLgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8Kdm9pZApSZW5kZXIoSFdORCBoV2luZG93KQp7CgkvL2NsZWFucyB0aGUgc2NyZWVuCgoJRGlyZWN0M0Q5OjpHZXRJbnN0YW5jZSgpLT5DbGVhclN1cmZhY2UoKTsKCgltX2dhbWUtPlJlbmRlcihEaXJlY3QzRDk6OkdldEluc3RhbmNlKCktPkdldEQzZERldmljZSgpKTsKCglEaXJlY3QzRDk6OkdldEluc3RhbmNlKCktPkdldEQzZERldmljZSgpLT5QcmVzZW50KE5VTEwsTlVMTCxOVUxMLE5VTEwpOwoKCS8vRDNkeDk6OkdldEQzZERldmljZSgpLT5QcmVzZW50KDAsMCwwLDApOwoJLy8KCS8vRGlyZWN0RHJhdzo6R2V0SW5zdGFuY2UoKS0+Q2xlYXJTdXJmYWNlKGhXaW5kb3cpOwoKCS8vbV9nYW1lLT5SZW5kZXIoRGlyZWN0RHJhdzo6R2V0SW5zdGFuY2UoKS0+R2V0QmFja0J1ZmZlcigpKTsKCgkvL0RpcmVjdERyYXc6OkdldEluc3RhbmNlKCktPlByZXNlbnRCYWNrQnVmZmVyKGhXaW5kb3cpOwoKfQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovL1VwZGF0ZSBtZXRob2QgdGhhdCBjb250cm9scyBhbGwgdGhpbmdzIGNoZWNrZWQgcGVyIAovL3Byb2dyYW0gY3ljbGUKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8Kdm9pZApVcGRhdGUoKQp7CglmbG9hdCB0aW1lTm93ID0gKGZsb2F0KW1fdGltZXIuR2V0VGltZSgpOwoJZmxvYXQgdGltZURpZmYgPSB0aW1lTm93IC0oZmxvYXQpbV9sYXN0VGltZTsKCW1fbGFzdFRpbWUgPSAodW5zaWduZWQgX19pbnQ2NCl0aW1lTm93OwoJZmxvYXQgdGltZURpZmZGbG9hdCA9IHRpbWVEaWZmICogc2VjUGVyQ2VudDsKCS8vRGlyZWN0RHJhdzo6R2V0SW5zdGFuY2UoKS0+UmVzdG9yZVN1cmZhY2VzKCk7CgoJbV9nYW1lLT5VcGRhdGUodGltZURpZmZGbG9hdCk7Cn0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy9UaGlzIGlzIHRoZSBXaW5NYWluIEZ1bmN0aW9uLCBMaWtlIHRoZSBNYWluIEZ1bmN0aW9uIG9mIGEgY29uc29sZSBhcHBsaWNhdGlvbiAKLy9UaGUgV2luTWFpbiBGdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgb2YgYSB3aW5kb3dzIHByb2dyYW0sCi8vSXQgaXMgbWFpbmx5IHVzZWQgdG8gc2V0IHVwIHRoZSB3aW5kb3cgdGhlbiB3aXRoaW4gYSB3aGlsZSBsb29wLCAKLy9wcm9jZXNzIHRoZSB3aW5kb3dzIG1lc3NhZ2VzIHJlY2lldmVkIGJ5IHRoZSBzeXN0ZW0sCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KaW50IFdJTkFQSSBXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJTlNUQU5DRSBoUHJldkluc3RhbmNlLFBTVFIgc3pDbWRMaW5lLGludCBpQ21kU2hvdykKewoKCS8vbV9lbnZpcm9tZW50UG9zaXRpb24gPSBWZWN0b3IyRCg5MDAsMCk7CgkvL1RoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uICAKCXN0YXRpYyBUQ0hBUiAgc3pBcHBOYW1lW10gPSBURVhUKCJEaXJlY3QzRDkgQmVoYXZpb3VyIFN5c3RlbXMiKTsKCS8vV05EQ0xBU1NFWCBzdHJ1Y3R1cmUgY29udGFpbnMgd2luZG93IGNsYXNzIGluZm9ybWF0aW9uCglXTkRDTEFTU0VYCSAgd25kY2xhc3M7CgkvL0hXTkQgaXMgdGhlIHdpbmRvdyBoYW5kbGUKCUhXTkQJCSAgaFdpbmRvdzsKCS8vSXMgY29udGFpbnMgdGhlIGxhdGVzdCB3aW5kb3dzIG1lc3NhZ2UKCU1TRwkJCSAgbXNnOwoKCXduZGNsYXNzLmNiU2l6ZQkJCT0gc2l6ZW9mKFdORENMQVNTRVgpOwoJd25kY2xhc3Muc3R5bGUJCQk9IENTX0hSRURSQVcgfCBDU19WUkVEUkFXOwoJd25kY2xhc3MubHBmblduZFByb2MJPSBXbmRQcm9jOwoJd25kY2xhc3MuY2JDbHNFeHRyYQkJPSAwOwoJd25kY2xhc3MuY2JXbmRFeHRyYQkJPSAwOwoJd25kY2xhc3MuaEluc3RhbmNlCQk9IGhJbnN0YW5jZTsKCXduZGNsYXNzLmhJY29uCQkJPSBOVUxMOwoJd25kY2xhc3MuaEN1cnNvcgkJPSBMb2FkQ3Vyc29yKE5VTEwsIElEQ19BUlJPVyk7Cgl3bmRjbGFzcy5oYnJCYWNrZ3JvdW5kCT0gKEhCUlVTSCkoQ09MT1JfV0lORE9XKzEpOwoJd25kY2xhc3MubHBzek1lbnVOYW1lCT0gTlVMTDsKCXduZGNsYXNzLmxwc3pDbGFzc05hbWUJPSBzekFwcE5hbWU7Cgl3bmRjbGFzcy5oSWNvblNtCQk9IE5VTEw7CgoJLy9UaGlzIFJlZ2lzdGVycyB0aGUgd2luZG93cyBjbGFzcyB3aXRoIHRoZSBzeXN0ZW0sIGlmIGFueSBwYXJhbWV0ZXIgaXMgaW52YWxpZAoJLy90aGUgcHJvZ3JhbSB3aWxsIHRlcm1pbmF0ZSBoZXJlCglpZighUmVnaXN0ZXJDbGFzc0V4KCZ3bmRjbGFzcykpCgkJcmV0dXJuIDA7CgoJUkVDVCByYzsKCQoJLy8gQ2FsY3VsYXRlIHNpemUgb2Ygd2luZG93IGJhc2VkIG9uIGRlc2lyZWQgY2xpZW50IHdpbmRvdyBzaXplCglyYy5sZWZ0ID0gMDsKCXJjLnRvcCA9IDA7CglyYy5yaWdodCA9IDgwMDsKCXJjLmJvdHRvbSA9IDYwMDsKCQoJaWYgKG1fZnVsbFNjcmVlbikKCXsKCQloV2luZG93ID0gQ3JlYXRlV2luZG93RXgoMCwgc3pBcHBOYW1lLCBzekFwcE5hbWUsIFdTX1BPUFVQLAoJCQkJCQkJCSAgIDAsIDAscmMucmlnaHQtcmMubGVmdCwgcmMuYm90dG9tLXJjLnRvcCxOVUxMLCBOVUxMLCBoSW5zdGFuY2UsIE5VTEwgKTsKCX0KCWVsc2UKCXsKCQlBZGp1c3RXaW5kb3dSZWN0KCAmcmMsIFdTX09WRVJMQVBQRURXSU5ET1csIEZBTFNFICk7CgoJCWhXaW5kb3cgPSBDcmVhdGVXaW5kb3dFeCgwLCBzekFwcE5hbWUsIHN6QXBwTmFtZSwgV1NfT1ZFUkxBUFBFRFdJTkRPVywKCQkJCQkJCQkgICAxMDAsIDEwMCxyYy5yaWdodC1yYy5sZWZ0LCByYy5ib3R0b20tcmMudG9wLE5VTEwsIE5VTEwsIGhJbnN0YW5jZSwgTlVMTCApOwoJfQoKCS8vTm93IHNob3cgYW5kIHVwZGF0ZSB0aGUgd2luZG93IGZvciB0aGUgZmlyc3QgdGltZQoJU2hvd1dpbmRvdyhoV2luZG93LGlDbWRTaG93KTsKCVVwZGF0ZVdpbmRvdyhoV2luZG93KTsKCW1fcnVubmluZyA9IHRydWU7CgoJLy9EaXJlY3REcmF3OjpDcmVhdGUoKTsKCURpcmVjdDNEOTo6Q3JlYXRlKCk7CgoJLy9pZiAoRGlyZWN0RHJhdzo6R2V0SW5zdGFuY2UoKS0+Q3JlYXRlRGV2aWNlKCBoV2luZG93ICw4MDAgLCA2MDAgLG1fZnVsbFNjcmVlbikgIT0gMSkKCS8vewoJLy8JTWVzc2FnZUJveCggaFdpbmRvdywgIkZhaWxlZCB0byBjcmVhdGUgc3VyZmFjZXMiLCAiRXJyb3IiLCBNQl9PSyApOwoJLy8JcmV0dXJuIDA7CgkvL30KCglpZiAoRGlyZWN0M0Q5OjpHZXRJbnN0YW5jZSgpLT5Jbml0aWFsaXNlRGlyZWN0M0QoaFdpbmRvdykgIT0gMSkKCXsKCQlNZXNzYWdlQm94KCBoV2luZG93LCAiRmFpbGVkIHRvIGNyZWF0ZSBzdXJmYWNlcyIsICJFcnJvciIsIE1CX09LICk7CgkJcmV0dXJuIDA7Cgl9CgoJSW52YWxpZGF0ZVJlY3QoIGhXaW5kb3csIE5VTEwsIFRSVUUgKTsKCgkvL3dlIGNyZWF0ZSBhIHRpbWVyIHRvIGZvcmNlIHRoZSBnYW1lIHRvIHVwZGF0ZSBldmVyeSAxLzYwdGggb2YgYSBzZWNvbmQKCS8vb3RoZXJ3aXNlIHRoZXJlIGNvdWxkIGJlIHByZWZvcm1hbmNlIGlzc3VlcyBhcyB0aGUgYnVmZmVycyBhcmUgYmVpbmcgc3dhcHBlZAoJLy90b28gcXVpY2tseQoJU2V0VGltZXIoaFdpbmRvdyxSZWZyZXNoLDEwMDAvMjAwLE5VTEwpOwoKCW1fZ2FtZSA9IG5ldyBHYW1lKERpcmVjdDNEOTo6R2V0SW5zdGFuY2UoKS0+R2V0RDNkRGV2aWNlKCkpOwoKCW1fdGltZXJGcmVxdWVuY3kgPSBtX3RpbWVyLkdldEZyZXF1ZW5jeSgpOwoJc2VjUGVyQ2VudCA9IDEuMGYgLyAoZmxvYXQpbV90aW1lckZyZXF1ZW5jeTsKCW1fbGFzdFRpbWUgPSBtX3RpbWVyLkdldFRpbWUoKTsKCgkvL3RoaXMgaXMgdGhlIG1haW4gbG9vayBvZiB0aGUgd2luZG93cyBhcHBsaWNhdGlvbiAsIHdoaWxlIHRoZSB3aW5kb3cgaXMgb3BlbgoJLy9pdHMgcHJvY2Vzc2VzIGFuZCB0cmFuc2xhdGVzIHdpbmRvd3MgbWVzc2FnZXMgaW50byBzb21ldGhpbmcgdXNlYWJsZSwKCS8vdGhlbiBzZW5kcyB0aGUgbWVzc2FnZSB0byB0aGUgcmVsaXZlbnQgbG9jYXRpb24uCgkvL3doZW4gdGhlIHByb2dyYW0gY2xvc2VzLCB0aGUgcHJvZ3JhbSBleGl0cyB0aGUgbG9vcCBhbmQgdGhlIG1lc3NhZ2VzIHdpbGwgZW5kLCByZXN1bHRpbmcgb24gdGhlIGV4aXQgb2YgdGhpcyBsb29wLgoJd2hpbGUobV9ydW5uaW5nKQoJewoJCXdoaWxlKFBlZWtNZXNzYWdlKCZtc2csIE5VTEwsIDAsMCwgUE1fTk9SRU1PVkUpKQoJCXsKCQkJQk9PTCBiR2V0UmVzdWx0ID0gR2V0TWVzc2FnZSgmbXNnLCBOVUxMLCAwLCAwKTsKCQkJVHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKCQkJRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOwoJCX0KCgkJVXBkYXRlKCk7CgkJCgl9CgoJQ2xlYW5VcCgpOwoJcmV0dXJuIChpbnQpbXNnLndQYXJhbTsKfQoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy9UaGUgV25kUHJvYyBtZXRob2QgcHJvY2Vzc2VzIHRoZSBtZXNzYWdlcyBzZW50IHRocm91Z2ggd2luZG93cywgCi8vZWFjaCBtZXNzYWdlIGNvbnRhaW5zIFdNXyBhbmQgdGhlbiB0aGUgbWVzc2FnZSwgZm9yIGV4YW1wbGUsIGlmIHRoZSB1c2VyIGNsaWNrcyB0aGUgbGVmdCBtb3VzZSBidXR0b24KLy90aGUgbWVzc2FnZSBXTV9MQlVUVE9ORE9XTiBpcyBzZW50LgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpMUkVTVUxUIENBTExCQUNLIFduZFByb2MoSFdORCBoV2luZG93LFVJTlQgbXNnLFdQQVJBTSB3UGFyYW0sTFBBUkFNIGxQYXJhbSkKewoJLy90aGlzIHN3aXRjaCBzdGF0ZW1lbnQgcHJvY2Vzc2VzIHRoZSBtZXNzYWdlIHNlbnQsIGhlcmUgeW91IGNhbiBwcm9ncmFtIHRoZSBjb2RlCgkvL2ZvciBlYWNoIHR5cGUgb2YgbWVzc2FnZSdzIHJlYWN0aW9uCglzd2l0Y2gobXNnKQoJewoJCS8vV01fUEFJTlQgaXMgYSByZW5kZXIgY29tbWFuZAoJCWNhc2UgV01fUEFJTlQ6CgkJCVZhbGlkYXRlUmVjdCggaFdpbmRvdywgTlVMTCApOwoJCQlyZXR1cm4gMDsKCQkJYnJlYWs7CgkJLy9XTV9MQlVUVE9ORE9XTiBpcyBhIG1lc3NhZ2Ugc2VuZCBldmVyeSB0aW1lIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiBpcyBjbGlja2VkIG92ZXIgdGhlIENsaWVudCBhcmVhCgkJY2FzZSBXTV9USU1FUjoKCQkJc3dpdGNoKHdQYXJhbSkKCQkJewoJCQkJY2FzZSBSZWZyZXNoOgoJCQkJCVJlbmRlcihoV2luZG93KTsKCQkJCWJyZWFrOwoJCQl9CgkJCXJldHVybiAwOwoJCQlicmVhazsKCQljYXNlIFdNX0xCVVRUT05ET1dOOgoJCQkvL21fQmFja0dyb3VuZC0+U2V0U2Nyb2xsVmVsb2NpdHkoVmVjdG9yMkQoLW1fQmFja0dyb3VuZC0+R2V0U2Nyb2xsVmVsb2NpdHkoKS54LDApKTsKCQkJcmV0dXJuIDA7CgkJCWJyZWFrOwoJCS8vdGhlIFdNX0RFU1RST1kgbWVzc2FnZSBpcyB0aGUgbWVzc2FnZSBzZW50IHdoZW4gdGhlIHByb2dyYW0gaXMgZ29pbmcgdG8gdGVybWluYXRlCgkJY2FzZSBXTV9ERVNUUk9ZOgoJCQlEZXN0cm95V2luZG93KCBoV2luZG93ICk7CgkJCW1fcnVubmluZyA9IGZhbHNlOwoJCQlQb3N0UXVpdE1lc3NhZ2UoMCk7CgkJCXJldHVybiAwOwoJCWJyZWFrOwoJfQoJLy9pdCByZXR1cm5zIGRlZmF1bHQgcHJvY2Vzc2luZyBmb3IgYW55IHdpbmRvdyBtZXNzYWdlIHRoYXQgYW4gc3dpdGNoIHN0YXRlbWVudCBkb2VzIG5vdCBwcm9jZXNzCglyZXR1cm4gRGVmV2luZG93UHJvYyhoV2luZG93LG1zZyx3UGFyYW0sbFBhcmFtKTsKfQo=
prog.cpp:5: warning: ignoring #pragma comment prog.cpp:6: warning: ignoring #pragma comment prog.cpp:21:21: error: windows.h: No such file or directory prog.cpp:22:22: error: windowsx.h: No such file or directory prog.cpp:25:19: error: D3dx9.h: No such file or directory prog.cpp:26:18: error: d3d9.h: No such file or directory prog.cpp:27:23: error: Direct3D9.h: No such file or directory prog.cpp:29:22: error: Vector2D.h: No such file or directory prog.cpp:30:18: error: main.h: No such file or directory prog.cpp:31:19: error: Timer.h: No such file or directory prog.cpp:32:18: error: Game.h: No such file or directory prog.cpp:44: error: ‘LRESULT’ does not name a type prog.cpp:50: error: expected constructor, destructor, or type conversion before ‘*’ token prog.cpp:52: error: ‘Timer’ does not name a type prog.cpp:53: error: ‘__int64’ does not name a type prog.cpp:54: error: ‘__int64’ does not name a type prog.cpp: In function ‘void CleanUp()’: prog.cpp:66: error: ‘m_game’ was not declared in this scope prog.cpp:67: error: ‘Direct3D9’ has not been declared prog.cpp: At global scope: prog.cpp:76: error: variable or field ‘Render’ declared void prog.cpp:76: error: ‘HWND’ was not declared in this scope prog.cpp: In function ‘void Update()’: prog.cpp:102: error: ‘m_timer’ was not declared in this scope prog.cpp:103: error: ‘m_lastTime’ was not declared in this scope prog.cpp:104: error: expected primary-expression before ‘unsigned’ prog.cpp:104: error: expected `)' before ‘unsigned’ prog.cpp:108: error: ‘m_game’ was not declared in this scope prog.cpp: At global scope: prog.cpp:117: error: expected initializer before ‘WinMain’
-
result: Compilation error (maybe you wish to see an example for C++ 4.7.2)


