Processing PowerBuilder messages in C++
You can open a PowerBuilder window from a C++ application
or from an extension, but to make sure that events triggered in
the window or control are processed, you need to make sure that
the C++ application processes PowerBuilder messages.
The IPB_Session ProcessPBMessage function
lets you do this.
Each time the ProcessPBMessage function
is called, it attempts to retrieve a message from the PowerBuilder
message queue and process it. The function is similar to the PowerBuilder Yield function,
which yields control to other graphic objects and pulls messages
from PowerBuilder objects and other graphic objects from the queue.
However, ProcessPBMessage processes only one
message at a time, and it processes only PowerBuilder messages.
Messages are added to the PowerBuilder message queue when
you call the PostEvent function.
ProcessPBMessage must be called repeatedly
You need to make sure that the ProcessPBMessage function
is called repeatedly. For most C++ applications,
you can provide a message loop in the main function and insert the
IPB_Session ProcessPBMessage function
in the message loop. This is shown in the example that follows.
If you use Microsoft Foundation Classes (MFC), you cannot
modify the built–in message loop. To ensure that the ProcessPBMessage function
is called repeatedly, you can overload the CWnd::WindowProc function
and insert ProcessPBMessage into the overloaded
function:
LRESULT CCallPBVCtrl::WindowProc(UINT message,
WPARAM wParam, LPARAM lParam)
{
d_session->ProcessPBMessage();
return CDialog::WindowProc(message, wParam, lParam);
}