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)
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( );
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 :