Creation d'un volet Windows, Linux et j'espere MacOS

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Message 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.
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message 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

Code : Tout sélectionner

Global FontID2 : FontID2 = LoadFont(2, "Verdana", 10)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Moi, ca marche pas du tt ! Que ce soit avec PB 4.40 B1 ou PB 4.30.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Message par GallyHC »

Bonjour Progi1984,

Peux tu me donnée des informations complementaires OS l'erreur ect...

Merci d'avance,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Bon ca marche ! Je crois bien que mon PC était planté (4 jours sans être éteint)...
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

je n'en voie pas de scintillements 8O a quel niveau stp ?





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Message par GallyHC »

Bonjour venom,

Il a a quelque scintillements quand la souris passe rapidement ou des choses comme cela.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Message par GallyHC »

Bonjour,

Je pourrais pourrais bientôt teste sur les 3 OS, un mini mac arrive bientot.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Message 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
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Message par GallyHC »

Bonjour Geo Trouvpatou,

Ok je vois ce qui faudrais faire plus en detail je vais me penche dessus.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre