c ++ - For at deaktivere dampoverlay

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har følgende opsætning til spillet:



  1. launcher.exe - starter under Steam på Windows og giver nogle brugerindstillinger til brugeren.

  2. Then launcher.exe starter faktisk game.exe.



Problemet er, at launcher.exe bruger H/W accelereret brugergrænseflade - bruger Direct2D/DirectX.


Denne side https://partner.steamgames.com/doc/features/overlay angiver: [1]



  Dit spil behøver ikke at gøre noget særligt for overlejringen til
  arbejde, det hænger automatisk ind i ethvert spil lanceret fra Steam!



Men i mit tilfælde der skaber problemer - overlejringen er oprettet på et forkert vindue. Så launcher.exe (bruger DirectX) har overlay men vindue, der er skabt af game.exe (ægte spil, bruger DirectX og/eller OpenGL) er ikke.


Og spørgsmålet er: Hvordan kan jeg ændre kode på mit launcher.exe-vindue for at forhindre Steam overlay til at blive oprettet på det 'automatisk'?


Opdatering, svar fra Valve's TS:



  Beklager, der er ingen kode på plads til selektivt at aktivere eller deaktivere
  overlay mellem launchers og spil!



Den eneste 'mulighed' er at deaktivere DirectX-tegning i launcher.exe. I dette tilfælde vil deres injicerede DLL ikke skabe den ting. Men det betyder faktisk ingen GPU fremskyndet UI tegning under Steam ... Kind of '640kb er nok for alle' type design.


Ideelt set bør Steam sende en brugerdefineret meddelelse til vinduet for at spørge, hvordan og hvor vinduet ønsker at overlejringen skal udføres. Men tilsyneladende er der ingen sådan ting, eller er det?


Bare for sammenhængen ser lanceringen ud som:


Som du ser, er der ikke plads til overlay [2]

Bedste reference