let* avec canvas% : quand get-client-size disponible ? [Scheme] - Divers - Programmation
Marsh Posté le 21-04-2004 à 13:14:45
Salut, voila mon code pour commencer à créer une fenetre : (define (go-display) (let* ( (win-w 600) (win-h 350) (w (let-values (((scr-w scr-h) (get-display-size #t))) (instantiate frame% () (label "Orbital" ) (width win-w) (height win-h) (x (- (/ scr-w 2) (/ win-w 2))) (y (- (/ scr-h 2) (/ win-h 2)))))) (h (instantiate horizontal-panel% () (parent w))) (canva (instantiate canvas% () (min-width 400) (parent h))) (v (instantiate vertical-panel% () (parent h))) (dc (send canva get-dc)) ;... boutons,... (c-width (let-values(((dc-w dc-h) (send canva get-client-size))) dc-w)) (c-height (let-values (((dc-w dc-h) (send canva get-client-size))) dc-h)) ) ; fin des variables locales (send w show #t) (yield) (display c-width) )) m'affiche 1 !! en fait j'ai vu que lorsque je récupère la taille du canva, il retourne toujours 1, par contre si je la récupère après le (yield), là c'est bon (440). Donc dans le let c'est encore "trop tôt", comment je dois faire ? Je ne comprends pas pourquoi... merci ANT
Make sure you enter the(*)required information where indicate.HTML code is not allowed
Marsh Posté le 21-04-2004 à 13:14:45
Salut,
voila mon code pour commencer à créer une fenetre :
(define (go-display)
(let* (
(win-w 600)
(win-h 350)
(w (let-values (((scr-w scr-h) (get-display-size #t)))
(instantiate frame% ()
(label "Orbital" )
(width win-w)
(height win-h)
(x (- (/ scr-w 2) (/ win-w 2)))
(y (- (/ scr-h 2) (/ win-h 2))))))
(h (instantiate horizontal-panel% () (parent w)))
(canva (instantiate canvas% () (min-width 400) (parent h)))
(v (instantiate vertical-panel% () (parent h)))
(dc (send canva get-dc))
;... boutons,...
(c-width
(let-values(((dc-w dc-h) (send canva get-client-size)))
dc-w))
(c-height
(let-values (((dc-w dc-h) (send canva get-client-size)))
dc-h))
) ; fin des variables locales
(send w show #t)
(yield)
(display c-width)
))
m'affiche 1 !!
en fait j'ai vu que lorsque je récupère la taille du canva, il retourne toujours 1,
par contre si je la récupère après le (yield), là c'est bon (440).
Donc dans le let c'est encore "trop tôt", comment je dois faire ?
Je ne comprends pas pourquoi...
merci
ANT