Using Timer with non-dialog class
-
Thanks a lot, As I understand I need to use SetTimer() and to give it an handle to window but the class is not connected to a dialog so what the hWnd that I need to pass?
aangerma wrote:
so what the hWnd that I need to pass?
The one to your dialog/app window that handles WM_TIMER. As suggested you can get this handle with a FindWindow() specifying the title text. Or you can provide it form the fialog itself, I forget the func, something like GetSafeHwnd() or some such, but there is one for a dialog to get its own handle. Like I say, hunt through the win32 API. You will find what you need there.
============================== Nothing to say.
-
Hello, I have a class that doesn't connect to a dialog or window and I need to do some operations on timer but the timers works only with dialogs , does anyone know another way I do it? thank
-
Thanks for the answer, But the operations that I need to perform on the timer shuld have an approach to the data members and member Functions of the class , can I do it with threads?
No, not thread safe at all.
-
No, not thread safe at all.
-
Hello, I have a class that doesn't connect to a dialog or window and I need to do some operations on timer but the timers works only with dialogs , does anyone know another way I do it? thank
SetTimer[^] has a fourth parameter, an application defined callback function. Use that and set the HWND to NULL.
Independent ACN Business Owner
- Check out the possibilities for your future!
- Financial independance
- Full time or Part time
- In more than 20 countries through North America, Europe, Asia and the Pacific
- Featuring the ACN IRIS 5000 video phone. See the person you are talking to.
Within you lies the power for good - Use it!
-
SetTimer[^] has a fourth parameter, an application defined callback function. Use that and set the HWND to NULL.
Independent ACN Business Owner
- Check out the possibilities for your future!
- Financial independance
- Full time or Part time
- In more than 20 countries through North America, Europe, Asia and the Pacific
- Featuring the ACN IRIS 5000 video phone. See the person you are talking to.
Within you lies the power for good - Use it!
He might find that difficult to specify a class member as a call back function. But yes, it is doable (and one of the reasons I prefer C, OK, you need to be a good programmer, but you can do what you want) :)
============================== Nothing to say.
-
Yeah but consider what he wants to do... if he's already using the WinAPI, might as well use the Win timers. Otherwise we'll have to answer a bunch of questions regarding mutexes next [joke ;P ].
-
SetTimer[^] has a fourth parameter, an application defined callback function. Use that and set the HWND to NULL.
Independent ACN Business Owner
- Check out the possibilities for your future!
- Financial independance
- Full time or Part time
- In more than 20 countries through North America, Europe, Asia and the Pacific
- Featuring the ACN IRIS 5000 video phone. See the person you are talking to.
Within you lies the power for good - Use it!
Now why didn't I think of that; good answer.
Unrequited desire is character building. OriginalGriff I'm sitting here giving you a standing ovation - Len Goodman
-
SetTimer[^] has a fourth parameter, an application defined callback function. Use that and set the HWND to NULL.
Independent ACN Business Owner
- Check out the possibilities for your future!
- Financial independance
- Full time or Part time
- In more than 20 countries through North America, Europe, Asia and the Pacific
- Featuring the ACN IRIS 5000 video phone. See the person you are talking to.
Within you lies the power for good - Use it!
On reflection I decided to test this and it does not work without any windows, as there is nothing to process the
WM_TIMER
message, which is used by the default handler to invoke the callback routine.Unrequited desire is character building. OriginalGriff I'm sitting here giving you a standing ovation - Len Goodman
-
On reflection I decided to test this and it does not work without any windows, as there is nothing to process the
WM_TIMER
message, which is used by the default handler to invoke the callback routine.Unrequited desire is character building. OriginalGriff I'm sitting here giving you a standing ovation - Len Goodman
I would be interested to see your test code. I have no problems using a timer callback procedure.
Independent ACN Business Owner
- Check out the possibilities for your future!
- Financial independance
- Full time or Part time
- In more than 20 countries through North America, Europe, Asia and the Pacific
- Featuring the ACN IRIS 5000 video phone. See the person you are talking to.
Within you lies the power for good - Use it!
-
On reflection I decided to test this and it does not work without any windows, as there is nothing to process the
WM_TIMER
message, which is used by the default handler to invoke the callback routine.Unrequited desire is character building. OriginalGriff I'm sitting here giving you a standing ovation - Len Goodman
Looking at it further, the app does not need a window, but if there is no window then the thread needs a message loop.
Independent ACN Business Owner
- Check out the possibilities for your future!
- Financial independance
- Full time or Part time
- In more than 20 countries through North America, Europe, Asia and the Pacific
- Featuring the ACN IRIS 5000 video phone. See the person you are talking to.
Within you lies the power for good - Use it!
-
Looking at it further, the app does not need a window, but if there is no window then the thread needs a message loop.
Independent ACN Business Owner
- Check out the possibilities for your future!
- Financial independance
- Full time or Part time
- In more than 20 countries through North America, Europe, Asia and the Pacific
- Featuring the ACN IRIS 5000 video phone. See the person you are talking to.
Within you lies the power for good - Use it!
PJ Arends wrote:
the thread needs a message loop.
That's the issue; even with a callback the timer signals by posting a
WM_TIMER
message.Unrequited desire is character building. OriginalGriff I'm sitting here giving you a standing ovation - Len Goodman
-
Hello, I have a class that doesn't connect to a dialog or window and I need to do some operations on timer but the timers works only with dialogs , does anyone know another way I do it? thank
I have a few apps like that (mostly system services) so at the end of "main()" (or whatever you use), stick code like this:
/\* Fall into the standard message processing loop \*/ static MSG msg; while (GetMessage(&msg, NULL, 0, 0)) /\* wait for incoming message \*/ { TranslateMessage(&msg); /\* translate it \*/ DispatchMessage(&msg); /\* and let windows dispatch it to WinProc \*/ } return(msg.wParam); /\* done after "quit" message processed \*/
It doesn't hurt to sit in this loop while the other threads do their job and it allows them to post WM_CLOSE messages to run-down the process if necessary. Other standard messaging things works, including timers.
-
I have a few apps like that (mostly system services) so at the end of "main()" (or whatever you use), stick code like this:
/\* Fall into the standard message processing loop \*/ static MSG msg; while (GetMessage(&msg, NULL, 0, 0)) /\* wait for incoming message \*/ { TranslateMessage(&msg); /\* translate it \*/ DispatchMessage(&msg); /\* and let windows dispatch it to WinProc \*/ } return(msg.wParam); /\* done after "quit" message processed \*/
It doesn't hurt to sit in this loop while the other threads do their job and it allows them to post WM_CLOSE messages to run-down the process if necessary. Other standard messaging things works, including timers.
-
Thanks for the reply, can you give me more details how to use it? How can I know which message I Received by msg?
This is the standard windows message pump, it only causes windows messages to get processed for apps that are not "dialog based". You don't modify this code in any way nor look at the message in that loop. The "dispatch" is done by windows to the proper messsage handler. If you have dialogs, windows does this for you.
-
This is the standard windows message pump, it only causes windows messages to get processed for apps that are not "dialog based". You don't modify this code in any way nor look at the message in that loop. The "dispatch" is done by windows to the proper messsage handler. If you have dialogs, windows does this for you.
Can you give me exmple how to write a messsage handler , I did it only with the class wizard of mfc, and this is the first time I need to add a timer to a class that don't connected to any window, even if I creat a fictive window like dialog box the SetTimer(...) works only if the dialog is opened by DoModal. thanks