Processing PowerBuilder messages in C++
Contents
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:
|
1 2 3 4 5 6 |
LRESULT CCallPBVCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { d_session->ProcessPBMessage(); return CDialog::WindowProc(message, wParam, lParam); } |