Mouse wheel scroll does not work in Win7

ScaleRichView support and discussion (TRichView add-on for WYSIWYG editing)
Post Reply
wolf1860
Posts: 118
Joined: Sat Nov 21, 2015 2:04 am

Mouse wheel scroll does not work in Win7

Post 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).
Sergey Tkachenko
Site Admin
Posts: 17602
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Re: Mouse wheel scroll does not work in Win7

Post by Sergey Tkachenko »

What version of Delphi do you use to compile applications?
wolf1860
Posts: 118
Joined: Sat Nov 21, 2015 2:04 am

Re: Mouse wheel scroll does not work in Win7

Post by wolf1860 »

Delphi 10.2
Sergey Tkachenko
Site Admin
Posts: 17602
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Re: Mouse wheel scroll does not work in Win7

Post 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)
wolf1860
Posts: 118
Joined: Sat Nov 21, 2015 2:04 am

Re: Mouse wheel scroll does not work in Win7

Post by wolf1860 »

Thanks a lot:) I'm waiting for the new version.
Sergey Tkachenko
Site Admin
Posts: 17602
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Re: Mouse wheel scroll does not work in Win7

Post by Sergey Tkachenko »

Sorry for the delay, it is uploaded today (for registered users)
tsvetus
Posts: 2
Joined: Thu Feb 23, 2012 11:11 am

Re: Mouse wheel scroll does not work in Win7

Post 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!
Sergey Tkachenko
Site Admin
Posts: 17602
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Re: Mouse wheel scroll does not work in Win7

Post 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.
tsvetus
Posts: 2
Joined: Thu Feb 23, 2012 11:11 am

Re: Mouse wheel scroll does not work in Win7

Post 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.
Sergey Tkachenko
Site Admin
Posts: 17602
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Re: Mouse wheel scroll does not work in Win7

Post 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.
GoranBru
Posts: 23
Joined: Wed Jan 22, 2020 2:26 pm

Re: Mouse wheel scroll does not work in Win7

Post 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
Last edited by GoranBru on Wed Jan 22, 2020 2:44 pm, edited 1 time in total.
Sergey Tkachenko
Site Admin
Posts: 17602
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Re: Mouse wheel scroll does not work in Win7

Post 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.
Post Reply