winrt.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. #include "pch.h"
  2. #include <ShObjIdl.h>
  3. using namespace winrt;
  4. using namespace Windows::UI;
  5. using namespace Windows::UI::Composition;
  6. using namespace Windows::UI::Composition::Desktop;
  7. // Direct3D11CaptureFramePool requires a DispatcherQueue
  8. winrt::Windows::System::DispatcherQueueController CreateDispatcherQueueController()
  9. {
  10. namespace abi = ABI::Windows::System;
  11. DispatcherQueueOptions options {
  12. sizeof(DispatcherQueueOptions),
  13. DQTYPE_THREAD_CURRENT,
  14. DQTAT_COM_STA};
  15. Windows::System::DispatcherQueueController controller {nullptr};
  16. check_hresult(CreateDispatcherQueueController(options, reinterpret_cast<abi::IDispatcherQueueController**>(put_abi(controller))));
  17. return controller;
  18. }
  19. DesktopWindowTarget CreateDesktopWindowTarget(Compositor const& compositor, HWND window)
  20. {
  21. namespace abi = ABI::Windows::UI::Composition::Desktop;
  22. auto interop = compositor.as<abi::ICompositorDesktopInterop>();
  23. DesktopWindowTarget target {nullptr};
  24. check_hresult(interop->CreateDesktopWindowTarget(window, true, reinterpret_cast<abi::IDesktopWindowTarget**>(put_abi(target))));
  25. return target;
  26. }