Rafraichissement de fenêtre (fait soif)

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Rafraichissement de fenêtre (fait soif)

Message 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:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Je voudrais bien t'aider, mais je n'en ai pas la moindre idée ..
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Donc continuons à rimer, ça ne sert à rien de poster.......... :D :D
Pourquoi le delay(1000) ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Comme je vois, fait toujours soif :mrgreen:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Oui, certe mais as-tu une solution à part faire une danse indienne pour faire tomber la pluie :mrgreen:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Tu va prendre un coup de Tomahawk sur les orteils, toi :lol:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

là, j'ai déjà pris un coup de bistouri, alors, bon là, ça sera bon pour aujourd'hui .... bobo

ugh'ô fré
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
Jean-Paul
Messages : 5
Inscription : dim. 11/avr./2004 16:56

Message 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
Répondre