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 problem Collapse All
Subject Author Date
Offer Har Jan 17, 2011 - 9:49 AM

Dear Support.


We encountered a performance problem when using Prof-UIS 2.90. We have a couple of combo-boxes that are filled with a large amount of items (around 300). We see that each call to AddString generate a chain of Prof-UIS calls starting with a call to CExtHookSpy::HSLL_OnCallWindowProcIn. The call stack looks like this for each AddString:



	 mfc80d.dll!AfxAssertValidObject(const CObject * pOb=0x034dfa0c, const char * lpszFileName=0x02ed7f88, int nLine=1566)  Line 81    C++
	 ProfUIS290md.dll!CMap<CExtHookSpy *,CExtHookSpy *,bool,bool>::Lookup(CExtHookSpy * key=0x113c70d4, bool & rValue=false)  Line 1569    C++
	 ProfUIS290md.dll!CExtHookSpy::HookSpyItem_t::IsRegistered(CExtHookSpy * pHS=0x113c70d4, unsigned long dwEHSEF=4294967295)  Line 802 + 0x13 bytes    C++
	 ProfUIS290md.dll!CExtHookSpy::HookSpyIsRegistered(const CExtHookSpy * pHS=0x113c70d4, unsigned long dwEHSEF=4294967295)  Line 1826 + 0x19 bytes    C++
	 ProfUIS290md.dll!CExtHookSpy::HookSpyIsRegistered(unsigned long dwEHSEF=4294967295)  Line 267 + 0xd bytes    C++
     ProfUIS290md.dll!CExtHookSpy::HSLL_OnCallWindowProcIn(bool & bCallNextHook=true, long & lResult=0, int nCode=0, bool bMessageSentByCurrentThread=false, tagCWPSTRUCT * pMessageData=0x0012f444)  Line 1604 + 0xa bytes    C++
	 ProfUIS290md.dll!CExtHookSpy::HookSpyItem_t::SHS_HookCallWindowProcIn(int nCode=0, unsigned int wParam=0, long lParam=1242180)  Line 1242 + 0x27 bytes    C++
	 user32.dll!7e431923()     
	 [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]    
	 user32.dll!7e44f460()     
	 user32.dll!7e42acd1()     
	 ntdll.dll!7c90e473()     
	 user32.dll!7e4194be()     
	 user32.dll!7e42c174()     
	 user32.dll!7e42f40b()     
	 mfc80d.dll!CComboBox::AddString(const char * lpszString=0x20fdf0a0)  Line 795 + 0x44 bytes    C++


What is the reason for this? how can we avoid this hit to performance?


Thanks,


Ron.

Technical Support Jan 19, 2011 - 1:50 AM

You can override the CExtComboBoxBase::_CreateHelper() internal virtual method, invoke the parent class method and then remove all the hooks by invoking the HookSpyUnregister() method.

Technical Support Jan 18, 2011 - 3:02 AM

The combo box watches for a set of messages in the CExtComboBoxBase::OnHookSpyPreTranslateMessage() for closing the filter popup list box. This filter popup list box closes when you insert 300 strings into your combo box. This means inserting 300 strings should take approximately the same time as with CExtComboBox and CComboBox controls.

Offer Har Jan 18, 2011 - 5:10 AM

Dear Support,


I don’t completely understand your argument - As you can see, each call to AddString does a lot of digging into Prof-UIS code, which is completly irrelevant to filter popup list box (which I don’t even know what it is). Is there a way to avoid this overhead which as I understand is not relevant to my combo-box?


Thanks,


Ron.