cs_Zaghor
Messages postés3Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention24 août 2007
-
23 août 2007 à 22:52
cs_Zaghor
Messages postés3Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention24 août 2007
-
24 août 2007 à 13:44
Bonjour à tous,
Voici mon problème, qui peut-être est assez classique, néanmoins je n'ai trouvé qu'un seul exemple de code sur le net, et en plus il est en VB6.0 ...
J'aimerais forcer le VScroll de ma RichTextBox à défiler ligne par ligne plutôt que pixel par pixel, comme le ferait un TextBox en fait !
Le principe exposé par le programmeur VB6.0 est le suivant : récupérer le message WM_MOUSEWHEEL et le remplacer par EM_LINESCROLL.
Ce qui donne en VB6.0 :
Option Explicit
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" ( _
ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
Any, source As Any, ByVal bytes As Long)
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 24 août 2007 à 09:31
Salut, dans ton exemple c'est uniquement sur le message WM_MOUSEWHEEL, c-a-d uniquement lorsque la roulette de la souris bouge que la RichTextBox est scrollé ligne par ligne.
public partial class Form1 : Form
{
public Form1( )
{
InitializeComponent( );
cs_Zaghor
Messages postés3Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention24 août 2007 24 août 2007 à 13:44
Merci Lutinore cela fonctionne parfaitement !
Mais effectivement tu as raison je me suis fait avoir il ne s'agit bien que d'un scroll de souris ...
Je suis en train de galérer depuis ce matin en m'inspirant de ton code mais c'est carrément la galère, j'ai récupéré un truc sur un site japonais en essayant de l'adapter mais je m'arrache les cheveux.
En plus du if(m.Msg = = WM_MOUSEWHEEL)
{ ... }
j'ai rajouté le code suivant qui ne fonctionne absolument pas :