multitache plien ecran "CA MARCHE "

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Marcus
Messages : 187
Inscription : jeu. 22/janv./2004 19:08
Contact :

multitache plien ecran "CA MARCHE "

Message par Marcus »

j'y croyais plus , enfin trouvé :D 8O

Code : Tout sélectionner

; ---------Multitache plien ecran Marcus.Zone 2004 ---------------
InitSprite() :InitSprite3D(): InitKeyboard() : InitMouse()  
Global xx.f ,p.f ,relire.b
xx=0 :p = 2: relire=0
Declare Charger_sprites()
OpenScreen(640, 480, 32, "poker")

While Quit = 0  
  ExamineKeyboard()
  If IsScreenActive() And ScreenDeActivated = #False   
    If relire =0 : Charger_sprites() : relire =1 : EndIf
    
    ClearScreen(0, 80, 0)
    If Start3D() 
      xx + p 
      If xx > 359 : xx=0 : EndIf 
      RotateSprite3D(1, xx, 0)
      DisplaySprite3D (1, 80, 75, 255) 
      Stop3D()
    EndIf  
    DisplaySprite(1,400,100) 
    StartDrawing(ScreenOutput()) 
    DrawingMode(1) 
    FrontColor(255,255,255)
    Locate(110,240)
    DrawText("Sprite3D")
    Locate(430,240)
    DrawText("Sprite2D")
    FrontColor(0,0,255)
    Locate(10,10)
    DrawText("Test multitache plien écran 'Marcus.Zone 2004' ")
    Locate(10,400)
    FrontColor(255,255,0)
    DrawText("TAB+ALT pour retour windows ")
    Locate (10,440)
    DrawText("puis Click sur 'Poker' dans la barre des tache pour revenir ici !")
    StopDrawing() 
    
  ElseIf IsScreenActive() And ScreenDeActivated = #True 
    ScreenDeActivated = #False 
    relire =0
  Else
    ScreenDeActivated = #True
    Delay(10)
  EndIf 
  
  FlipBuffers()  
  
  If KeyboardPushed(#PB_Key_Escape) : Quit = 1 : EndIf 
Wend 
End

Procedure Charger_sprites() 
  LoadSprite(1, "poker.bmp", #PB_Sprite_Texture) 
  CreateSprite3D(1, 1)
  Sprite3DQuality(1)
EndProcedure
sprite:
http://perso.wanadoo.fr/marcus.zone/images/poker.bmp

Merci à tous pour vos remarque qui m'ont incité à chercher encore :wink:
Toutes mes excuses à Fred :oops:
Oui c'est le Meilleur ton Pure :D
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

génial marcus.
je suis content que tu ai enfin trouvé une réponse à cette #@^¤ de restriction...
ce que tu nous montres là prouve d'ailleurs qu'il ne s'agit pas d'une limitation de pure mais plutot comment bien programmer sur windows...
Image
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

beuh, si tu garde le alt appuyé après le le alt-tab, l'écran window passe dans la résolution de ton programme et la fenetre de ton app apparait, seul solution tuer poker par le gestionnaire de tâche

patrick
Marcus
Messages : 187
Inscription : jeu. 22/janv./2004 19:08
Contact :

Message par Marcus »

bien vu ! effectivemnt tu as raison Patrick

cela n'est pas du à mon code , mais plutot avec tout les pliens ecrans en Pure !
Du travail pour Fred quoi !
ceci dis il faut s'y éterniser sur la touche alt pour retourner ce bug !
mais bon ça fait suer quand m^m :roll:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tiens, bizarre, sur le mien, ça ne fait pas ça. (XP)

Si je maintiens la touche Alt, ça fait un petit flash ou on voit apparaitre le programme qui tourne sous Windows, (par exemple, l'éditeur de Pure), à chaque fois que j'appuie sur Tab.

Lorsque je relache la touche Alt, le prog en plein écran se met en icône dans la barre de tache, mais sans modifier la résolution de Windows.

Et quand je cliques sur l'icône, le prog plein ecran se réaffiche normalement, et poursuit son éxécution.

Bref, pour moi, ça marche pile-poil.

Bravo, bon boulot :)

Chris :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tu as essayé de mettre le FlipBuffer avant le If IsScreenActive(). ?

L'aide dit qu'il faut le mettre avant, j'ai essayé, et je n'ai plus le phénomène de flash.

Le prog plein ecran se réduit directement dans la barre de tache, au lieu d'attendre le relachement de la touche Alt.

Chris :)
Marcus
Messages : 187
Inscription : jeu. 22/janv./2004 19:08
Contact :

Message par Marcus »

non sa fait pareil !
le probleme est que l'icone de la tache n'apparait pas avec les autres dans le fenetre au milieu de l'ecran , celle qui deroule les tab+alt
??
si le jeu a une resolution plus petite que le bureau, on n'a plus acces a la barre des taches qui n'aparait plus a l'ecran car trop basse !
mystere !
desidement on s'en sortira jamais :

j'ai modifié le code suivant ta remarque chris:

Code : Tout sélectionner

; ---------Multitache plien ecran Marcus.Zone 2004 ---------------
InitSprite() :InitSprite3D(): InitKeyboard() : InitMouse()  
Global xx.f ,p.f ,relire.b,multitache.b
xx=0 :p = 2: relire=0:multitache=1
Declare Charger_sprites()
OpenScreen(640, 480, 32, "poker")

While Quit = 0  
  ExamineKeyboard()
  FlipBuffers()
  multitache = IsScreenActive()
  If multitache = 1 And ScreenDeActivated = #False   
    If relire =0 : Charger_sprites() : relire =1 : EndIf
    
    ClearScreen(0, 80, 0)
    If Start3D() 
      xx + p 
      If xx > 359 : xx=0 : EndIf 
      RotateSprite3D(1, xx, 0)
      DisplaySprite3D (1, 80, 75, 255) 
      Stop3D()
    EndIf  
    DisplaySprite(1,400,xx)
    StartDrawing(ScreenOutput()) 
    DrawingMode(1) 
    FrontColor(255,255,255)
    Locate(110,240)
    DrawText("Sprite3D")
    Locate(430,240)
    DrawText("Sprite2D")
    FrontColor(0,0,255)
    Locate(10,10)
    DrawText("Test multitache plien écran 'Marcus.Zone 2004' ")
    Locate(10,400)
    FrontColor(255,255,0)
    DrawText("TAB+ALT pour retour windows ")
    Locate (10,440)
    DrawText("puis Click sur 'Poker' dans la barre des tache pour revenir ici !")
    StopDrawing() 
              
  ElseIf multitache = 1  And ScreenDeActivated = #True 
    ScreenDeActivated = #False 
    relire =0
  Else
    ScreenDeActivated = #True
    Delay(10)
  EndIf    
  
  If KeyboardPushed(#PB_Key_Escape) : Quit = 1 : EndIf 
Wend 
End

Procedure Charger_sprites() 
  LoadSprite(1, "poker.bmp", #PB_Sprite_Texture) 
  CreateSprite3D(1, 1)
  Sprite3DQuality(1)
EndProcedure
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

humm , bétement... as tu essayer de desassembler le programme blitz, histoire de voir quel appel à quelle fonction il faisait... voir comment il fait ?

je sais que c'est pas facile, mais si blitz le fait pourquoi pas pb ...

patrick
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Chez moi, ce code marche parfaitement.
La résolution est changée en 640 x 480 quand Poker fonctionne, je retourne bien en 1024x768 après le Alt+Tab quand le prog est minimisé, et l'icone et la barre de taches sont bien visibles.
Le passage en mode "Windows" se fait sans attendre le relachement de la touche "Alt".
Quand je cliques sur l'icone de Poker, il retourne en 640x480, et poursuit son fonctionnement.

C'est le premier code, avec pour seule différence le FlipBuffers() qui est déplacé tout de suite après ExamineKeyboard().

Sans doute une histoire de pilote de carte graphique.
La mienne : GEForce 4 MX420, 64 Mo, résolution 1024x768, en 16 bits

Testé également sur un portable,
Carte ATI Rage AGP 2X, 8 Mo, résolution 1024x768, en 16 bits

Code : Tout sélectionner

; ---------Multitache plien ecran Marcus.Zone 2004 --------------- 
InitSprite() :InitSprite3D(): InitKeyboard() : InitMouse()  
Global xx.f ,p.f ,relire.b 
xx=0 :p = 2: relire=0 
Declare Charger_sprites() 
OpenScreen(640, 480, 32, "poker") 

While Quit = 0  
  ExamineKeyboard() 
  FlipBuffers()  
  
  If IsScreenActive() And ScreenDeActivated = #False    
    If relire =0 : Charger_sprites() : relire =1 : EndIf 
    
    ClearScreen(0, 80, 0) 
    If Start3D() 
      xx + p 
      If xx > 359 : xx=0 : EndIf 
      RotateSprite3D(1, xx, 0) 
      DisplaySprite3D (1, 80, 75, 255) 
      Stop3D() 
    EndIf  
    DisplaySprite(1,400,100) 
    StartDrawing(ScreenOutput()) 
    DrawingMode(1) 
    FrontColor(255,255,255) 
    Locate(110,240) 
    DrawText("Sprite3D") 
    Locate(430,240) 
    DrawText("Sprite2D") 
    FrontColor(0,0,255) 
    Locate(10,10) 
    DrawText("Test multitache plien écran 'Marcus.Zone 2004' ") 
    Locate(10,400) 
    FrontColor(255,255,0) 
    DrawText("TAB+ALT pour retour windows ") 
    Locate (10,440) 
    DrawText("puis Click sur 'Poker' dans la barre des tache pour revenir ici !") 
    StopDrawing() 
    
  ElseIf IsScreenActive() And ScreenDeActivated = #True 
    ScreenDeActivated = #False 
    relire =0 
  Else 
    ScreenDeActivated = #True 
    Delay(10) 
  EndIf 
  
  If KeyboardPushed(#PB_Key_Escape) : Quit = 1 : EndIf 
Wend 
End 

Procedure Charger_sprites() 
  LoadSprite(1, "poker.bmp", #PB_Sprite_Texture) 
  CreateSprite3D(1, 1) 
  Sprite3DQuality(1) 
EndProcedure
Marcus
Messages : 187
Inscription : jeu. 22/janv./2004 19:08
Contact :

Message par Marcus »

chez moi sa merde si l'on satarde avec la touche alt !

as tu testé en maintenant la touche alt et relachant simplement la tab ?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Oui, pas de problème!
Marcus
Messages : 187
Inscription : jeu. 22/janv./2004 19:08
Contact :

Message par Marcus »

mystere ?
je suis avec windows 2000 et toi Patrick ?
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

j'ai pas reéssayé avec le code de chris, 2 secondes , j'essaye....

hum, idem, si je m'attarde sur la touche tab, ça chiotte...

idem, win2000 sp4 - geforce4 ti 4200

patrick
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

aucun pb chez moi avec xp avec la version de marcus et la modif de chris
Image
Marcus
Messages : 187
Inscription : jeu. 22/janv./2004 19:08
Contact :

Message par Marcus »

nickel sa marche ,
t'avais raison Chris c'etait le drivers graphique
j'ai mis le derniers nvidia 61.76
Patrick , j'ai aussi win2000 sp4 - geforce4 ti 4200

http://www.touslesdrivers.com/index.php ... _code=5603

Marcus content :D
le mauvaises langues diront "c'est pas souvent" :lol:
Répondre