// the entry point for any Windows program int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // the handle for the window, filled by a function HWND hWnd; // this struct holds information for the window class WNDCLASSEX wc; // clear out the window class for use ZeroMemory(&wc, sizeof(WNDCLASSEX)); // fill in the struct with the needed information wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WindowProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); //wc.hbrBackground = (HBRUSH)COLOR_WINDOW; wc.lpszClassName = L"WindowClass1"; // register the window class RegisterClassEx(&wc); // calculate the size of the client area RECT wr = { 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT }; // set the size, but not the position AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE); // adjust the size // create the window and use the result as the handle hWnd = CreateWindowEx(NULL, L"WindowClass1", // name of the window class L"Our First Windowed Program", // title of the window WS_OVERLAPPEDWINDOW, // window style 0, // x-position of the window 0, // y-position of the window wr.right - wr.left, wr.bottom - wr.top, NULL, // we have no parent window, NULL NULL, // we aren't using menus, NULL hInstance, // application handle NULL); // used with multiple windows, NULL // display the window on the screen ShowWindow(hWnd, nCmdShow); // set up and initialize Direct3D rendering.InitD3D(hWnd); rendering.InitPipeline(); rendering.InitGraphics((void*)kinect_manager.m_pColorRGBX); HRESULT hr = kinect_manager.Initialize(); if (FAILED(hr)) { return E_FAIL; } // enter the main loop: // this struct holds Windows event messages MSG msg = { 0 }; // Enter the infinite message loop while (TRUE) { // Check to see if any messages are waiting in the queue if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { // translate keystroke messages into the right format TranslateMessage(&msg); // send the message to the WindowProc function DispatchMessage(&msg); // check to see if it's time to quit if (msg.message == WM_QUIT) break; } else { // Run game code here // ... // ... kinect_manager.Update(); rendering.UpdateTextureBuffer((void*)(kinect_manager.m_pColorRGBX), kinect_manager.color_frame_length_in_pixels,kinect_manager.color_frame_bytes_per_pixel); rendering.Render(); } } kinect_manager.Cleanup(); // clean up DirectX and COM rendering.CleanD3D(); // return this part of the WM_QUIT message to Windows return msg.wParam; }