Page 1 sur 1

#WM_SIZE ne fonctionne plus ?

Publié : dim. 18/déc./2005 15:23
par Oliv
Avant pour voir si on minimisait/agrandissait une fenêtre je faisais comme dans le code suivant, mais je ne comprends pas ça ne marche plus. (j'ai regardé sur purearea ils font comme moi :cry: :cry: )
Avez-vous une solution ?
Merci

Code : Tout sélectionner

;- Declarations
; Constantes

; Structures

; Listes

; Buffer

; Variables
Sortie.b

; Création de la fenêtre
OpenWindow(0,0,0,100,100,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered,"")


Repeat
  Select WindowEvent()
    Case #PB_Event_CloseWindow
      Sortie = 1
    Case #WM_SIZE
      Debug "changement de taille"
  EndSelect
  Delay(10)
Until Sortie = 1

End

Publié : dim. 18/déc./2005 15:31
par Chris
Ca marche quand tu agrandis/restaure la taille, mais pas quand tu minimise dans la barre de tâches. C'est ça?

Publié : dim. 18/déc./2005 15:39
par Oliv
Chez moi ça ne marche jamais à part une fois à l'ouverture de la fenêtre

Publié : dim. 18/déc./2005 15:43
par Flype
il faut utiliser #PB_Event_SizeWindow dans la boucle purebasic.

et #WM_SIZE dans la procédure callback()

;-)

Publié : dim. 18/déc./2005 15:43
par Chris
Avec une callback, ça fonctionne.

D'ailleurs, je ne me sers jamais de #WM_SIZE en dehors d'une callback.


Code : Tout sélectionner

;- Declarations 
; Constantes 

; Structures 

; Listes 

; Buffer 

; Variables 
Sortie.b 

; Création de la fenêtre 

Procedure CallBack(Hnd,msg,wParam,lParam)
  Resultat = #PB_ProcessPureBasicEvents 
  Select msg
    Case #WM_SIZE
      Debug "changement de taille"
  EndSelect
  
  ProcedureReturn Resultat 
EndProcedure 



OpenWindow(0,0,0,100,100,#PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered,"") 
SetWindowCallback(@CallBack())

Repeat 
  Select WindowEvent() 
    Case #PB_Event_CloseWindow 
      Sortie = 1 
    ; Case #WM_SIZE
      ; If EventwParam() = #SIZE_MINIMIZED
        ; Debug "changement de taille" 
      ; EndIf
      
  EndSelect 
  Delay(10) 
Until Sortie = 1 

End 

Publié : dim. 18/déc./2005 16:50
par Oliv
Merci :D

Publié : lun. 19/déc./2005 15:12
par bernard13
comment tu fais pour parametrer ta callback svp ?

Publié : lun. 19/déc./2005 15:40
par Chris
Tu ne lui passes pas de paramètres, tu en récupères.

Tu récupères les messages qui sont envoyés par l'application

hnd, c'est le handle de la fenêtre ou de l'objet qui envoie le message
msg, c'est le message que tu dois récupérer
wParam et lParam sont des paramètres qui accompagnent le message et qui peuvent te servir, par exemple pour récupérer une position, une valeur, ou n'importe quoi d'autre.

Pour savoir ce que tu peux récupérer dans ces deux variables, il faut regarder dans le SDK de Microsoft ou dans le fichier WinHelp32 dans les notifications.

Pour l'exemple au dessus, #WM_SIZE correspond à un message envoyé par une fenêtre lorsque tu modifies sa taille.

wParam te donnes le type de modification de taille et lParam te donne la nouvelle taille de la zone client de la fenêtre.

Publié : lun. 19/déc./2005 17:06
par bernard13
ok chris
merci
et desoler de t'avoir deranger .