Page 1 sur 1
[Résolu] Full screen mode Direct X - window on top.
Publié : ven. 22/févr./2013 13:33
par Arbrakan
Bonjour à tous !
Juste une petite question par rapport à la manière de procéder (
si cela est possible) pour afficher une fenêtre (
3d ou pas) par dessus un fenêtre direct X pleins écran.
En gros ce que je veux réussir a faire c'est afficher des informations a l'ecrant alors que je suis en fullscreen sous direct X.
Un peux comment fait
Fraps (affichage de FPS a l'ecran, en jeu.)
Il me semble que utilisé le GUI de window en mode pleins ecran est impossible et que tout passe par Direct X ?
Le seul début de réponse que j'ai trouve sur un forum
C++ anglais :
The only way to draw on top is to intercept the DirectX API calls and insert your own. I suspect this is is what Xfire, Pix and Fraps all do to draw on top of the screen
Je pense qu'il y a moyens d’interagir avec l'API de Direct X avec PureBasic ?
Après comment dégoupiller tout ça, et est ce que c'est la bonne méthode ?
merci.
Arbrakan
Re: Full screen mode Direct X - window on top.
Publié : ven. 22/févr./2013 14:55
par Backup
et une simple fenetre avec l'attribut Sticky devrai marcher ...
lance ce code 10 secondes AVANTavoir lancé ton prg en plein Ecran ...
la fenetre devrai apparaitre 10 secondes apres son lancement tu peux changer le Temps de démarrage
en mettant Delay(60000) , la fenetre apparaitra 1 inute apres le lancement de ce prg
Code : Tout sélectionner
Enumeration
#win
EndEnumeration
Delay(10000)
If OpenWindow(#win, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
ResizeWindow(#win, #PB_Ignore, #PB_Ignore, 320, 200) ; Resize the window to 320,200
StickyWindow(#win, 1)
;
; This is the 'event loop'. All the user actions are processed here.
; It's very easy to understand: when an action occurs, the Event
; isn't 0 and we just have to see what have happened...
;
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf
Until Quit = 1
EndIf
; EPB
Re: Full screen mode Direct X - window on top.
Publié : ven. 22/févr./2013 15:17
par Arbrakan
Merci pour la réponse rapide !
Malheureusement avec mon autre programme en pleine écran, la fenêtre ne s'affiche pas. Par contre en mode fenêtrée, elle passe devant correctement. Je pense que c'est dû a DirectX qui coupe les accès du GUI de Window. Après, j'ai pas plus de connaissances que ça sur le sujet.
En pensant a la chose, et parmi mes différents recherche sur Internet, je pense qu'il faudrait réussir a passé dans le back-buffer pour afficher la fenêtre, ou informations, directement a Direct X ? J'espère qu'il existe une autre méthode par contre... Et je sais même pas si c'est réellement possible.
Mais merci pour le bout de code, je vais le tourné dans tout les sens voir si j'arrive pas a me rapprocher de ce que j'ai besoin.
Sinon, au pire des cas.. est-t-il possible d’accéder a l'API de Direct X via PureBASIC ?
merci.
Arbrakan
Re: Full screen mode Direct X - window on top.
Publié : ven. 22/févr./2013 15:36
par Backup
apparemment DarkDragon du Forum anglais a fait un truc dans le Genre
voir ici :
http://www.purebasic.fr/english/viewtopic.php?t=20906
Re: Full screen mode Direct X - window on top.
Publié : ven. 22/févr./2013 15:45
par Arbrakan
Hook... C'est clair que si je connais pas les termes... Impec!, merci pour ton aide rapide ! Je vais voir tout ça .
Merci !
Arbrakan
Re: [Résolu] Full screen mode Direct X - window on top.
Publié : ven. 22/févr./2013 18:31
par graph100
Par contre, méfie toi, certain programme, comme les jeux bien fait détectent ces hooks, et les classes comme des tentatives de fraude... C'est surtout vrai pour les jeux en ligne

Re: [Résolu] Full screen mode Direct X - window on top.
Publié : ven. 22/févr./2013 20:02
par Arbrakan
Par contre, méfie toi, certain programme, comme les jeux bien fait détectent ces hooks, et les classes comme des tentatives de fraude... C'est surtout vrai pour les jeux en ligne

Ah bah, merci du conseil, c'est noté. J'y avais pas pensé.
Mais c’était pas le but.
Arbrakan