Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » Performance issues when scrolling in ListControl Collapse All
Subject Author Date
Stephan Finkler Feb 14, 2017 - 9:04 AM

Dear Sir or Madam,



we have been using ProfUIS Version 2.81 for years, and now we need to upgrade to the current version due to issues with newer OS versions and HD monitors.



We have already purchased ProfUIS Version 3.30.

I’m trying to adapt the version.



Now I found out, that the reason for not upgrading earlier still exists.



Scenario:

There is a customized dialog (derived from CExtResizableDialog) with a customized ComboBox (derived from CExtComboBoxBase), some CExtCheckBoxes, CExtButtons, a CExtLabel,

a toolbar (ProfUIS-ControlBar) and a custom drawn ListControl.



About 150000 items are added to the ListControl.



After scrolling down (down arrow key) for one minute, there are about 1400 items scrolled in the old version (2.81) and only 600 with the new (3.3).

That is slow and not really acceptable.



I’m quite sure, that this behaviour is caused by the installed global hooks in CExtResizableDialog and CExtComboBoxBase. In version 2.81, these hooks were not installed.



The default implementation is HookSpyRegister( __EHSEF_MOUSE_ALL_WITHOUT_WHEEL|__EHSEF_WND_PROC_IN|__EHSEF_PRE_TRANSLATION ),

in our case called in CExtResizableDialog::PreSubclassWindow() and CExtComboBoxBase::_CreateHelper().



I added some logging and found out, that in that minute of vertical scrolling, the WndProc() is called more than 3’000’000 times for the WM_NOTIFY Message

without doing anything. Collected calls sum up to more than 10’000’000.



If I change the calls to HookSpyRegister( __EHSEF_MOUSE_ALL_WITHOUT_WHEEL | __EHSEF_PRE_TRANSLATION ) for the dialog respectively

HookSpyRegister(__EHSEF_KEYBOARD | __EHSEF_PRE_TRANSLATION) for the combobox, I get approximately the same time values for version 3.3 and version 2.81.



My question is, that if I remove __EHSEF_WND_PROC_IN in the call to HookSpyregister(), will I encounter any problems, that you know of?

I couldn’t detect any differences, when working with the application.



Besides, do you have a better solution?



Best regards,

Michael Herzog