Guest User

Untitled

a guest
Dec 9th, 2014
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.75 KB | None | 0 0
  1. #define WINVER 0x0501
  2. #define _WIN32_WINNT 0x0501
  3.  
  4. #include <windows.h>
  5. #include <d3d9.h>
  6. //#include <stdio.h>
  7.  
  8. #define WIDTH  640
  9. #define HEIGHT 480
  10.  
  11. int flash = 0;
  12. int stop = 0;
  13.  
  14. LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  15. {
  16.     switch(message) {
  17.     case WM_CLOSE:
  18.         DestroyWindow(hWnd);
  19.         stop = 1;
  20.         break;
  21.     case WM_DESTROY:
  22.         PostQuitMessage(0);
  23.         stop = 1;
  24.         break;
  25.     case WM_INPUT: {
  26.         UINT dwSize;
  27.         GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &dwSize, sizeof(RAWINPUTHEADER));
  28.         LPBYTE lpb = new BYTE[dwSize];
  29.         if (lpb == NULL) return 0;
  30.         GetRawInputData((HRAWINPUT)lParam, RID_INPUT, lpb, &dwSize, sizeof(RAWINPUTHEADER));
  31.         RAWINPUT* raw = (RAWINPUT*)lpb;
  32.         if (raw->header.dwType == RIM_TYPEMOUSE) {
  33.             LONG x = raw->data.mouse.lLastX;
  34.             LONG y = raw->data.mouse.lLastY;
  35.             #define THRESH (2)
  36.             if (y < -THRESH)
  37.                 flash = 1;
  38.             else if (y > THRESH)
  39.                 flash = 0;
  40.         }
  41.         delete[] lpb;
  42.     }
  43.         //fall through
  44.     default:
  45.         return DefWindowProc(hWnd, message, wParam, lParam);
  46.     }
  47.     return 0;
  48. }
  49.  
  50. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  51. {
  52.     HWND hWnd;
  53.     WNDCLASSEX wc;
  54.     MSG msg;
  55.  
  56.     ZeroMemory(&wc, sizeof(WNDCLASSEX));
  57.  
  58.     wc.cbSize = sizeof(WNDCLASSEX);
  59.     wc.style = CS_HREDRAW | CS_VREDRAW;
  60.     wc.lpfnWndProc = WindowProc;
  61.     wc.hInstance = hInstance;
  62.     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  63.     wc.lpszClassName = "somewindowclass";
  64.  
  65.     RegisterClassEx(&wc);
  66.  
  67.     hWnd = CreateWindowEx(0, "somewindowclass", "test",
  68.                 WS_EX_TOPMOST | WS_POPUP,
  69.                 0, 0, WIDTH, HEIGHT,
  70.                 NULL, NULL, hInstance, NULL);
  71.     ShowWindow(hWnd, nCmdShow);
  72.  
  73.     LPDIRECT3D9 d3d;
  74.     LPDIRECT3DDEVICE9 d3ddev;
  75.  
  76.     d3d = Direct3DCreate9(D3D_SDK_VERSION);
  77.  
  78.     D3DPRESENT_PARAMETERS d3dpp;
  79.  
  80.     ZeroMemory(&d3dpp, sizeof(d3dpp));
  81.     d3dpp.Windowed = FALSE;
  82.     d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
  83.     d3dpp.hDeviceWindow = hWnd;
  84.     d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
  85.     d3dpp.BackBufferWidth = WIDTH;
  86.     d3dpp.BackBufferHeight = HEIGHT;
  87.  
  88.     d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
  89.                 D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3ddev);
  90.  
  91.     RAWINPUTDEVICE Rid[1];
  92.     Rid[0].usUsagePage = 0x01;
  93.     Rid[0].usUsage = 0x02;
  94.     Rid[0].dwFlags = RIDEV_NOLEGACY;
  95.     Rid[0].hwndTarget = 0;
  96.     RegisterRawInputDevices(Rid, 1, sizeof(Rid[0]));
  97.  
  98.  
  99.     while(!stop) {
  100.         while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
  101.             TranslateMessage(&msg);
  102.             DispatchMessage(&msg);
  103.         }
  104.  
  105.         if(msg.message == WM_QUIT)
  106.             stop = 1;
  107.  
  108.         d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, flash ? D3DCOLOR_XRGB(255,255,255) : D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
  109.         //flash = 0;
  110.         d3ddev->Present(NULL, NULL, NULL, NULL);
  111.     }
  112.  
  113.     d3ddev->Release();
  114.     d3d->Release();
  115.  
  116.     return msg.wParam;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment