Calendargadget Resize

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Calendargadget Resize

Message par Mesa »

En fonction de la police système et du pitch écran, il est impossible de trouver la taille exacte d'un calendargadget, si on y va au pif, le gadget est toujours tronqué ou trop grand.

J'ai trouvé ici
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

et là
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
MCM_SIZERECTTOMIN message
Calculates how many calendars will fit in the given rectangle, and then returns the minimum size that a rectangle needs to be to fit that number of calendars. You can send this message explicitly or by using the MonthCal_SizeRectToMin macro.
mais je n'arrive pas à envoyer le message avec sendmessage.

Une idée ?

Mesa.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Calendargadget Resize

Message par Mesa »

Un bout de code qui ne donne fonctionne pas bien chez moi, le gadget reste tronqué :cry: et vous ?

Code : Tout sélectionner

;#MCM_GETMINREQRECT
#cal=100


*ok.RECT2=AllocateMemory(20)


If OpenWindow(0, 0, 0, 220, 200, "CalendarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CalendarGadget(#cal, 0, 0, 20, 18)
  SendMessage_(GadgetID(#cal),#MCM_GETMINREQRECT,0,*ok)
  Debug *ok\left
  Debug *ok\right
  Debug *ok\top
  Debug *ok\bottom
  ResizeGadget(#cal,#PB_Ignore ,#PB_Ignore ,*ok\right,*ok\bottom)
;   For i= 0 To 20
;   Debug  PeekB(*ok) ; ne donne rien ?
;   Next i

    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Calendargadget Resize

Message par Ar-S »

marche pas (structure RECT2 introuvable.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Calendargadget Resize

Message par MLD »

Oui je confirme.
Ar-S plus rapid que moi :cry:
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Calendargadget Resize

Message par kernadec »

chez moi sous seven ca marche :)

Code : Tout sélectionner

;#MCM_GETMINREQRECT
#cal=100


rc.RECT


If OpenWindow(0, 0, 0, 220, 200, "CalendarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	CalendarGadget(#cal, 0, 0, 20, 18)
	SendMessage_(GadgetID(#cal),#MCM_GETMINREQRECT,0,rc)
	Debug rc\left
	Debug rc\right
	Debug rc\top
	Debug rc\bottom
	ResizeGadget(#cal,#PB_Ignore ,#PB_Ignore ,rc\right,rc\bottom)
;   For i= 0 To 20
;   Debug  PeekB(*ok) ; ne donne rien ?
;   Next i

		Repeat
		Until WaitWindowEvent() = #PB_Event_CloseWindow
	EndIf
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Calendargadget Resize

Message par Ar-S »

en 4.60 x86 sur un W7 x64 ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Calendargadget Resize

Message par kernadec »

bonjour Ar-s
sous seven 64 je n'ai que la 4.51 d'installée, mais cela fonctionne.
sous xp sp2 et seven 32 idem avec PB4.60

cordialement
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Calendargadget Resize

Message par Mesa »

oui, erreur frappe, il fallait remplacer RECT2 par RECT.

J'ai un léger défaut sur le côté bas et sur le côté droit, mais bon...

Image
Image

Uploaded with ImageShack.us
Mesa.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Calendargadget Resize

Message par Mesa »

ça marche si on ajoute l'option sans bordure mais le message qui calcule l'epaisseur de la bordure n'est apparemment pas défini dans PB : #MCM_GETCALENDARBORDER, dommage !

Code : Tout sélectionner

;#MCM_GETMINREQRECT
#cal=100
#cal2=101


Taille.RECT
Taille2.RECT


If OpenWindow(0, 0, 0, 550, 300, "CalendarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CalendarGadget(#cal, 0, 0, 20, 18)
  CalendarGadget(#cal2, 300, 0, 20, 18, date,#PB_Calendar_Borderless )
 ;Debug GadgetWidth(#cal)
 SendMessage_(GadgetID(#cal),#MCM_GETMINREQRECT,0,Taille)
 SendMessage_(GadgetID(#cal2),#MCM_GETMINREQRECT,0,Taille2)
 
 ;Dommage !
 ;bordure= SendMessage_(GadgetID(#cal),#MCM_GETCALENDARBORDER,0,0)
 ;bordure=MonthCal_GetCurrentView_(#cal)
 
;   Debug Taille\left
;   Debug Taille\right
;   Debug Taille\top
;   Debug Taille\bottom
  ResizeGadget(#cal,#PB_Ignore ,#PB_Ignore ,Taille\right,Taille\bottom)
  ResizeGadget(#cal2,#PB_Ignore ,#PB_Ignore ,Taille2\right,Taille2\bottom)
;     Debug Taille2\left
;     Debug Taille2\right
;     Debug Taille2\top
;     Debug Taille2\bottom
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
 
Mesa.
Dernière modification par Mesa le mer. 01/févr./2012 16:47, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Calendargadget Resize

Message par Ar-S »

Le 1er marche effectivement, le second non, pas de structure associée à "OK"
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Calendargadget Resize

Message par Mesa »

Résolu.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Calendargadget Resize

Message par Mesa »

Je viens de me rendre compte que la prise en charge de la mesure de l'épaisseur de la bordure ne fonctionne qu'à partir de vista ! Donc pas sous Xp.

Je ne sais pas si ce code fonctionne :

Code : Tout sélectionner

;#MCM_GETMINREQRECT
#cal=100
#cal2=101

; MCM_FIRST               := 0x1000 
; MCM_GETCALENDARBORDER   := (MCM_FIRST + 31) 

MCM_GETCALENDARBORDER  = #MCM_FIRST + 31 ; qu'à partir de vista ! ! !

Taille.RECT
Taille2.RECT

If OpenWindow(0, 0, 0, 550, 300, "CalendarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CalendarGadget(#cal, 0, 0, 20, 18)
  CalendarGadget(#cal2, 300, 0, 20, 18, date,#PB_Calendar_Borderless )
;Debug GadgetWidth(#cal)
SendMessage_(GadgetID(#cal),#MCM_GETMINREQRECT,0,Taille)
SendMessage_(GadgetID(#cal2),#MCM_GETMINREQRECT,0,Taille2)

bordure= SendMessage_(GadgetID(#cal),MCM_GETCALENDARBORDER,0,0)

;   Debug Taille\left
;   Debug Taille\right
;   Debug Taille\top
;   Debug Taille\bottom
  ResizeGadget(#cal,#PB_Ignore ,#PB_Ignore ,Taille\right + bordure,Taille\bottom + bordure)
  ResizeGadget(#cal2,#PB_Ignore ,#PB_Ignore ,Taille2\right,Taille2\bottom)
;     Debug Taille2\left
;     Debug Taille2\right
;     Debug Taille2\top
;     Debug Taille2\bottom
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
Les valeurs des constantes que j'ai utilisées sont ici
http://www.autohotkey.com/forum/viewtop ... 156#469156
Malo
Messages : 79
Inscription : dim. 09/août/2009 17:48

Re: Calendargadget Resize

Message par Malo »

Ton dernier code fonctionne sous vista, une bordure avec une apparence enfoncée entoure #cal.
Répondre