Page 1 sur 2

Rafraichissement de fenêtre (fait soif)

Publié : mar. 09/mars/2004 8:51
par Le Soldat Inconnu
Salut,

un gros soucis avec ce code :

Code : Tout sélectionner

Delay(1000)

WindowE = GetForegroundWindow_()

OpenWindow(0, 200, 200, 500, 500, #PB_Window_SystemMenu, "Options")

SetWindowLong_(WindowE, #GWL_STYLE, GetWindowLong_(WindowE, #GWL_STYLE) | #WS_CHILD)
SetParent_(WindowE, WindowID())

; MoveWindow_(WindowE, 0, 0, 400, 400, 1)
; Aire.rect
; Aire\Top = 0
; Aire\Bottom = 1000
; Aire\Left = 0
; Aire\Right = 1000
; RedrawWindow_(WindowID(), Aire, WindowID(), #RDW_UPDATENOW | #RDW_ALLCHILDREN)

Repeat
  Event = WaitWindowEvent()
  
Until Event = #WM_CLOSE

SetWindowLong_(WindowE, #GWL_STYLE, GetWindowLong_(WindowE, #GWL_STYLE) ! #WS_CHILD)
SetParent_(WindowE, 0)
il permet de rendre un programme enfant d'un autre, je vous laisse regarder. (aperçu en mettant l'éditeur dans une autre fenêtre)
le prob, c'est que j'ai plus de rafraichissement de la fenêtre mise en Child et que j'arrive pas à le résoudre. Au secours. ça fait une semaine que je cherche à faire ceci et quand je trouve, ça plante :roll:

Publié : mar. 09/mars/2004 12:12
par CORBASE
Je voudrais bien t'aider, mais je n'en ai pas la moindre idée ..

Publié : mar. 09/mars/2004 18:35
par Oliv
Donc continuons à rimer, ça ne sert à rien de poster.......... :D :D
Pourquoi le delay(1000) ?

Publié : mar. 09/mars/2004 18:37
par Le Soldat Inconnu
pour pouvoir changer la fenêtre au lancement.
tu cliques vite sur l'explorateur et tu l'explorateur dans la fenêtre au lieu de l'éditeur de pb

Publié : mar. 09/mars/2004 19:06
par Anonyme2
J'ai pas trop de solution.

Pour rafraichir une fenêtre il faut répondre à des messages dans la boucle d'événements et PureBasic le fait pour nous pour les fenêtres et gadgets qu'il connait (message du type WM_REPAINT)

Une question :

WindowE = GetForegroundWindow_() est une fenêtre créée par ton application ?

Si oui, il manque un peu de code pour mieux comprendre ce qu'il se passe.

Publié : mer. 10/mars/2004 8:57
par Le Soldat Inconnu
bon je commente mon bazar :

Code : Tout sélectionner

Delay(1000) 

WindowE = GetForegroundWindow_() ; récupère le handle de la fenêtre au premier plan (moi, je souhaite le faire avec l'explorateur windows)

OpenWindow(0, 200, 200, 500, 500, #PB_Window_SystemMenu, "Options") 

SetWindowLong_(WindowE, #GWL_STYLE, GetWindowLong_(WindowE, #GWL_STYLE) | #WS_CHILD) ; dis à la fenêtre qui était au premier plan de passer en mode child
SetParent_(WindowE, WindowID()) ; je lui donne un parent qui est la fenêtre que j'ai crée

MoveWindow_(WindowE, 0, 0, 400, 400, 1) ; je déplace et redimmensionne la fen child

; Aire.rect 
; Aire\Top = 0 
; Aire\Bottom = 1000 
; Aire\Left = 0 
; Aire\Right = 1000 
; RedrawWindow_(WindowID(), Aire, WindowID(), #RDW_UPDATENOW | #RDW_ALLCHILDREN) 

Repeat 
  Event = WaitWindowEvent() 
  
Until Event = #WM_CLOSE 

SetWindowLong_(WindowE, #GWL_STYLE, GetWindowLong_(WindowE, #GWL_STYLE) ! #WS_CHILD) ; je dis à la fenêtre de ne plus être child
SetParent_(WindowE, 0) ; je retire le parent
ce que je demande, c'est si ma fenêtre est au courant qu'elle a des enfants à rafraichir.
pour le moment je trouve pas, v poser la question sur le forum des englishes :roll:

Publié : mer. 10/mars/2004 9:53
par Le Soldat Inconnu
J'ai trouvé :D

Code : Tout sélectionner

WindowE = GetForegroundWindow_()

OpenWindow(0, 200, 200, 500, 500, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #WS_CLIPCHILDREN, "Options")

SetWindowLong_(WindowE, #GWL_EXSTYLE, GetWindowLong_(WindowE, #GWL_EXSTYLE) | #WS_EX_MDICHILD)
SetParent_(WindowE, WindowID())

MoveWindow_(WindowE, 0, 0, 400, 400, 1)



Repeat
  Event = WaitWindowEvent()
  
Until Event = #WM_CLOSE

SetWindowLong_(WindowE, #GWL_EXSTYLE, GetWindowLong_(WindowE, #GWL_EXSTYLE) ! #WS_EX_MDICHILD)
SetParent_(WindowE, 0)

Publié : jeu. 11/mars/2004 16:49
par Le Soldat Inconnu
Une autre question :

pour avoir la barre de titre de la fen principale toujours active ?

quand j'utilise

Code : Tout sélectionner

SetWindowLong_(WindowE, #GWL_EXSTYLE, GetWindowLong_(WindowE, #GWL_EXSTYLE) | #WS_EX_MDICHILD)
elle reste active mais la fenêtre child ne se rafraichit plus.

je solicite donc à nouveau votre aide. merci :D

Publié : jeu. 11/mars/2004 19:10
par Anonyme2
Comme je vois, fait toujours soif :mrgreen:

Publié : ven. 12/mars/2004 14:03
par Le Soldat Inconnu
Oui, certe mais as-tu une solution à part faire une danse indienne pour faire tomber la pluie :mrgreen:

Publié : ven. 12/mars/2004 14:46
par Patrick88
Le Soldat Inconnu a écrit :Oui, certe mais as-tu une solution à part faire une danse indienne pour faire tomber la pluie :mrgreen:
:lol: http://purebasic.hmt-forum.com/viewtopic.php?t=286 :lol:
-> sujet interview, ma réponse

ralàlà...

ugh et tamtam

Publié : ven. 12/mars/2004 15:00
par Le Soldat Inconnu
Tu va prendre un coup de Tomahawk sur les orteils, toi :lol:

Publié : ven. 12/mars/2004 15:06
par Patrick88
là, j'ai déjà pris un coup de bistouri, alors, bon là, ça sera bon pour aujourd'hui .... bobo

ugh'ô fré

Publié : ven. 12/mars/2004 15:32
par Anonyme2
Oui, certe mais as-tu une solution à part faire une danse indienne pour faire tomber la pluie
Non, mais as-tu pensé au Vaudou
:mrgreen: :mrgreen:

et je cherche pas trop, je travaille sur ma librairie pour de nouvelles commandes.

Publié : dim. 11/avr./2004 16:58
par Jean-Paul
Le Soldat Inconnu a écrit :Une autre question :

pour avoir la barre de titre de la fen principale toujours active ?

quand j'utilise

Code : Tout sélectionner

SetWindowLong_(WindowE, #GWL_EXSTYLE, GetWindowLong_(WindowE, #GWL_EXSTYLE) | #WS_EX_MDICHILD)
elle reste active mais la fenêtre child ne se rafraichit plus.

je solicite donc à nouveau votre aide. merci :D
As tu trouvé depuis, je ne l'ai pas vu dans d'autres post

Merci, par avance