Advertisement
igromanru

Dr_Pepper d2d layered win

Nov 7th, 2014
599
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1.    
  2.  
  3.     // wndclass registrieren
  4.     WNDCLASSEX WndClass;
  5.     WndClass.cbSize = sizeof(WNDCLASSEX);
  6.     WndClass.style = NULL;
  7.     WndClass.lpfnWndProc = WndProc;
  8.     WndClass.cbClsExtra = 0;
  9.     WndClass.cbWndExtra = 0;
  10.     WndClass.hInstance = 0;
  11.     WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  12.     WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
  13.     WndClass.hbrBackground = CreateSolidBrush(RGB(0, 0, 0));
  14.     WndClass.lpszMenuName = NULL;
  15.     WndClass.lpszClassName = L"PeppiWndClass";
  16.     WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  17.     RegisterClassEx(&WndClass);
  18.      
  19.     //BLENDFUNCTION für updatelayeredwindow..
  20.     BLENDFUNCTION blend = {};
  21.     blend.AlphaFormat = AC_SRC_ALPHA;
  22.     blend.SourceConstantAlpha = 255;
  23.      
  24.      
  25.     // wnd mit layered-flag erstellen, WS_EX_NOACTIVATE damit mans nicht anklicken kann
  26.     HWND hwnd =CreateWindowEx(WS_EX_LAYERED /*| WS_EX_NOACTIVATE*/, WndClass.lpszClassName, L"PeppiWnd", WS_POPUP, WindowPos.x, WindowPos.y, WindowSize.cx, WindowSize.cy, NULL, NULL, NULL, NULL);
  27.     ShowWindow(hwnd, SW_SHOW);
  28.      
  29.      
  30.     // bitmap erstellen (wird später für updatelayeredwindow benutzt)
  31.     HDC WindowHDC = GetDC(hwnd);
  32.     HDC MemoryHDC = CreateCompatibleDC(WindowHDC);
  33.     HBITMAP hBitmap = CreateCompatibleBitmap(WindowHDC, WindowSize.cx, WindowSize.cy);
  34.     SelectObject(MemoryHDC, hBitmap);
  35.      
  36.      
  37.     RECT HDCRect = { 0, 0, WindowSize.cx, WindowSize.cy };
  38.     POINT HDCPos = { 0, 0 };
  39.      
  40.      
  41.     // d2d initialisieren
  42.     ID2D1Factory *pFactory;
  43.     ID2D1DCRenderTarget *pTarget;
  44.      
  45.     D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pFactory);
  46.     D2D1_PIXEL_FORMAT format = D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED);
  47.     D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties(D2D1_RENDER_TARGET_TYPE_SOFTWARE, format, 0.0f, 0.0f, D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE);
  48.      
  49.     pFactory->CreateDCRenderTarget(&props, &pTarget);
  50.      
  51.     // in das bitmap reinrendern...
  52.     pTarget->BindDC(MemoryHDC, &HDCRect);
  53.      
  54.      
  55.      
  56.     // message loop
  57.      
  58.     while (!exit)
  59.             {
  60.                     while (PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE))
  61.                     {
  62.                             if (GetMessage(&msg, 0, 0, 0) == 0)
  63.                             {
  64.                                     exit = true;
  65.                             }
  66.      
  67.                             TranslateMessage(&msg);
  68.                             DispatchMessage(&msg);
  69.                     }
  70.                    
  71.                     pTarget->BeginDraw();
  72.                     pTarget->Clear();
  73.                    
  74.                     // draw your shit here
  75.                    
  76.                    
  77.                    
  78.                     pTarget->EndDraw();
  79.      
  80.                     UpdateLayeredWindow(hwnd, WindowHDC, &WindowPos, &WindowSize, MemoryHDC, &HDCPos, NULL, &blend, ULW_ALPHA);
  81.                     Sleep(1000/60); // ~ 60fps
  82.                    
  83.     }
  84.  
  85.  
  86. //------------------------------------
  87. /*
  88. [13:46:31] <06Dr_Pepper> je nach game musste noch die klicks weiterleiten
  89. [13:46:32] <06Dr_Pepper>  // maus & keyboard weiterleitung an game
  90. [13:46:33] <06Dr_Pepper>  case WM_MOUSEMOVE:
  91. [13:46:33] <06Dr_Pepper>  case WM_LBUTTONDOWN:
  92. [13:46:33] <06Dr_Pepper>  case WM_LBUTTONUP:
  93. [13:46:33] <06Dr_Pepper>  case WM_RBUTTONDOWN:
  94. [13:46:33] <06Dr_Pepper>  case WM_RBUTTONUP:
  95. [13:46:33] <06Dr_Pepper>      PostMessage(GameWnd, Message, wParam, lParam);
  96. [13:46:33] <06Dr_Pepper>      return 0;
  97. [13:46:37] <10Igromanru> muss man für dx10/11 sdk loaden?
  98. [13:46:45] <06Dr_Pepper> nope, geht ohne
  99. [13:46:53] <06Dr_Pepper> #include <d2d1.h>
  100. [13:46:53] <06Dr_Pepper> #pragma comment(lib, "d2d1.lib")
  101. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement