Creation d'un volet Windows, Linux et j'espere MacOS
Merci tous et merci Cpl.Bator faut que je vois pour le macos aussi...
Si je retire EnableExplicit tout fonctionne sur linux sinon j'ai une erreur et je ne sais comment declarer *Windows.
L'erreur: With 'enableexplicit' variable have to be declared: *Windows
Cordialement,
GallyHC
Si je retire EnableExplicit tout fonctionne sur linux sinon j'ai une erreur et je ne sais comment declarer *Windows.
L'erreur: With 'enableexplicit' variable have to be declared: *Windows
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
T'as essayé à la place de :
*Window.GTKWindow = Wnd
de mettre
Define *Window.GTKWindow = Wnd
J'suis pas sous Linux actuellement.
Idée : n'est-il pas possible de dessiner l'arrière-plan bleu avec son contour dés le départ pour que son code ne soit pas dans la boucle, parce que c'est certainement ce qui fait que l'arrière-plan (le fond) clignote.
Et faire en sorte que le fond soit re-déssiné uniquement lors du redimensionnement de l'interface.
Bref, il faudrait qu'il n'y ai que les boutons qui se rafraichissent dans la boucle, mais pas le fond.
J'espère que tu m'as compris ?
Bye.
*Window.GTKWindow = Wnd
de mettre
Define *Window.GTKWindow = Wnd
J'suis pas sous Linux actuellement.
Idée : n'est-il pas possible de dessiner l'arrière-plan bleu avec son contour dés le départ pour que son code ne soit pas dans la boucle, parce que c'est certainement ce qui fait que l'arrière-plan (le fond) clignote.
Et faire en sorte que le fond soit re-déssiné uniquement lors du redimensionnement de l'interface.
Bref, il faudrait qu'il n'y ai que les boutons qui se rafraichissent dans la boucle, mais pas le fond.
J'espère que tu m'as compris ?
Bye.
Bonjour à tous,
Testé sous PureBasic 4.40 Beta 2
Clic de la souris sur le volet:
MacosX 10.5=3
Aucun problème en lançant le programme avec ou sans débogueur.
Par contre je suis obligé de mettre la taille de la fonte Verdana à 10 sinon c'est pratiquement illisible.
Résolution 1680x1050
Testé sous PureBasic 4.40 Beta 2
Clic de la souris sur le volet:
MacosX 10.5=3
Aucun problème en lançant le programme avec ou sans débogueur.
Par contre je suis obligé de mettre la taille de la fonte Verdana à 10 sinon c'est pratiquement illisible.
Résolution 1680x1050
Code : Tout sélectionner
Global FontID2 : FontID2 = LoadFont(2, "Verdana", 10)
Bonjour tous,
Geo Trouvpatou> je vais voir cela de suite
. Et je suis maintenant entrain de voir l'optimisation du code.
Good07> Merci pour l'information pour la police je penses que cela est du a la taille de l'ecran je verrais qi il y a quelque choses a faire.
Cordialement,
GallyHC
Geo Trouvpatou> je vais voir cela de suite

Good07> Merci pour l'information pour la police je penses que cela est du a la taille de l'ecran je verrais qi il y a quelque choses a faire.
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Moi, ca marche pas du tt ! Que ce soit avec PB 4.40 B1 ou PB 4.30.
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Bon ca marche ! Je crois bien que mon PC était planté (4 jours sans être éteint)...
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
Salut.
Je ne sais pas si tu vas comprendre.
J'ai ajouté la procedure setTraceVoletBackground(pasx.l,pasy.l)
qui permet de dessiner le background, ensuite le principe serait de ne dessiner que les boutons par dessus ce background.
Donc il y aura peut-être un clignotement au niveau des boutons mais pas pour le background.
Dans le code ci-dessous j'ai mis un bouton en dur.
A toi de voir si il y a possibilité de faire quelque chose avec ça.
Actuellement le redimensionnement du volet fonctionne.
Je te laisse rebidouiller ta procedure setTraceVolet qui deviendra peut-être setTraceButton.
Bref dans cette procedure il faudrait que tu fasses en sorte de chaque bouton ait son propre ImageGadget dessiné par dessus le background.Je n'ai rien modifié dans ops_design.pb
Je ne sais pas si tu vas comprendre.
J'ai ajouté la procedure setTraceVoletBackground(pasx.l,pasy.l)
qui permet de dessiner le background, ensuite le principe serait de ne dessiner que les boutons par dessus ce background.
Donc il y aura peut-être un clignotement au niveau des boutons mais pas pour le background.
Dans le code ci-dessous j'ai mis un bouton en dur.
A toi de voir si il y a possibilité de faire quelque chose avec ça.
Actuellement le redimensionnement du volet fonctionne.
Je te laisse rebidouiller ta procedure setTraceVolet qui deviendra peut-être setTraceButton.
Bref dans cette procedure il faudrait que tu fasses en sorte de chaque bouton ait son propre ImageGadget dessiné par dessus le background.
Code : Tout sélectionner
; +======================================================+
; | |
; +------------------------------------------------------+
; | COPYRIGHT(C)2007-2008, ALL RIGHT RESERVED KOAKDESIGN |
; +--------------+---------------------------------------+
; | VER & REV | 3.0.0 RC0 |
; +--------------+---------------------------------------+
; | Program type | PUREBASIC 4.30 (PRINCIPAL) |
; +======================================================+
; +======================================================+
; | Original Version: 3.0.0 RC0 | |
; +--------------+-----------------+---------------------+
; | Created by | |
; | Graphix by | |
; +======================================================+
; +======================================================+
; | Original Version: | |
; +--------------+-----------------+---------------------+
; | Created by | |
; | Graphix by | |
; +--------------+---------------------------------------+
; | Comments: | |
; +--------------+ |
; | |
; | |
; | |
; +======================================================+
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
EnableExplicit
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
#WinLenX = 640
#WinLenY = 480
Enumeration
#Window_0
#Window_1
#MnuMenu_0
#StatusBar_0
EndEnumeration
Enumeration
#picture_0
#picture_1
EndEnumeration
Global xborder.l
Global yborder.l
Global ystatus.l
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
If InitMouse() = 0 Or InitKeyboard() = 0
End
EndIf
UsePNGImageDecoder()
Global FontID1 : FontID1 = LoadFont(1, "Arial", 13, #PB_Font_Bold)
Global FontID2 : FontID2 = LoadFont(2, "Verdana", 7)
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
XIncludeFile "includes/ops_design.pbi"
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
#PB_EventType_MouseClick = 13100
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
#PB_EventType_MouseClick = 3
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
#PB_EventType_MouseClick = 0
CompilerEndIf
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
Procedure setTraceVoletBackground(pasx.l,pasy.l)
If CreateImage(#picture_0,pasx,pasy)
If StartDrawing(ImageOutput(#picture_0))
Box(0, 0, pasx, pasy, $F08F0F)
Box(1, 1, pasx-2, pasy-2,$FFFFFF)
Box(2, 2, pasx-4, pasy-4,$FEEEDA)
StopDrawing()
EndIf
ImageGadget(#picture_0,0,0,pasx,pasy,ImageID(#picture_0))
EndIf
EndProcedure
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Define i.l
Define hWnd.l
hWnd = OpenWindow(#Window_0, 0, 0, #WinLenX, #WinLenY, "Volet", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
SetWindowColor(#Window_0, $ffffff)
If CreateMenu(#MnuMenu_0, WindowID(#Window_0))
MenuTitle("&Fichier")
EndIf
If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
AddStatusBarField(#PB_Ignore)
StatusBarText(#StatusBar_0, 0, "TEXTE" ,#PB_StatusBar_Center)
EndIf
; PROCEDURE PRINCIPALE (MAIN_FUNCTION).
Define event.l
Define mposx.l
Define mposy.l
Define maxvtst.b
xborder = WindowWidth(#Window_0)
yborder = WindowHeight(#Window_0)
ystatus = StatusBarHeight(#StatusBar_0)
;setTraceVolet(120, yborder-(StatusBarHeight(#StatusBar_0)+ystatus))
Repeat
mposx = WindowMouseX(#Window_0)
mposy = WindowMouseY(#Window_0)
event = WaitWindowEvent(50)
If event<>0 And event<>-1
Debug event
EndIf
If event = #PB_Event_SizeWindow
xborder = WindowWidth(#Window_0)
yborder = WindowHeight(#Window_0)
ystatus = StatusBarHeight(#StatusBar_0)
;setTraceVolet(120, yborder-(StatusBarHeight(#StatusBar_0)+ystatus))
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; CODE ICI, pour redimensionner le volet bleu et surtout redessiner le bouton
setTraceVoletBackground(120,yborder-(StatusBarHeight(#StatusBar_0)+ystatus))
; Pour bien faire, il faudrait dans ta procedure setTraceVolet créer un ImageGadget pour chaque bouton.
; Que chacun ait le sien.
;
; Et surtout ne pas traiter le fond général en bleu dans cette procedure, parce que c'est à cause
; de ça le clignotement.
If CreateImage(104,105,100)
If StartDrawing(ImageOutput(104))
setTraceBox(0,0,105,100,2,"Menu")
StopDrawing()
EndIf
ImageGadget(104,6,6,105,100,ImageID(104)) ; ON met l'image du bouton dessus le volet gauche.
EndIf
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EndIf
;;; ROUTINE DE GESTION DU VOLET
If mposx>5 And mposx<109 And mposy>5 And mposy<6+((#VolMaxi+1)*60)
For i=0 To #VolMaxi Step 1
If maxvsel <> i
If mposx>5 And mposx<109 And mposy>6+(i*60) And mposy<6+(i*60)+58
maxvtst = #False
maxvsel = i
;setTraceVolet(120, yborder-(StatusBarHeight(#StatusBar_0)+ystatus))
EndIf
Else
If event = #PB_EventType_MouseClick
If mposx<109 And mposy>6+(i*60) And mposy<6+(i*60)+58 And maxvpos <> maxvsel And EventType() = #PB_EventType_LeftClick
maxvtst = #True
maxvpos = maxvsel
;setTraceVolet(120, yborder - (StatusBarHeight(#StatusBar_0) + ystatus))
EndIf
EndIf
EndIf
Next i
Else
If maxvtst = #False
maxvtst = #True
maxvsel = -1
;setTraceVolet(120,yborder - (StatusBarHeight(#StatusBar_0) + ystatus))
EndIf
EndIf
;;; FIN ROUTINE DE GESTION DU VOLET
Until event = #PB_Event_CloseWindow
EndIf
End