[python-win32] simulate DoEvents by python/wxpython

Mark Hammond mhammond at skippinet.com.au
Thu Oct 27 01:15:49 CEST 2005


Build 205 of win32gui does have PeekMessage etc so you can now write the
message loop in Python should the need arise - however, the various
"PumpMessages" and "PumpWaitingMessages" functions do the same thing, but
are implemented in C.  There are versions of these functions in win32gui and
win32ui.  win32ui is the MFC wrapper, and its version does do it the "MFC
way", as opposed to the vanilla Windows way that win32gui exposes.  Your
code below looks like it is MFC based, so the win32ui versions may work
better for you (eg, work correctly with the MFC idle processing).  If you do
truly only need VB DoEvents style processing (which is not MFC aware),
win32gui.Pump(Waiting)Messages should be fine though.

Mark
-----Original Message-----
From: python-win32-bounces at python.org
[mailto:python-win32-bounces at python.org]On Behalf Of James Hu
Sent: Thursday, 27 October 2005 4:10 AM
To: Python-win32 at python.org; python-list at python.org
Subject: [python-win32] simulate DoEvents by python/wxpython


Hi, all gurus,

I  need to simulate DoEvents in VB by python/wxPython,
My application needs to capture live image in a loop until one specific
button pressed
Multi-thread is also not very good solution, for there are big number of
data to exchange between the two threads.

Win32gui doesn't have PeekMessage.

Or translate the folllowinf codes to python?

DoEvents()
{
  MSG msg;
         while ( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
        {
        if ( !PumpMessage( ) )
        {
        ::PostQuitMessage( 1 );
        return FALSE;
        }
        }
        // let MFC do its idle processing
        LONG lIdle = 0;
        while ( OnIdle(lIdle++ ) )
        ;
        return TRUE;
        }
}


Thanks in advance,
James




More information about the Python-list mailing list