Si vous ouvrez le Solitaire (ou un autre jeux de cartes) (fourni avec Windows), vous pouvez redimensionner la fenêtre. Si par exemple vous n'étirez la fenêtre que vers la droite, la fenêtre s'étirera quand même vers le bas.
Normal, les programmeurs ont voulu que la fenêtre soit proportionnelle.
Je voudrais faire pareil.
Avec #WM_SIZING (notification), on sait quand l'utilisateur est en train de redimensionner la fenêtre.
Les APIs sont très utiles, mais faut-il bien savoir les utiliser.
Voici quelques lignes de code, mais qui ne fonctionnent pas.
Mais qu'est-ce qui ne va pas ?
Code : Tout sélectionner
Procedure WindowProc(hWnd,msg,wParam,lParam)
If msg=#WM_SIZING
ecartx.w=WindowWidth(0)-300
ecarty.w=WindowHeight(0)-300
If Abs(ecartx)>Abs(ecarty)
ecarty=ecartx
Else
ecartx=ecarty
Endif
Define PointCourant.rect
*PointCourant.rect=@PointCourant
PointCourant\left=WindowX(0)
PointCourant\top=WindowY(0)
PointCourant\right=WindowX(0)+300+ecartx
PointCourant\bottom=WindowY(0)+300+ecarty
lParam=*PointCourant.rect
Endif
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
;-----------------------------
If OpenWindow(0,0,0,300,300,"Redimensionne moi !",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
WindowBounds(0,200,200,600,600)
SetWindowCallback(@WindowProc())
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
Endif
[\code]
Comme j'ai tapé le texte, il se pourrait qu'il y ait une faute un deux.
La structure RECT est déjà existante dans PB.
lParam est bien égal à une adresse mais est-ce la bonne ?
J'ai certainement loupé quelque chose dans les APIs, mais quoi !
Merci à ceux qui savent et qui souhaiteraient m'aider.