Page 1 of 1

Mouse wheel scroll does not work in Win7

Posted: Tue Aug 29, 2017 3:19 pm
by wolf1860
I tested this on couple of PC, the mouse wheel worked perfect in Win10,but did not work in Win7,I changed 3 PC (win7).

Re: Mouse wheel scroll does not work in Win7

Posted: Tue Aug 29, 2017 3:40 pm
by Sergey Tkachenko
What version of Delphi do you use to compile applications?

Re: Mouse wheel scroll does not work in Win7

Posted: Wed Aug 30, 2017 3:45 am
by wolf1860
Delphi 10.2

Re: Mouse wheel scroll does not work in Win7

Posted: Wed Aug 30, 2017 12:55 pm
by Sergey Tkachenko
I confirm the problem: no mouse wheel scrolling in TSRichViewEdit in Windows versions prior to 10, for applications compiled in RAD Studio 10.1 and 10.2
It will be fixed in the next update (I'll try to upload it later today)

Re: Mouse wheel scroll does not work in Win7

Posted: Thu Aug 31, 2017 10:43 am
by wolf1860
Thanks a lot:) I'm waiting for the new version.

Re: Mouse wheel scroll does not work in Win7

Posted: Wed Sep 06, 2017 12:54 pm
by Sergey Tkachenko
Sorry for the delay, it is uploaded today (for registered users)

Re: Mouse wheel scroll does not work in Win7

Posted: Wed Sep 20, 2017 1:21 pm
by tsvetus
Downloaded latest version of TSRichViewEdit. Now modules compiled on Windows 10 machine with RAD Studio 10.2 work fine on Windows 7 or prior but on Windows 10 scrolling does not work!

Re: Mouse wheel scroll does not work in Win7

Posted: Wed Sep 20, 2017 4:12 pm
by Sergey Tkachenko
Make sure that you completely recompiled your application (Project | Build All Project).

If the problem still persists, I ask you to do some tests.
The first of them. Please open SclRView.pas, find TSRichViewEdit.DoMouseWheel.
It must be:

Code: Select all

function TSRichViewEdit.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
      MousePos: TPoint): Boolean;
begin
  Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
  if RVWIN10 and not Result then
    HookMouseWheelEvent(Self, Shift, WheelDelta, MousePos, Result);
end;
Is it correct? Compile your application with debug info. Put a breakpoint at the beginning of this method. Is it called when you scroll with a mouse wheel?

PS: please pay attention: in older versions of Windows, mouse wheels scrolls the focused control. In Windows 10, mouse wheels scrolls the control below the mouse pointer.

Re: Mouse wheel scroll does not work in Win7

Posted: Mon Sep 25, 2017 1:53 pm
by tsvetus
Thank you for support. The problem is still persists. HookMouseWheelEvent in TSRichViewEdit.DoMouseWheel event is never called because variable RVWIN10 is false. In addition the vi.dwMajorVersion == 6 in RVUni.RVCheckNT but we have Windows 10 Pro x64.

Re: Mouse wheel scroll does not work in Win7

Posted: Mon Sep 25, 2017 2:51 pm
by Sergey Tkachenko
If dwMajorVersion = 6, this means that your application is not marked as Win10-compatible.
I thought that the difference in mouse wheel processing in applications compiled in 10.1 and 10.2 is because they are marked as Win10-compatible (in their manifest). Currently, I have no other ideas.

If you do not have special reasons for using a custom manifest, change in Project | Options, Application, Manifest file = Auto Generate.

Re: Mouse wheel scroll does not work in Win7

Posted: Wed Jan 22, 2020 2:43 pm
by GoranBru
Hello,
in my case it doesn't work either in our application. It does work in sample ActionTest software. The thing is that alhough I am using Windows 10 64 bit Slovenian and I have to use custom manifest due to some reasons and I deliberately have no compliance with Windows 10 in manifest file. I did slight investigation as our software does recognize different windows, from XP to 10, how You do it. You have to modify a bit RVUni.pas as so:

Add in line 186:

Code: Select all

  function RtlGetVersion (var lpVersionInformation: TOSVERSIONINFOEXW): DWORD; stdcall; // Windows 2000 and later
    external 'ntdll.dll' name 'RtlGetVersion';
Substiute the procedure with this code:

Code: Select all

procedure RVCheckNT;
var
  //vi: TOSVersionInfo;  //<---- old, not in use in WIn10
  vi :_OSVersionInfoExW;
begin
  vi.dwOSVersionInfoSize := sizeof(vi);
  //GetVersionEx(vi);  //<--- substituted with line below
  RtlGetVersion(vi);
  RVNT := vi.dwPlatformId = VER_PLATFORM_WIN32_NT;
  RVVista := RVNT and (vi.dwMajorVersion >= 6);
  RVWin10 := RVNT and (vi.dwMajorVersion >= 10);
  if not RVNT then
  begin
    RVFORMATCANVASFACTOR := 10;
    RVFORMATCANVASRESOLUTION := 96 * RVFORMATCANVASFACTOR;
  end;
  {
   if RVNT then
   RVDI_GETDRAGIMAGE := RegisterWindowMessage('ShellGetDragImage')
   else
   RVDI_GETDRAGIMAGE := 0;
  }
end;
So far as I have been checking around our customers (n*100) works okay. If anyone else around has similar problems, please do try and confirm correction.

Best regards,
Goran

Re: Mouse wheel scroll does not work in Win7

Posted: Sun Jan 26, 2020 6:48 pm
by Sergey Tkachenko
I'll include your changes in the next update.
But since the current solution works with standard Delphi manifests, I'll not activate these changed by default.
They will be activated if you specify the compiler $define RVKERNELWINVERCHECK when compiling your project.