We help IT Professionals succeed at work.

WM_TIMER disabled On TitleBar MouseDown?

TAdkins
TAdkins asked
on
Medium Priority
465 Views
Last Modified: 2013-11-20
I have a modeless dialog which I use a WM_TIMER message to perform socket processing.  The problem I am having is that if the left mouse button is held down on the dialog title bar, I no longer receive the WM_TIMER messages.  If the dialog is moved, I once again receive the messages, but if the button is simply held down and not released, I do not receive the WM_TIMER messages.

Is there something I can do that will allow the WM_TIMER messages to be dispatched in this case.  I do not want to
prevent the user from moving the dialog, so ignoring WM_NCLBUTTONDOWN messages is not an option.
Comment
Watch Question

Engineer
Commented:
You might want to try using the timer callback instead of using the WM_TIMER message. If you specify NULL for the HWND of ::SetTimer, then you need to supply a function that gets called periodically. Another possibility would be to use the asynchronous version of the socket API.

The problem is that when the default wndproc for windows gets the WM_NCLBUTTONDOWN message, it goes into its own modal message loop to move the window, draw the window, etc. The modal message loop does not terminate until the WM_NCLBUTTONUP message. In the meantime, the WM_TIMER message is not seen in your message loop.

One final probability. You can handle WM_NCLBUTTONDOWN yourself, but this would require quite a bit of work.

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:
I tried using ::SetTimer with a callback.  It appears that
it still uses the WM_TIMER message.  The documentation for
::SetTimer says that is calls the callback when it processes
WM_TIMER.  Any other ideas?

We are using CAsyncSocket.  We are trying to using the timer
proc to go any process the callbacks from CASyncSocket.

Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.