#WM_SIZE ne fonctionne plus ?

Programmation d'applications complexes
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

#WM_SIZE ne fonctionne plus ?

Message 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
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ca marche quand tu agrandis/restaure la taille, mais pas quand tu minimise dans la barre de tâches. C'est ça?
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Chez moi ça ne marche jamais à part une fois à l'ouverture de la fenêtre
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

il faut utiliser #PB_Event_SizeWindow dans la boucle purebasic.

et #WM_SIZE dans la procédure callback()

;-)
Image
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Merci :D
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

comment tu fais pour parametrer ta callback svp ?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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.
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

ok chris
merci
et desoler de t'avoir deranger .
Répondre