dans l'évenemnt Resize de ma MDIform1 j'invoque une fonction privée de la
MDIform (AligneControle) que j'ai codé comme suit:
Ceci marche parfaitement avec Win98 mais sous XP certains controle ne
s'aligne pas correctement lors d'un resize en cours d'utilisation du
programme, je m'explique, lors de l'ouverture du programme le premier
evenement resize est déclanché tout est OK , je bascule la fenetre dans la
barre des taches , je la fait revenir en principale est là certain controles
ne s'alignent plus correctement..
??
Salutations
Christophe Vergon
Private Sub AligneControle()
Dim myrect As Rect
Dim lwidth&
Dim lheight&
Dim dummy&
Dim Xpix As Double
Dim Ypix As Double
Pctbulle.Height = 25
Pctbulle.Width = 140
Xpix = Screen.TwipsPerPixelX
Ypix = Screen.TwipsPerPixelY
Pctscreen.ScaleMode = 3
' dimensionne zone dessin a max
dummy& = GetClientRect&(Me.hwnd, myrect)
If myrect.Right = 0 Or myrect.Bottom = 0 Then
MsgBox ("problèmes sur resize MDIFRM")
Exit Sub
End If
Pctbutton.align = 4
lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) \ 6
Pctloupe.Height = lwidth&
Pctbutton.Width = lwidth&
Pctloupe.Width = lwidth&
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Christophe! :O)
As-tu comparé les valeurs entre des variables durant l'exécution entre 98 et XP ? tu pourrais peut-être trouvé d'où vient le problème ? Je voulais glisser juste te conseiller l'utilisation de la méthode Move() qui rend le redimensionnement des contrôles plus "smooth" au lieu de modifier Left, Top, Width et Height séparément..
"Christophe" <geo.ch@(wormfuck)tiscali.fr> a écrit dans le message de news:cco9bj$sue$
Bonjour,
dans l'évenemnt Resize de ma MDIform1 j'invoque une fonction privée de la MDIform (AligneControle) que j'ai codé comme suit:
Ceci marche parfaitement avec Win98 mais sous XP certains controle ne s'aligne pas correctement lors d'un resize en cours d'utilisation du programme, je m'explique, lors de l'ouverture du programme le premier evenement resize est déclanché tout est OK , je bascule la fenetre dans la barre des taches , je la fait revenir en principale est là certain
controles
ne s'alignent plus correctement.. ??
Salutations
Christophe Vergon
Private Sub AligneControle() Dim myrect As Rect Dim lwidth& Dim lheight& Dim dummy& Dim Xpix As Double Dim Ypix As Double
Pctbulle.Height = 25 Pctbulle.Width = 140 Xpix = Screen.TwipsPerPixelX Ypix = Screen.TwipsPerPixelY Pctscreen.ScaleMode = 3 ' dimensionne zone dessin a max dummy& = GetClientRect&(Me.hwnd, myrect)
If myrect.Right = 0 Or myrect.Bottom = 0 Then MsgBox ("problèmes sur resize MDIFRM") Exit Sub End If Pctbutton.align = 4 lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) 6 Pctloupe.Height = lwidth& Pctbutton.Width = lwidth& Pctloupe.Width = lwidth&
Label3.Left = 0 Label3.Top = lwidth& Label3.Width = lwidth& lheight& = Label3.Height lblX.Left = 0 lblX.Top = lwidth& + 2 * Label3.Height lblX.Height = lheight& lblX.Width = lwidth& 2 LblY.Left = 0 LblY.Top = lblX.Top + lheight& LblY.Height = lheight& LblY.Width = lwidth& 2 LblDx.Left = lwidth& 2 LblDx.Top = lblX.Top [......] 'toutes les lignes de code sont ensuite de même type les propriété top
left
height width étant définies de manière relative End function
Salut Christophe! :O)
As-tu comparé les valeurs entre des variables durant l'exécution entre 98 et
XP ? tu pourrais peut-être trouvé d'où vient le problème ?
Je voulais glisser juste te conseiller l'utilisation de la méthode Move()
qui rend le redimensionnement des contrôles plus "smooth" au lieu de
modifier Left, Top, Width et Height séparément..
"Christophe" <geo.ch@(wormfuck)tiscali.fr> a écrit dans le message de
news:cco9bj$sue$1@news.tiscali.fr...
Bonjour,
dans l'évenemnt Resize de ma MDIform1 j'invoque une fonction privée de la
MDIform (AligneControle) que j'ai codé comme suit:
Ceci marche parfaitement avec Win98 mais sous XP certains controle ne
s'aligne pas correctement lors d'un resize en cours d'utilisation du
programme, je m'explique, lors de l'ouverture du programme le premier
evenement resize est déclanché tout est OK , je bascule la fenetre dans la
barre des taches , je la fait revenir en principale est là certain
controles
ne s'alignent plus correctement..
??
Salutations
Christophe Vergon
Private Sub AligneControle()
Dim myrect As Rect
Dim lwidth&
Dim lheight&
Dim dummy&
Dim Xpix As Double
Dim Ypix As Double
Pctbulle.Height = 25
Pctbulle.Width = 140
Xpix = Screen.TwipsPerPixelX
Ypix = Screen.TwipsPerPixelY
Pctscreen.ScaleMode = 3
' dimensionne zone dessin a max
dummy& = GetClientRect&(Me.hwnd, myrect)
If myrect.Right = 0 Or myrect.Bottom = 0 Then
MsgBox ("problèmes sur resize MDIFRM")
Exit Sub
End If
Pctbutton.align = 4
lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) 6
Pctloupe.Height = lwidth&
Pctbutton.Width = lwidth&
Pctloupe.Width = lwidth&
As-tu comparé les valeurs entre des variables durant l'exécution entre 98 et XP ? tu pourrais peut-être trouvé d'où vient le problème ? Je voulais glisser juste te conseiller l'utilisation de la méthode Move() qui rend le redimensionnement des contrôles plus "smooth" au lieu de modifier Left, Top, Width et Height séparément..
"Christophe" <geo.ch@(wormfuck)tiscali.fr> a écrit dans le message de news:cco9bj$sue$
Bonjour,
dans l'évenemnt Resize de ma MDIform1 j'invoque une fonction privée de la MDIform (AligneControle) que j'ai codé comme suit:
Ceci marche parfaitement avec Win98 mais sous XP certains controle ne s'aligne pas correctement lors d'un resize en cours d'utilisation du programme, je m'explique, lors de l'ouverture du programme le premier evenement resize est déclanché tout est OK , je bascule la fenetre dans la barre des taches , je la fait revenir en principale est là certain
controles
ne s'alignent plus correctement.. ??
Salutations
Christophe Vergon
Private Sub AligneControle() Dim myrect As Rect Dim lwidth& Dim lheight& Dim dummy& Dim Xpix As Double Dim Ypix As Double
Pctbulle.Height = 25 Pctbulle.Width = 140 Xpix = Screen.TwipsPerPixelX Ypix = Screen.TwipsPerPixelY Pctscreen.ScaleMode = 3 ' dimensionne zone dessin a max dummy& = GetClientRect&(Me.hwnd, myrect)
If myrect.Right = 0 Or myrect.Bottom = 0 Then MsgBox ("problèmes sur resize MDIFRM") Exit Sub End If Pctbutton.align = 4 lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) 6 Pctloupe.Height = lwidth& Pctbutton.Width = lwidth& Pctloupe.Width = lwidth&
Label3.Left = 0 Label3.Top = lwidth& Label3.Width = lwidth& lheight& = Label3.Height lblX.Left = 0 lblX.Top = lwidth& + 2 * Label3.Height lblX.Height = lheight& lblX.Width = lwidth& 2 LblY.Left = 0 LblY.Top = lblX.Top + lheight& LblY.Height = lheight& LblY.Width = lwidth& 2 LblDx.Left = lwidth& 2 LblDx.Top = lblX.Top [......] 'toutes les lignes de code sont ensuite de même type les propriété top
left
height width étant définies de manière relative End function
Christophe
Salut et merci pour la réponse, j'utilise pas le move je vais essayer. (il me semble d'ailleurs t'avoir lu sur le même sujet ici même)
Concernant le pb XP / 98 j'ai progresser dans l'identification du bug.malheureusement je n'installe pas visual studio sur la machine XP elle ne m'appartient pas. Je suis obligé de dev sous 98 c'est exigé, mais la plus part des testeurs travaillent avec XP (faut pas chercher c'est comme ça même si ça parait bête).
J'utilise la function settopmostwindows décrite dans la FAQ ey j'ai remarqué que ce bug survenait lorsqu'une fenêtre non MDI child est affichée TopMost sous les contrôles, pour l'instant j'ai contourné le pb en mettant les controles dans leur position initiale sous 1024*768 et ça passe.
A+ Christophe
"Zoury" a écrit dans le message de news: #
Salut Christophe! :O)
As-tu comparé les valeurs entre des variables durant l'exécution entre 98
et
XP ? tu pourrais peut-être trouvé d'où vient le problème ? Je voulais glisser juste te conseiller l'utilisation de la méthode Move() qui rend le redimensionnement des contrôles plus "smooth" au lieu de modifier Left, Top, Width et Height séparément..
"Christophe" <geo.ch@(wormfuck)tiscali.fr> a écrit dans le message de news:cco9bj$sue$ > Bonjour, > > dans l'évenemnt Resize de ma MDIform1 j'invoque une fonction privée de
la
> MDIform (AligneControle) que j'ai codé comme suit: > > Ceci marche parfaitement avec Win98 mais sous XP certains controle ne > s'aligne pas correctement lors d'un resize en cours d'utilisation du > programme, je m'explique, lors de l'ouverture du programme le premier > evenement resize est déclanché tout est OK , je bascule la fenetre dans
la
> barre des taches , je la fait revenir en principale est là certain controles > ne s'alignent plus correctement.. > ?? > > Salutations > > Christophe Vergon > > Private Sub AligneControle() > Dim myrect As Rect > Dim lwidth& > Dim lheight& > Dim dummy& > Dim Xpix As Double > Dim Ypix As Double > > Pctbulle.Height = 25 > Pctbulle.Width = 140 > Xpix = Screen.TwipsPerPixelX > Ypix = Screen.TwipsPerPixelY > Pctscreen.ScaleMode = 3 > ' dimensionne zone dessin a max > dummy& = GetClientRect&(Me.hwnd, myrect) > > If myrect.Right = 0 Or myrect.Bottom = 0 Then > MsgBox ("problèmes sur resize MDIFRM") > Exit Sub > End If > Pctbutton.align = 4 > lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) 6 > Pctloupe.Height = lwidth& > Pctbutton.Width = lwidth& > Pctloupe.Width = lwidth& > > Pctscreen.Width = myrect.Right * Xpix - Pctbutton.Width > > Label3.Left = 0 > Label3.Top = lwidth& > Label3.Width = lwidth& > lheight& = Label3.Height > lblX.Left = 0 > lblX.Top = lwidth& + 2 * Label3.Height > lblX.Height = lheight& > lblX.Width = lwidth& 2 > LblY.Left = 0 > LblY.Top = lblX.Top + lheight& > LblY.Height = lheight& > LblY.Width = lwidth& 2 > LblDx.Left = lwidth& 2 > LblDx.Top = lblX.Top > [......] > 'toutes les lignes de code sont ensuite de même type les propriété top left > height width étant définies de manière relative > End function > > >
Salut et merci pour la réponse, j'utilise pas le move je vais essayer.
(il me semble d'ailleurs t'avoir lu sur le même sujet ici même)
Concernant le pb XP / 98 j'ai progresser dans l'identification du
bug.malheureusement je n'installe pas visual studio sur la machine XP elle
ne m'appartient pas. Je suis obligé de dev sous 98 c'est exigé, mais la plus
part des testeurs travaillent avec XP (faut pas chercher c'est comme ça même
si ça parait bête).
J'utilise la function settopmostwindows décrite dans la FAQ ey j'ai remarqué
que ce bug survenait lorsqu'une fenêtre non MDI child est affichée TopMost
sous les contrôles, pour l'instant j'ai contourné le pb en mettant les
controles dans leur position initiale sous 1024*768 et ça passe.
A+
Christophe
"Zoury" <yanick_lefebvre@hotmail.com> a écrit dans le message de news:
#fepKLEaEHA.2056@TK2MSFTNGP12.phx.gbl...
Salut Christophe! :O)
As-tu comparé les valeurs entre des variables durant l'exécution entre 98
et
XP ? tu pourrais peut-être trouvé d'où vient le problème ?
Je voulais glisser juste te conseiller l'utilisation de la méthode Move()
qui rend le redimensionnement des contrôles plus "smooth" au lieu de
modifier Left, Top, Width et Height séparément..
"Christophe" <geo.ch@(wormfuck)tiscali.fr> a écrit dans le message de
news:cco9bj$sue$1@news.tiscali.fr...
> Bonjour,
>
> dans l'évenemnt Resize de ma MDIform1 j'invoque une fonction privée de
la
> MDIform (AligneControle) que j'ai codé comme suit:
>
> Ceci marche parfaitement avec Win98 mais sous XP certains controle ne
> s'aligne pas correctement lors d'un resize en cours d'utilisation du
> programme, je m'explique, lors de l'ouverture du programme le premier
> evenement resize est déclanché tout est OK , je bascule la fenetre dans
la
> barre des taches , je la fait revenir en principale est là certain
controles
> ne s'alignent plus correctement..
> ??
>
> Salutations
>
> Christophe Vergon
>
> Private Sub AligneControle()
> Dim myrect As Rect
> Dim lwidth&
> Dim lheight&
> Dim dummy&
> Dim Xpix As Double
> Dim Ypix As Double
>
> Pctbulle.Height = 25
> Pctbulle.Width = 140
> Xpix = Screen.TwipsPerPixelX
> Ypix = Screen.TwipsPerPixelY
> Pctscreen.ScaleMode = 3
> ' dimensionne zone dessin a max
> dummy& = GetClientRect&(Me.hwnd, myrect)
>
> If myrect.Right = 0 Or myrect.Bottom = 0 Then
> MsgBox ("problèmes sur resize MDIFRM")
> Exit Sub
> End If
> Pctbutton.align = 4
> lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) 6
> Pctloupe.Height = lwidth&
> Pctbutton.Width = lwidth&
> Pctloupe.Width = lwidth&
>
> Pctscreen.Width = myrect.Right * Xpix - Pctbutton.Width
>
> Label3.Left = 0
> Label3.Top = lwidth&
> Label3.Width = lwidth&
> lheight& = Label3.Height
> lblX.Left = 0
> lblX.Top = lwidth& + 2 * Label3.Height
> lblX.Height = lheight&
> lblX.Width = lwidth& 2
> LblY.Left = 0
> LblY.Top = lblX.Top + lheight&
> LblY.Height = lheight&
> LblY.Width = lwidth& 2
> LblDx.Left = lwidth& 2
> LblDx.Top = lblX.Top
> [......]
> 'toutes les lignes de code sont ensuite de même type les propriété top
left
> height width étant définies de manière relative
> End function
>
>
>
Salut et merci pour la réponse, j'utilise pas le move je vais essayer. (il me semble d'ailleurs t'avoir lu sur le même sujet ici même)
Concernant le pb XP / 98 j'ai progresser dans l'identification du bug.malheureusement je n'installe pas visual studio sur la machine XP elle ne m'appartient pas. Je suis obligé de dev sous 98 c'est exigé, mais la plus part des testeurs travaillent avec XP (faut pas chercher c'est comme ça même si ça parait bête).
J'utilise la function settopmostwindows décrite dans la FAQ ey j'ai remarqué que ce bug survenait lorsqu'une fenêtre non MDI child est affichée TopMost sous les contrôles, pour l'instant j'ai contourné le pb en mettant les controles dans leur position initiale sous 1024*768 et ça passe.
A+ Christophe
"Zoury" a écrit dans le message de news: #
Salut Christophe! :O)
As-tu comparé les valeurs entre des variables durant l'exécution entre 98
et
XP ? tu pourrais peut-être trouvé d'où vient le problème ? Je voulais glisser juste te conseiller l'utilisation de la méthode Move() qui rend le redimensionnement des contrôles plus "smooth" au lieu de modifier Left, Top, Width et Height séparément..
"Christophe" <geo.ch@(wormfuck)tiscali.fr> a écrit dans le message de news:cco9bj$sue$ > Bonjour, > > dans l'évenemnt Resize de ma MDIform1 j'invoque une fonction privée de
la
> MDIform (AligneControle) que j'ai codé comme suit: > > Ceci marche parfaitement avec Win98 mais sous XP certains controle ne > s'aligne pas correctement lors d'un resize en cours d'utilisation du > programme, je m'explique, lors de l'ouverture du programme le premier > evenement resize est déclanché tout est OK , je bascule la fenetre dans
la
> barre des taches , je la fait revenir en principale est là certain controles > ne s'alignent plus correctement.. > ?? > > Salutations > > Christophe Vergon > > Private Sub AligneControle() > Dim myrect As Rect > Dim lwidth& > Dim lheight& > Dim dummy& > Dim Xpix As Double > Dim Ypix As Double > > Pctbulle.Height = 25 > Pctbulle.Width = 140 > Xpix = Screen.TwipsPerPixelX > Ypix = Screen.TwipsPerPixelY > Pctscreen.ScaleMode = 3 > ' dimensionne zone dessin a max > dummy& = GetClientRect&(Me.hwnd, myrect) > > If myrect.Right = 0 Or myrect.Bottom = 0 Then > MsgBox ("problèmes sur resize MDIFRM") > Exit Sub > End If > Pctbutton.align = 4 > lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) 6 > Pctloupe.Height = lwidth& > Pctbutton.Width = lwidth& > Pctloupe.Width = lwidth& > > Pctscreen.Width = myrect.Right * Xpix - Pctbutton.Width > > Label3.Left = 0 > Label3.Top = lwidth& > Label3.Width = lwidth& > lheight& = Label3.Height > lblX.Left = 0 > lblX.Top = lwidth& + 2 * Label3.Height > lblX.Height = lheight& > lblX.Width = lwidth& 2 > LblY.Left = 0 > LblY.Top = lblX.Top + lheight& > LblY.Height = lheight& > LblY.Width = lwidth& 2 > LblDx.Left = lwidth& 2 > LblDx.Top = lblX.Top > [......] > 'toutes les lignes de code sont ensuite de même type les propriété top left > height width étant définies de manière relative > End function > > >