Page 1 sur 2

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

Publié : dim. 23/août/2009 11:37
par GallyHC
Bonjour,

Je suis en train de faire un programme ou il y aura un volet a gauche un peu à la Outlook. Je vous donne deja le debut et vous pouvais voir a essaye de l'ameliorer.

http://www.koakdesign.info/programme_volet.zip

Merci d'avance,
GallyHC

Publié : dim. 23/août/2009 13:06
par Atomo
J'ai une erreur au lancement dans le fichier "ops_design.pbi" ligne 157 : "specified Height is negative".

Publié : dim. 23/août/2009 13:32
par GallyHC
J'ai PB 4.31 et je n'ai aucun problème pouvez vous me preciser votre OS + version et la version de PB.

Publié : dim. 23/août/2009 13:36
par venom
Bonjour,

moi j'ai lancer en PureBasic 4.30 et ubuntu quand je lance rien ne se passe meme pas un message du débogeur rien 8O






@++

Publié : dim. 23/août/2009 14:16
par Geo Trouvpatou
Salut.

Ah! Pas mal, dommage que cela clignote un peu (Je chipote), sinon c'est beau.

J'ai sorti l'interface hors de l'écran, tout est nickel.
Redimensionner la hauteur et la partie gauche se redimensionne aussi.

Tu n'as pas trouvé le moyen de centrer le texte en hauteur ?

Sinon j'ai regardé le pbi et pas de code spécial Windows, donc ça pourrait éventuellement le faire sous Linux.

Avec la 4.31 et 4.40b1 :
Avec Debugger : L'interface apparait et disparait aussitôt et erreur dans le code ops.pbi ligne 156 : The specified "Height" is négativ.

Sans Debugger : Ça fonctionne.

Mais à la longue, le clignotement s'avère un peu embêtant.
Mais chapeau, parce que c'est beau

Bye.

[EDIT] Je fais chauffer les lampes de lautre vieux coucou sous Linux et je te dis ce qu'il en est.

Publié : dim. 23/août/2009 14:26
par venom
autant pour moi le debugger etait enlever :oops:
voici donc l'erreur sous linux :

ops_design.pbi
ligne 156
If CreateImage(#picture_0,pasx,pasy)
[ERROR] The specified 'Height' is negative.

chez moa pasx = 120 et pasy = 434



@++

Publié : dim. 23/août/2009 14:58
par Geo Trouvpatou
Même config que Venom sous Nux.
Avec Debugger : L'interface apparait et disparait aussitôt et erreur dans le code ops.pbi ligne 156 : The specified "Height" is négativ.

Sans Debugger : L'interface apparait et disparait aussitôt sans erreur.

En prenant l'exemple de la doc :

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 30, "Position de la souris sur la fenêtre", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

    TextGadget(0, 10, 6, 200, 20, "")
    
    Repeat
      Event = WaitWindowEvent(20) ; Boucle au moins chaque 20ms pour une mise à jour
    
      SetGadgetText(0, "Coordonnées: " + Str(WindowMouseX(0)) + "," + Str(WindowMouseY(0)))       
    Until Event = #PB_Event_CloseWindow
  EndIf
Dés le départ lorsque la souris n'est pas sur la fenêtre, les coordonnées sont -1 et -1, c'est peut-être pour ça que ça plante direct au lancement.

Pour en revenir au clignotement, il faut se dire que l'utilisateur normal, clique sur le bouton dans le menu et terminé.
Il ne s'amuse pas à gigoter sa souris sur le menu pendant 10mn :wink:.

Tiens j'ai retrouvé un de mes 1er post avec un menu du même style que toi GallyHc.

Publié : dim. 23/août/2009 15:37
par Oliv
Geo Trouvpatou a écrit :Même config que Venom sous Nux.
Avec Debugger : L'interface apparait et disparait aussitôt et erreur dans le code ops.pbi ligne 156 : The specified "Height" is négativ.

Sans Debugger : L'interface apparait et disparait aussitôt sans erreur.
.
Idem sous MacOS avec PB4.30

Publié : dim. 23/août/2009 16:19
par GallyHC
Merci a tous je vais voir le pourquoi.

Je suis sur XP pas de prob et sa fonctionne sur Ubuntu avant il n'y a aucune commande or celle du pure pour etre compatible.

Je vais voir cela rapidement, Je voulais vous le faire partage mais peu etre trop ativement ;). Apres j'espere pouvoir y mettre des icones.

Cordialement,
GallyHC

Publié : dim. 23/août/2009 17:39
par GallyHC
Voila j'ai corrige,

Sa apparait sur WinXP et Ubuntu... Par contre j'ai un autre problème sur ubuntu que je vais expose ici.

a cette ligne

If mposx<109 And mposy>6+(i*60) And mposy<6+(i*60)+58 And maxvpos <> maxvsel And EventType() = #PB_EventType_LeftClick

il y a EventType() = #PB_EventType_LeftClick sa fonctionne sans prob sur windows mais sur linux sa fait comme si le bouton ete toujours clique et la je ne comprend pas.

Toujours le meme lien : http://www.koakdesign.info/programme_volet.zip

Cordialement,
GallyHC

PS : pouvez vous me dire si sur MacOs cela fonctionne maintenant? Et soye indulgant je debute en purebasic :)

Publié : dim. 23/août/2009 18:05
par Progi1984
As tu quelques screenshots du rendu ?

Publié : dim. 23/août/2009 18:12
par GallyHC
Voila une capture d'écran : La partie en bleu fonce est quand cela est sélectionné et la partie bleu moin fonce est quand la souris passe dessus.

Image

Cordialement,
GallyHC

Publié : dim. 23/août/2009 18:14
par venom
tourne parfaitement sous ubuntu maintenant bien jouer le rendu est pas mal bravo.




@++

Publié : dim. 23/août/2009 19:42
par GallyHC
Voila j'ai fais une petite correction pour linux. J'aurais besoin d'aide des MacOSien ;) quaand on clique sur la sourie WaitWindowEvent() envois un code

13100 pour Windows
3 pour linux
? pour MacOS

Pour savoir c simple j'ai mis un debug il faut juste positionne la souris dans le volet et clique avec la Souris, restant le bouton enfonce sa donne un chiffre. Pouvez vous me le donné pour que je l'ajoute.

Cordialement,
GallyHC

PS: ou y a t'il une facon becoup plus simple d'avoir le clique de la souris fiable sur les 3 OS?

Publié : dim. 23/août/2009 20:02
par Anonyme
http://www.purebasic.fr/english/viewtopic.php?t=17998&

Code : Tout sélectionner

Procedure WindowMouseButton(Wnd, ButtonNr)
	
	CompilerIf #PB_Compiler_OS = #PB_OS_Linux
	;Linux Version
	
	Protected gdkWnd.l, x.l, y.l, mask.l
	
	If Wnd
		*Window.GTKWindow = Wnd
		gdkWnd = *Window\bin\child\window
		gdk_window_get_pointer_(gdkWnd, @x, @y, @mask)
		
		Select ButtonNr
			Case 0
				If (mask & #GDK_BUTTON1_MASK)
					ProcedureReturn 1
				EndIf
			Case 1
				If (mask & #GDK_BUTTON3_MASK)
					ProcedureReturn 1
				EndIf
			Case 2
				If (mask & #GDK_BUTTON2_MASK)
					ProcedureReturn 1
				EndIf
		EndSelect
	EndIf
	
	CompilerElse
	;Windows Version
	
	If Wnd And GetForegroundWindow_() = Wnd
		Select ButtonNr
			Case 0
				If GetAsyncKeyState_(#VK_LBUTTON) > 0
					ProcedureReturn 1
				EndIf
			Case 1
				If GetAsyncKeyState_(#VK_RBUTTON) > 0
					ProcedureReturn 1
				EndIf
			Case 2
				If GetAsyncKeyState_(#VK_MBUTTON) > 0
					ProcedureReturn 1
				EndIf
		EndSelect
	EndIf
	
	CompilerEndIf
	
	ProcedureReturn 0
EndProcedure

;-ExampleCode:

OpenWindow(0, 0, 0, 300, 200, #PB_Window_SystemMenu, "Test")

hWnd = WindowID()
If hWnd <> 0

CreateGadgetList(WindowID())
TextGadget(0, 10, 10, 280, 20, "Status")

Repeat
	Event = WindowEvent()
	
	If WindowMouseButton(hWnd, 0)
		SetGadgetText(0, "Left MouseButton pressed"  )
	ElseIf WindowMouseButton(hWnd, 1)
		SetGadgetText(0, "Right MouseButton pressed" )
	ElseIf WindowMouseButton(hWnd, 2)
		SetGadgetText(0, "Middle MouseButton pressed")
	EndIf
	
	Delay(15)
Until Event = #PB_Event_CloseWindow
EndIf
End
Y a pu qu'a trouvé un spécialiste mac/os