2010-07-19 4 views
1

J'essaie de déplacer la barre de défilement d'une fenêtre par programmation. Je suis d'abord un envoyais:Mouvement de la barre de défilement SetScrollPos et SendMessage

SetScrollPos(handle, 1, position, true); 

puis suivi par:

SendMessage(handle, 0x0115, wparam, new IntPtr(0)); 

Le wparam est correct. Quand j'inspecte via spy ++, la seule différence entre l'envoi d'un scroll avec le code ci-dessus et le fait de faire défiler est que dans le scrolling actuel, le niveau d'imbrication du message est 1 mais ici c'est zéro. Mais à part, toutes les autres propriétés et même, le WM_VSCROLL, manipulent, positionnent, wparam etc. Mais le parchemin programmatique ne bouge pas la barre. Des suggestions sur ce que je fais mal ??? P.S: Essayer de le faire à partir d'une application C# Ça fait une tonne!

EDIT: quand je passe SB_BOTTOM au wparam, il me prend correctement à la fin du parchemin.

Répondre

1

Il est préférable d'utiliser la fonction SetScrollInfo au lieu d'envoyer manuellement des messages.

+0

J'ai essayé SetScrollInfo et il ne semble pas fonctionner pour moi. Le SendMessage fonctionne dans tous les cas sauf où j'essaie d'envoyer une position exacte avec SB_THUMBPOSITION comme le loword et la position comme le hiword dans le wparam. – kambamsu

+0

Je crois que vous avez mal p/invoke pour SetScrollInfo, ou peut-être l'utiliser de manière incorrecte, parce que cette fonction est WinApi et 100% de travail. Essayez de jouer avec, ou montrez vos interfaces p/invoke pour SetScrollInfo et des exemples d'utilisation. – arbiter

Questions connexes