 |
Bay Six Software Beyond the Basics
|
View previous topic :: View next topic |
Author |
Message |
carlo Guest
|
Posted: Nov 27th, 2007, 10:02am Post subject: stack overflow error |
|
|
Dear Brent :
I have been using WMLiberty since long time in one of my project to trap WM_SIZE , WM_ENTERSIZEMOVE. Everythiing goes fine, after compiling or in debugging mode.
Recently, I decided to add TABs in my project to optimize user interface. So I tried to use WMLiberty to trap WM_NOTIFY to detect when tabs are pressed. It is too complicated in my project using Timer to check which Tab is actually pressed as in Alyce Watson's example.
Problems started. Sometimes software stops without any reason, and if I run it in debug mode (ALT+F5), a "stack overflow error" appears after a while.
Have you already found such type of error? Might it be related to my PC configuration? I tried on XP sp2 and on Win2000 sp4, and similar behavior occurred in both cases.
Thanks for help.
Yours Carlo
Coul |
|
Back to top |
|
 |
Brent Site Admin
Joined: 01 Jul 2005 Posts: 793
|
Posted: Nov 28th, 2007, 6:51pm Post subject: Re: stack overflow error |
|
|
Hi Carlo,
(I replied to this yesterday on the way out the door. Obviously it didn't go through.)
I don't think this is absolutely a bug in WMLiberty. I've mentioned it before that debugging becomes much more difficult when WMLiberty is used. It may be that LB's callback mechanism isn't designed to be used the way WMLiberty makes it work. If you need to know that values of variables while WMLiberty is in effect, my only suggestion is to use PRINTs to the main window.
Concerning tab controls, I've attempted to make a general framework for creating a standard Options or Preferences dialog with tabs. You might be able to pull it out of the last ViviFire's source. Its usage begins in Function wndOptions.Open$. Even if you don't use my framework, using container controls is especially helpful with tabs. _________________ Brent |
|
Back to top |
|
 |
carlo Guest
|
Posted: Nov 29th, 2007, 5:50pm Post subject: Re: stack overflow error |
|
|
Dear Brent:
Thanks so much for the reply.
I'll think about your suggestions and I'll keep you informed.
Thanks again.
Yours Carlo |
|
Back to top |
|
 |
metro New Member
Joined: 29 Apr 2013 Posts: 2
|
Posted: Jan 12th, 2020, 3:43am Post subject: Re: stack overflow error |
|
|
Hi Brent,
I have an issue trying to capture a doubleclick in a listview, because of my limited understanding of callbacks I cannot figure out to call a sub from the Function OnNotify
without getting a stack overflow after 7 doubleclicks.
Any chance you have the time to shed some light on how I can achieve that?
Forum post here Libertybasiccom.proboards.com/thread/871/listview-capture-doubleclick
thanks in advance
Laurie |
|
Back to top |
|
 |
Brent Site Admin
Joined: 01 Jul 2005 Posts: 793
|
Posted: Jan 12th, 2020, 8:53pm Post subject: Re: stack overflow error |
|
|
Hi metro,
I see from the replies to your post on Proboards that Rod may have solved your problem. In any case, I'll just say that Rod's solution is similar to what I would have suggested.
The most common error people make is trying to do too much inside the WM handler. You should get out as quickly as possible. If your code takes too long, the handler function could be called again before it's finished.
The best practice is to set a flag inside the handler function. Then, inside your scan loop, check the flag, and do what needs to be done if it's set.
Rod mentions reentrant code, which is a procedure that doesn't depend on global variables. Window procedures must be reentrant, as stated somewhere in the Windows API reference. Any time you use WMLiberty, you are effectively making a window procedure, so it needs to be reentrant.
But the problem with this is that structs in LB are always global. Many notifications require us to use structs, but they could be "clobbered" if the handler is called again. I recommend pulling out all needed fields into local variables immediately after the struct is filled, like I did with iItem. _________________ Brent |
|
Back to top |
|
 |
metro New Member
Joined: 29 Apr 2013 Posts: 2
|
Posted: Jan 12th, 2020, 10:32pm Post subject: Re: stack overflow error |
|
|
Thanks Brent,
I appreciate you responding , I certainly need to spend a lot more time getting to understand
windows messaging. I will now endeavour to read up on reentrant procedures.
Thanks for your commitment to enhancing LB
all the best
Laurie |
|
Back to top |
|
 |
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|
|