c ++ - Flere Raw Input Window Sinks

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et vindue med kun besked (ATL :: CWindowImpl), der registrerer sig for rå indgang ved hjælp af RIDEV\_INPUTSINK-flagmet, hvilket betyder, at det bliver alt input uanset om vinduet er forgrundsvinduet. Dette virker godt, når der kun er én forekomst af vinduet.


Men når jeg opretter mere end 1 forekomst af mit vindue, modtager kun en WM\_INPUT-meddelelsen (jeg skaber for øjeblikket to, og kun den anden der oprettes, får meddelelserne).


RegisterRawInputDevices (ved hjælp af RIDEV\_INPUTSINK | RIDEV\_NOLEGACY) lykkes under oprettelsen af ​​begge vinduer. Vinduet modtager ikke rå input, modtager stadig andre meddelelser, så det er ikke et problem med selve vinduet ...


Hvis det er relevant, bruger jeg VC11 beta og Windows oprettes og sender meddelelser på forskellige tråde (ved hjælp af std :: tråd).


Er dette en API-begrænsning (dvs. du er begrænset til en indgangsvink per proces)? Eller er der en måde at få det til at virke?


Tak på forhånd.


REDIGERE:


Lige nu er min nuværende løsning kun at have et vindue og for at videregive input-meddelelserne til de andre vinduer, men det er et rod og vandt ikke, hvis jeg vil have det til at fungere i (hvor jeg har min app loading plugins, som måske vil have rå input, jeg vil ikke have, at de skal registrere med min app, medmindre jeg virkelig skal gøre det på den måde ...).

Bedste reference


Fra MSDN (her og her) tales hele API for Raw Input altid om applikation og ikke om vindue ... hvilket betyder at en applikation, der registrerer for rå input, vil blive bedt om af OS'et som en entitiy ... som du indirekte beviste af registrering af en anden modtagende winow - den første blev lige ved at modtage, fordi OS leverer rå input til applikationen (repræsenteret af nøjagtigt onw vindue som vasken). [1] [2]