The proper way of using the PeekMessage function.

I'm developing a program which includes some background processing. If i want to stop the process through the stop button i've provided for the user, how can i do it. i tried to use the PeekMessage function. But something seems to be missing. Could any one show me the right way? Thank you.
ketireddys120897Asked:
Who is Participating?
 
Tommy HuiEngineerCommented:
MSG msg;

while (PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE)
{
  if (GetMessage(&msg))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
}
0
 
fasterCommented:
If you are using windows 95 or NT, the better way is to create another thread for the background processing, the main thread deal with UI and terminate the worker thread when user cancel the operation.

PeekMessage() is used in 16 bit windows to solve this kind of problem, but it is not a good solution.


0
 
ketireddys120897Author Commented:
Yeah. Sure that is one way of solving it. But what if i want only one thread running? It should be possible to peek into the message queue in between and process the message.
0
Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

 
ketireddys120897Author Commented:
Yeah. Sure that is one way of solving it. But what if i want only one thread running? It should be possible to peek into the message queue in between and process the message.
0
 
fasterCommented:
What problem do you have now and how do you write your code?

Although PeekMessage() can solve your problem, it is not the recommended way in win32.  Creating another thread will be much simpler.
0
 
chensuCommented:
"Many applications perform lengthy processing "in the background." Sometimes performance considerations dictate using multithreading for such work. Threads involve extra development overhead, so they are not recommended for simple tasks like the idle-time work that MFC does in the OnIdle function."

If you are using Visual C++ 5.0, you may find the documentation about how to use PeekMessage loop to perform a background task.

Visual C++/Visual C++ Programmer's Guide/Adding Program Functionality/Details/MFC Topics (General)/Idle Loop Processing

For Visual C++ 4.x, you may search for the keywords "PeekMessage" and "OnIdle".
0
 
shaigCommented:
If you are using MFC:
Your application class ( inherits fro CWinApp ) has an virtual OnIdle function.  override it for idle time proccesing.
Use the ON_MESSAGE macros for catching button messages.
What you described is trivial in MFC, if you have any problems email me.
0
 
shaigCommented:
Oh... and don't open a new thread just for simple idle time proccessing!
0
 
ketireddys120897Author Commented:
Thank you very much for the response. I solved the problem in an other way. But it would be great if someone can give me the a few lines of code implementing the PeekMessage function.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.