Page 2 sur 2
Publié : dim. 23/août/2009 21:39
par GallyHC
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
Publié : lun. 24/août/2009 2:45
par Geo Trouvpatou
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.
Publié : lun. 24/août/2009 9:19
par Good07
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
Publié : lun. 24/août/2009 11:27
par GallyHC
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
Publié : lun. 24/août/2009 11:36
par Progi1984
Moi, ca marche pas du tt ! Que ce soit avec PB 4.40 B1 ou PB 4.30.
Publié : lun. 24/août/2009 11:50
par GallyHC
Bonjour Progi1984,
Peux tu me donnée des informations complementaires OS l'erreur ect...
Merci d'avance,
GallyHC
Publié : lun. 24/août/2009 12:12
par Progi1984
Bon ca marche ! Je crois bien que mon PC était planté (4 jours sans être éteint)...
Publié : dim. 30/août/2009 10:45
par GallyHC
Bonjour tous,
Quelque aurait une solution pour que je fasse la meme choses mais en evitant les scintillements qui a actuellment?
Merci d'avance,
GallyHC
Publié : dim. 30/août/2009 11:44
par venom
je n'en voie pas de scintillements

a quel niveau stp ?
@++
Publié : dim. 30/août/2009 20:40
par GallyHC
Bonjour venom,
Il a a quelque scintillements quand la souris passe rapidement ou des choses comme cela.
Cordialement,
GallyHC
Publié : mer. 02/sept./2009 13:58
par GallyHC
Bonjour,
Je pourrais pourrais bientôt teste sur les 3 OS, un mini mac arrive bientot.
Cordialement,
GallyHC
Publié : jeu. 03/sept./2009 0:54
par Geo Trouvpatou
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.
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
Je n'ai rien modifié dans ops_design.pb
Publié : jeu. 03/sept./2009 11:13
par GallyHC
Bonjour Geo Trouvpatou,
Ok je vois ce qui faudrais faire plus en detail je vais me penche dessus.
Cordialement,
GallyHC