Bonjour à tous,
Je vais certainement poser la question la plus bête de l'année, mais tant pis.
Je prépare une petite application de répertoire qui fonctionne sur le principe d'une fenêtre principale qui sert de menu et de plusieurs fenêtres secondaires incluses dans la première, que j'affiche à tour de rôle et qui sont les formulaires (création, modification, consultation etc...)
Pas de probleme pour gérer tout cela sauf que si je déplace la fenêtre principale, la fenêtre secondaire active à ce moment ne suit pas le mouvement.
J'ai essayé à grand renfort de ResizeWindow, EventWindow, #PB_Event_MoveWindow et j'en passe et des meilleurs. Juste avant ce message qq tentativespar rechercher n'ont rien donné non plus.
L'un de vous pourrait-il me mettre sur la piste.
Question liée à la précédente: est-il possible d'empêcher tous déplacement d'une fenêtre?
Merci d'avance et bon grand WE du 1er mai à tous
Empêcher le déplacement d'une fenêtre
Re: Empêcher le déplacement d'une fenêtre
Oui.Claude OI a écrit :... est-il possible d'empêcher tous déplacement d'une fenêtre?
Exemple :
Code : Tout sélectionner
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Protected *WindowPos.WINDOWPOS, Result
Result = #PB_ProcessPureBasicEvents
If uMsg = #WM_WINDOWPOSCHANGING
*WindowPos = lParam
*WindowPos\flags = *WindowPos\flags | #SWP_NOSIZE | #SWP_NOMOVE
Result = #False
EndIf
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 200, 100, "Fenêtre immobile", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
SetWindowCallback(@WinCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Bonjour à tous,
tout d'abord un grand merci à Dobro, Gnozal et Mld pour vos réponses très rapides.
plus particulièrement pour Dobro, même si je n'ai pas tout compris, je me suis pas encore familier avec l'API et les Callback, j'ai quand même essayé de comprendre la logique.
Je me suis même permis de bidouiller le code que tu avais envoyé pour voir si j'avais bien saisi l'esprit. A priori cela marche.
Il me reste à comprendre 2 choses:
#PB_ProcessPureBasicEvents et d'où viennent les paramètres de la procédure callback
A si, encore une chose: vbNullString dans FinWindow. La doc de l'Api n'est pas très généreuse sur ce point. Ceci dit, je l'ai remplacée par n'importe quoi et cela fonctionne tout de même.
Pour le plaisir => ma bidouille:
Merci encore et à bientôt
tout d'abord un grand merci à Dobro, Gnozal et Mld pour vos réponses très rapides.
plus particulièrement pour Dobro, même si je n'ai pas tout compris, je me suis pas encore familier avec l'API et les Callback, j'ai quand même essayé de comprendre la logique.
Je me suis même permis de bidouiller le code que tu avais envoyé pour voir si j'avais bien saisi l'esprit. A priori cela marche.
Il me reste à comprendre 2 choses:
#PB_ProcessPureBasicEvents et d'où viennent les paramètres de la procédure callback
A si, encore une chose: vbNullString dans FinWindow. La doc de l'Api n'est pas très généreuse sur ce point. Ceci dit, je l'ai remplacée par n'importe quoi et cela fonctionne tout de même.
Pour le plaisir => ma bidouille:
Code : Tout sélectionner
Enumeration
#Window_0 : #Window_1
EndEnumeration
Procedure OpenWindow_Window_0()
OpenWindow ( #Window_0 , 400, 100, 362, 150, "bouge moi")
EndProcedure
Procedure OpenWindow_Window_1()
OpenWindow ( #Window_1 , 450, 150, 362, 150, "je suis...")
EndProcedure
Procedure ArreteDeColler( WindowID ,message,wParam,lParam)
action = #PB_ProcessPureBasicEvents
Select message
Case #WM_WINDOWPOSCHANGED
xw = WindowX ( #Window_0 ) + 50
yw = WindowY ( #Window_0 ) + 50
hWinCalc = FindWindow_ (null, "je suis..." )
SetWindowPos_ (hWinCalc, -1, xw, yw, 0, 0, #SWP_NOSIZE )
EndSelect
ProcedureReturn action
EndProcedure
OpenWindow_Window_0()
OpenWindow_Window_1()
SetWindowCallback (@ArreteDeColler())
Repeat : Until WaitWindowEvent () = #PB_Event_CloseWindow