thread confusion

John K. Hohm jhohm at acm.org
Wed Aug 21 08:56:54 CDT 2002


Thus spake Bill Medland:
[...]
> I added a couple of MessageBox calls in the source of the control's code.
> While the OCX was loading the "before" and "after" message boxes were
> displayed as expected.  However once the OCX was up and I pulled down the
> dropdown list the "before" message box popped up TWICE and you had to say
> OK
> to them in the correct order to get the pair of "after" boxes.  So I
> included GetCurrentThreadID in the message they displayed, thinking that we
> now had two threads.  But both had (or appeared to have) the same thread
> ID.
> So I turned on the dialog warnings and, yes, the second call to MessageBox
> was occurring while the first was still executing.
> 
> Anyone know what is going on there?

I suspect you are calling MessageBox() during processing of a message sent via 
SendMessage() during processing of another message posted to the control's 
queue.  That is typically a recipe for confusion or worse; one way to avoid it, 
though it might not make MessageBox() debugging very useful, is to call 
MessageBox() only when InSendMessage() returns FALSE.



More information about the wine-devel mailing list