OVH Cloud OVH Cloud

Alignement des controles et OS

1 réponse
Avatar
Christophe
Bonjour,

Une application qui est devellop=E9e sur 98, a ceci sur son=20
MDIFORM_LOAD:

Me.Top =3D 0
Me.Left =3D 0
Me.Height =3D Screen.Height
Me.Width =3D Screen.Width
AligneControle


Private Sub AligneControle()
Dim myrect As Rect
Dim lwidth&
Dim lheight&
Dim dummy&

' dimensionne zone dessin a max
dummy& =3D GetClientRect&(Me.hwnd, myrect)
Pctbutton.align =3D 4 'picturebox
lwidth& =3D Pctscreen.ScaleY(myrect.Bottom, 3, 8) \ 6
Pctloupe.Height =3D lwidth&'picturebox ausi
Pctbutton.Width =3D lwidth&
Pctloupe.Width =3D lwidth&
Pctscreen.Width =3D Pctscreen.ScaleX(myrect.Right, 3, 8) -=20
Pctloupe.Width
'pctscreen est align=3D3

<snip>
End sub

Pas de probl=E8mes (tester sous toute r=E9solution =E9cran)
j'affiche ensuite des
images et je fais des zooms tout est OK (je gere le DC du=20
pictureBOX avec la
classe metricDC que j'ai d=E9j=E0 post=E9 sur ce forum).

Si j'installe le programme sous XP, tout va de travers les=20
zooms ne sont
plus correct les images sont d=E9form=E9es en Y, tout ce passe=20
comme si les
coordonn=E9es X! et Y! du mouse_down n'=E9tait pas les bonnes.
Si je vire l'appel =E0 alignecontrole tout est normal

Je comprend pas et c'est assez urgent si qqun peu me=20
donner une piste

Christophe Vergon

1 réponse

Avatar
Christophe
Réponse
remplacer
Pctscreen.Width = Pctscreen.ScaleX(myrect.Right, 3, 8) - Pctloupe.Width
Par
Pctscreen.width=myrect.right*Screen.TwipsPerPixelX-pctloupe.width

Pourquoi ? j'en sais rien mais là ça marche
(à noter que les deux picturesbox sont en pixel !!!!)

Christophe Vergon


"Christophe" a écrit dans le message
de news: 1203301c3f5f1$b8c57e60$
Bonjour,

Une application qui est devellopée sur 98, a ceci sur son
MDIFORM_LOAD:

Me.Top = 0
Me.Left = 0
Me.Height = Screen.Height
Me.Width = Screen.Width
AligneControle


Private Sub AligneControle()
Dim myrect As Rect
Dim lwidth&
Dim lheight&
Dim dummy&

' dimensionne zone dessin a max
dummy& = GetClientRect&(Me.hwnd, myrect)
Pctbutton.align = 4 'picturebox
lwidth& = Pctscreen.ScaleY(myrect.Bottom, 3, 8) 6
Pctloupe.Height = lwidth&'picturebox ausi
Pctbutton.Width = lwidth&
Pctloupe.Width = lwidth&
Pctscreen.Width = Pctscreen.ScaleX(myrect.Right, 3, 8) -
Pctloupe.Width
'pctscreen est align=3

<snip>
End sub

Pas de problèmes (tester sous toute résolution écran)
j'affiche ensuite des
images et je fais des zooms tout est OK (je gere le DC du
pictureBOX avec la
classe metricDC que j'ai déjà posté sur ce forum).

Si j'installe le programme sous XP, tout va de travers les
zooms ne sont
plus correct les images sont déformées en Y, tout ce passe
comme si les
coordonnées X! et Y! du mouse_down n'était pas les bonnes.
Si je vire l'appel à alignecontrole tout est normal

Je comprend pas et c'est assez urgent si qqun peu me
donner une piste

Christophe Vergon