Deplacer une fenetre sur l'axe des abscisses sans modifier les autres parametres

proximad Messages postés 14 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 29 octobre 2008 - 29 oct. 2008 à 19:35
proximad Messages postés 14 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 29 octobre 2008 - 29 oct. 2008 à 23:34
Bonjour,
je suis entrain de developper une application sous VB.NET, l'application doit faire deplacer les fenetres qui ne sont pas agrandits en modifiant uniquement l'abscisse (x) sans modifier l'ordonnée (y) (translation horizontale).
j'ai tout d'abord utilisé l'API GetWindowPlacement, qui detecte si les fenetres ouvertes sont agrandits, normales ou reduites, voici le code que j'ai utilisé :

Public

DeclareFunction GetWindowPlacement Lib"user32" (ByVal hWnd As IntPtr, ByRef windowPlacement As WindowPlacement) AsLong
Public

Structure WindowPlacement
Public Length AsUInteger
Public Flags AsUInteger
Public ShowCmd As ShowState
Public MinPosition As Point
Public MaxPosition As Point
Public NormalPosition As Rectangle
EndStructure
Public

Enum ShowState AsUInteger
SW_HIDE = 0
SW_SHOWNORMAL = 1
SW_SHOWMINIMIZED = 2
SW_SHOWMAXIMIZED = 3
SW_SHOWNOACTIVATE = 4
SW_SHOW = 5
SW_MINIMIZE = 6
SW_SHOWMINNOACTIVE = 7
SW_SHOWNA = 8
SW_RESTORE = 9
SW_SHOWDEFAULT = 10
EndEnum

Dim

W As WindowPlacement
GetWindowPlacement(hWnd, W)
If W.ShowCmd = 1 Then

le probleme c'est que apres je ne sais pas quelle API utiliser, si j'opte pour SetWindowPos, celle ci prend comme parametres : x et y qui sont les coordonnées de la fenetres, cx et cy qui sont les dimensions de la fenetres ainsi que d'autres parametres, or je ne veux modifier que x, et je ne peux pas donner aux autres parametres des valeurs afin de ne pas toucher aux dimensions des fenetres ouvertes, j'ai essayé d'utiliser GetWindowPlacement, mais là aussi je seche, je ne trouve pas comment modifier le x.
merci pour votre aide.<!-- / message -->

7 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 oct. 2008 à 20:14
Bonjour,

Déjà :
Si tu es bien sous VB.Net, cette déclaration :

DeclareFunction GetWindowPlacement Lib"user32" (ByVal hWnd As IntPtr, ByRef windowPlacement As WindowPlacement) As Long

ne correspond pas !!!!
Es-tu bien sous VB.Net ?
0
proximad Messages postés 14 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 21:02
oui je le suis, y'a un public avant declare et function n'est pas attachée à declare
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 oct. 2008 à 21:05
Ah !...
Tu sais quoi ? Moi, je n'ai jamais développé en VB.Net ... mais je sais quand même que ta fonction ne saurait y être typée en Long ... !!!!
bonne chance...
0
proximad Messages postés 14 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 21:16
je ne vois pas pourquoi, mais supposont meme que ce soit le cas, là n'est pas la question, mon probleme n'est pas dans GetWindowPlacement, mon probleme est quelle API devrais je utiliser pour realiser la translation.


merci pour ta remarque
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 oct. 2008 à 22:10
Je serais fort étonné de ce que VB.Net ne t'offre pas la possibilité (au demeurant élémentaire) de (à ta guise) :
- soit modifier la seule propriété Left
- soit utiliser la méthode Move (ou l'équivalent VB.Net)

et je maintiens que ta fonction ne saurait, sous VB.Net, être typée en Long
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 oct. 2008 à 22:20
Quand à l'utilisation (évidemment également possible), de la fonction SetWindowPos :
1) elle doit également être typée en Integer (et pas en long) sous VB.Net
2) elle doit être associée à GetWindowPlacement (pour extraire les autres éléments de positions et dimensions actuels).
Il te suffit ensuite de garder tout, sauf l'abscisse, que tu fais varier à ta guise.
0
proximad Messages postés 14 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 23:34
ok merci pour ta reponse, je vais modifier long en interger


pour ce qui est de GetWindowPlacement, elle obtient la position et les dimensions de la fenetre dans la structure WindowPlacement mais je ne sais pas comment les recuperer à partir de cette structure
0
Rejoignez-nous