Bonjour graph100,
C'est exactement ce que je fais, j'ouvre une fenêtre graphique dans une fenêtre normale, pour t'en persuader je te poste mon code
Code : Tout sélectionner
;CouleurConsole.pbi
Structure Couleur
CouleurTexte.i
CouleurFond.i
EndStructure
Global.Couleur CouleurConsole
Global.i Dim Couleur(15,1)
Procedure Init()
Couleur(0,0) = 0 : Couleur(0,1) = 0
Couleur(1,0) = $800000 : Couleur(1,1) = 1
Couleur(2,0) = $008000 : Couleur(2,1) = 2
Couleur(3,0) = $808000 : Couleur(3,1) = 3
Couleur(4,0) = $0000FF : Couleur(4,1) = 4
Couleur(5,0) = $800080 : Couleur(5,1) = 5
Couleur(6,0) = $000080 : Couleur(6,1) = 6
Couleur(7,0) = $F0F0F0 : Couleur(7,1) = 7
Couleur(8,0) = $808080 : Couleur(8,1) = 8
Couleur(9,0) = $FF8080 : Couleur(9,1) = 9
Couleur(10,0) = $80FF80 : Couleur(10,1) = 10
Couleur(11,0) = $FFFF80 : Couleur(11,1) = 11
Couleur(12,0) = $8080FF : Couleur(12,1) = 12
Couleur(13,0) = $FF80FF : Couleur(13,1) = 13
Couleur(14,0) = $80FFFF : Couleur(14,1) = 14
Couleur(15,0) = $FFFFFF : Couleur(15,1) = 15
EndProcedure
Init()
Procedure DefinirCouleurFond(CoulFond)
If CoulFond >= 0 And CoulFond <= 15
Select CoulFond
Case 0
CouleurConsole\CouleurFond = Couleur(0,1)
Case 1
CouleurConsole\CouleurFond = Couleur(1,1)
Case 2
CouleurConsole\CouleurFond = Couleur(2,1)
Case 3
CouleurConsole\CouleurFond = Couleur(3,1)
Case 4
CouleurConsole\CouleurFond = Couleur(4,1)
Case 5
CouleurConsole\CouleurFond = Couleur(5,1)
Case 6
CouleurConsole\CouleurFond = Couleur(6,1)
Case 7
CouleurConsole\CouleurFond = Couleur(7,1)
Case 8
CouleurConsole\CouleurFond = Couleur(8,1)
Case 9
CouleurConsole\CouleurFond = Couleur(9,1)
Case 10
CouleurConsole\CouleurFond = Couleur(10,1)
Case 11
CouleurConsole\CouleurFond = Couleur(11,1)
Case 12
CouleurConsole\CouleurFond = Couleur(12,1)
Case 13
CouleurConsole\CouleurFond = Couleur(13,1)
Case 14
CouleurConsole\CouleurFond = Couleur(14,1)
Case 15
CouleurConsole\CouleurFond = Couleur(15,1)
EndSelect
;Debug CouleurConsole\CouleurFond
ProcedureReturn CouleurConsole\CouleurFond
Else
MessageRequester("ATTENTION !", "La couleur de fond doit être entre 0 et 15", #MB_ICONEXCLAMATION)
EndIf
EndProcedure
Procedure DefinirCouleurTexte(CoulTexte)
If CoulTexte >= 0 And CoulTexte <= 15
Select CoulTexte
Case 0
CouleurConsole\CouleurTexte = Couleur(0,1)
Case 1
CouleurConsole\CouleurTexte = Couleur(1,1)
Case 2
CouleurConsole\CouleurTexte = Couleur(2,1)
Case 3
CouleurConsole\CouleurTexte = Couleur(3,1)
Case 4
CouleurConsole\CouleurTexte = Couleur(4,1)
Case 5
CouleurConsole\CouleurTexte = Couleur(5,1)
Case 6
CouleurConsole\CouleurTexte = Couleur(6,1)
Case 7
CouleurConsole\CouleurTexte = Couleur(7,1)
Case 8
CouleurConsole\CouleurTexte = Couleur(8,1)
Case 9
CouleurConsole\CouleurTexte = Couleur(9,1)
Case 10
CouleurConsole\CouleurTexte = Couleur(10,1)
Case 11
CouleurConsole\CouleurTexte = Couleur(11,1)
Case 12
CouleurConsole\CouleurTexte = Couleur(12,1)
Case 13
CouleurConsole\CouleurTexte = Couleur(13,1)
Case 14
CouleurConsole\CouleurTexte = Couleur(14,1)
Case 15
CouleurConsole\CouleurTexte = Couleur(15,1)
EndSelect
;Debug CouleurConsole\CouleurTexte
ProcedureReturn CouleurConsole\CouleurTexte
Else
MessageRequester("ATTENTION !", "La couleur du texte doit être entre 0 et 15", #MB_ICONEXCLAMATION)
EndIf
EndProcedure
Procedure ObtenirCouleurConsole()
MessageRequester("Couleurs de la console","Couleur du texte " + CouleurConsole\CouleurTexte + #LF$ +
"Couleur du fond " + CouleurConsole\CouleurFond, #MB_ICONINFORMATION)
EndProcedure
;***TEST***
CompilerIf #PB_Compiler_IsMainFile
OpenWindow(0,0,0,800,600,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
InitSprite()
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0))
StartDrawing(WindowOutput(0))
DefinirCouleurFond(1)
DefinirCouleurTexte(15)
BackColor(CouleurConsole\CouleurFond)
FrontColor(CouleurConsole\CouleurTexte)
StopDrawing()
ObtenirCouleurConsole()
StartDrawing(WindowOutput(0))
DrawText(10, 10, "Ceci est un texte de test")
StopDrawing()
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
CompilerEndIf
Code : Tout sélectionner
;FonctionsConsole.pbi
XIncludeFile "CouleurConsole.pbi"
Global X, Y, XX, YY
Declare GClearConsole()
Declare GCloseConsole()
Declare GConsoleColor(CouleurTexte, CouleurFond)
Declare GConsoleLocate(x, y)
Declare GConsoleTitle(Titre$)
Declare.s GInkey() ; sort le dernier caractère frappé
Declare.s GInput() ; sort une chaîne de caractères
Declare GOpenConsole(X.i, Y.i, Largeur.i, Hauteur.i, Titre.s)
Declare GPrint(Texte$)
Declare GPrintN(Texte$)
Procedure GClearConsole()
ClearScreen(Couleur(CouleurConsole\CouleurFond,0))
EndProcedure
Procedure GCloseConsole()
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndProcedure
Procedure GConsoleColor(CouleurTexte, CouleurFond)
DefinirCouleurTexte(CouleurTexte)
DefinirCouleurFond(CouleurFond)
StartDrawing(WindowOutput(0))
BackColor(Couleur(CouleurConsole\CouleurFond,0))
FrontColor(Couleur(CouleurConsole\CouleurTexte,0))
StopDrawing()
EndProcedure
Procedure GConsoleLocate(x, y)
XX = X : YY = Y
SetCaretPos_(XX, YY)
EndProcedure
Procedure GConsoleTitle(Titre$)
SetWindowTitle(0,Titre$)
EndProcedure
Procedure.s GInkey() ; sort le dernier caractère frappé
resultat$=KeyboardInkey()
ProcedureReturn resultat$
EndProcedure
Procedure.s GInput() ; sort une chaîne de caractères
Repeat
ExamineKeyboard()
; Efface le dernier caractère si la touche 'Back' est appuyée
;
If KeyboardReleased(#PB_Key_Back)
Texte$ = Left(Texte$, Len(Texte$)-1)
Else
resultat$=KeyboardInkey()
If FindString("1234567890 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzéèçàù", resultat$) ; Ajouter vos propres caractères valides ici
Texte$ + resultat$
EndIf ; Ajouter le nouveau texte à l'actuel (le cas échéant)
EndIf
Until KeyboardPushed(#PB_Key_Return)
ProcedureReturn Texte$
EndProcedure
Procedure GOpenConsole(X.i, Y.i, Largeur.i, Hauteur.i, Titre.s)
OpenWindow(0,X,Y,Largeur,Hauteur,Titre,#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
InitSprite()
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0))
InitKeyboard()
EndProcedure
Procedure GPrint(Texte$)
StartDrawing(WindowOutput(0))
DrawText(XX, YY, Texte$, Couleur(CouleurConsole\CouleurTexte,0), Couleur(CouleurConsole\CouleurFond,0))
XX + TextWidth(Texte$)
StopDrawing()
EndProcedure
Procedure GPrintN(Texte$)
StartDrawing(WindowOutput(0))
DrawText(XX, YY, Texte$, Couleur(CouleurConsole\CouleurTexte,0), Couleur(CouleurConsole\CouleurFond,0))
YY + TextHeight(Texte$)
StopDrawing()
EndProcedure
;-***TEST***
CompilerIf #PB_Compiler_IsMainFile
GopenConsole(0,0,1360,730,"Test")
GConsoleColor(14, 1)
GConsoleTitle("Essai console graphique")
GClearConsole()
ObtenirCouleurConsole()
GConsoleLocate(10, 10)
GPrint("Essai de texte 1 ")
GPrint("Essai de texte 2 ")
GPrintN("Essai de texte 3 ")
GConsoleLocate(10, YY)
GPrint("Essai de texte 4 ")
GPrint("Essai de texte 5 ")
GConsoleLocate(50,60)
GPrint("Essai GconsoleLocate(50,60)")
GConsoleLocate(10, 75)
GPrint("Etranger, quel est ton nom ? (Entrée) ")
Reponse.s = GInput()
GPrint(Reponse)
GCloseConsole()
CompilerEndIf
Evidemment, c'est encore en chantier, car j'avance très lentement !