wxApp development for WXPM
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
d45d30c868
commit
9ed0fac8a8
@ -24,10 +24,10 @@ class WXDLLEXPORT wxLog;
|
||||
WXDLLEXPORT_DATA(extern wxApp*) wxTheApp;
|
||||
|
||||
// Force an exit from main loop
|
||||
void WXDLLEXPORT wxExit();
|
||||
void WXDLLEXPORT wxExit(void);
|
||||
|
||||
// Yield to other apps/messages
|
||||
bool WXDLLEXPORT wxYield();
|
||||
bool WXDLLEXPORT wxYield(void);
|
||||
|
||||
// Represents the application. Derive OnInit and declare
|
||||
// a new App object to start application
|
||||
@ -39,68 +39,73 @@ public:
|
||||
wxApp();
|
||||
virtual ~wxApp();
|
||||
|
||||
virtual bool OnInitGui(void);
|
||||
|
||||
// override base class (pure) virtuals
|
||||
virtual int MainLoop();
|
||||
virtual void ExitMainLoop();
|
||||
virtual bool Initialized();
|
||||
virtual bool Pending() ;
|
||||
virtual void Dispatch() ;
|
||||
virtual int MainLoop(void);
|
||||
virtual void ExitMainLoop(void);
|
||||
virtual bool Initialized(void);
|
||||
virtual bool Pending(void) ;
|
||||
virtual void Dispatch(void);
|
||||
|
||||
virtual wxIcon GetStdIcon(int which) const;
|
||||
|
||||
virtual void SetPrintMode(int mode) { m_printMode = mode; }
|
||||
virtual int GetPrintMode() const { return m_printMode; }
|
||||
virtual void SetPrintMode(int mode) { m_nPrintMode = mode; }
|
||||
virtual int GetPrintMode(void) const { return m_nPrintMode; }
|
||||
|
||||
// implementation only
|
||||
void OnIdle(wxIdleEvent& event);
|
||||
void OnEndSession(wxCloseEvent& event);
|
||||
void OnQueryEndSession(wxCloseEvent& event);
|
||||
void OnIdle(wxIdleEvent& rEvent);
|
||||
void OnEndSession(wxCloseEvent& rEvent);
|
||||
void OnQueryEndSession(wxCloseEvent& rEvent);
|
||||
|
||||
// Send idle event to all top-level windows.
|
||||
// Returns TRUE if more idle time is requested.
|
||||
bool SendIdleEvents();
|
||||
bool SendIdleEvents(void);
|
||||
|
||||
// Send idle event to window and all subwindows
|
||||
// Returns TRUE if more idle time is requested.
|
||||
bool SendIdleEvents(wxWindow* win);
|
||||
bool SendIdleEvents(wxWindow* pWin);
|
||||
|
||||
void SetAuto3D(bool flag) { m_auto3D = flag; }
|
||||
bool GetAuto3D() const { return m_auto3D; }
|
||||
void SetAuto3D(bool bFlag) { m_bAuto3D = bFlag; }
|
||||
bool GetAuto3D(void) const { return m_bAuto3D; }
|
||||
|
||||
protected:
|
||||
bool m_showOnInit;
|
||||
int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT
|
||||
bool m_auto3D ; // Always use 3D controls, except where overriden
|
||||
|
||||
/* Windows-specific wxApp definitions */
|
||||
bool m_bShowOnInit;
|
||||
int m_nPrintMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT
|
||||
bool m_bAuto3D ; // Always use 3D controls, except where overriden
|
||||
|
||||
//
|
||||
// PM-specific wxApp definitions */
|
||||
//
|
||||
public:
|
||||
|
||||
// Implementation
|
||||
static bool Initialize();
|
||||
static void CleanUp();
|
||||
static bool Initialize(HAB vHab);
|
||||
static void CleanUp(void);
|
||||
|
||||
static bool RegisterWindowClasses();
|
||||
// Convert Windows to argc, argv style
|
||||
void ConvertToStandardCommandArgs(char* p);
|
||||
virtual bool DoMessage();
|
||||
static bool RegisterWindowClasses(HAB vHab);
|
||||
virtual bool DoMessage(void);
|
||||
virtual bool ProcessMessage(WXMSG* pMsg);
|
||||
void DeletePendingObjects();
|
||||
bool ProcessIdle();
|
||||
void DeletePendingObjects(void);
|
||||
bool ProcessIdle(void);
|
||||
#if wxUSE_THREADS
|
||||
void ProcessPendingEvents();
|
||||
void ProcessPendingEvents(void);
|
||||
#endif
|
||||
int GetComCtl32Version() const;
|
||||
|
||||
public:
|
||||
int m_nCmdShow;
|
||||
int m_nCmdShow;
|
||||
|
||||
protected:
|
||||
bool m_keepGoing ;
|
||||
bool m_bKeepGoing ;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
private:
|
||||
HAB m_vHab;
|
||||
HMQ m_hMq;
|
||||
QMSG m_vMsg;
|
||||
};
|
||||
|
||||
int WXDLLEXPORT wxEntry( int argc, char *argv[] );
|
||||
#endif
|
||||
// _WX_APP_H_
|
||||
|
||||
|
@ -114,6 +114,8 @@ private:
|
||||
{ return(wxConfigBase::Write(key, value));};
|
||||
virtual bool Write(const wxString& key, bool value)
|
||||
{ return(wxConfigBase::Write(key, value));};
|
||||
virtual bool Write(const wxString& key, const char* value)
|
||||
{ return(wxConfigBase::Write(key, value));};
|
||||
};
|
||||
|
||||
#endif //_INICONF_H
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
#include "wx/object.h"
|
||||
|
||||
class WXDLLEXPORT wxTimer: public wxObject
|
||||
class WXDLLEXPORT wxTimer: public wxTimerBase
|
||||
{
|
||||
friend void wxProcessTimer(wxTimer& timer);
|
||||
|
||||
@ -22,22 +22,16 @@ public:
|
||||
wxTimer();
|
||||
~wxTimer();
|
||||
|
||||
virtual bool Start(int milliseconds = -1,
|
||||
bool one_shot = FALSE); // Start timer
|
||||
virtual void Stop(); // Stop timer
|
||||
virtual bool Start( int nMilliseconds = -1
|
||||
,bool bOneShot = FALSE
|
||||
);
|
||||
virtual void Stop(void);
|
||||
|
||||
virtual void Notify() = 0; // Override this member
|
||||
|
||||
// Returns the current interval time (0 if stop)
|
||||
int Interval() const { return milli; };
|
||||
bool OneShot() const { return oneShot; }
|
||||
inline virtual bool IsRunning(void) const { return m_ulId != 0L; }
|
||||
|
||||
protected:
|
||||
bool oneShot ;
|
||||
int milli ;
|
||||
int lastMilli ;
|
||||
|
||||
long id;
|
||||
ULONG m_ulId;
|
||||
HAB m_Hab;
|
||||
|
||||
private:
|
||||
DECLARE_ABSTRACT_CLASS(wxTimer)
|
||||
|
@ -81,6 +81,12 @@ protected:
|
||||
WXHBITMAP m_hBitmap;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
private:
|
||||
//Virtual function hiding suppression
|
||||
inline wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
|
||||
bool toggle = FALSE, wxCoord xPos = -1, wxCoord yPos = -1, wxObject *clientData = NULL,
|
||||
const wxString& helpString1 = "", const wxString& helpString2 = "")
|
||||
{ return(AddTool(toolIndex, bitmap, pushedBitmap, toggle, (long)xPos, (long)yPos, clientData, helpString1, helpString2)); }
|
||||
};
|
||||
|
||||
#endif // wxUSE_TOOLBAR
|
||||
|
843
src/os2/app.cpp
843
src/os2/app.cpp
File diff suppressed because it is too large
Load Diff
@ -67,7 +67,6 @@ List of files yet to be implemented. As you finish a file, delete it from the l
|
||||
..\os2\$D\taskbar.obj \
|
||||
..\os2\$D\textctrl.obj \
|
||||
..\os2\$D\thread.obj \
|
||||
..\os2\$D\timer.obj \
|
||||
..\os2\$D\toolbar.obj \
|
||||
..\os2\$D\tooltip.obj \
|
||||
..\os2\$D\treectrl.obj \
|
||||
|
@ -777,5 +777,10 @@ bool WXDLLEXPORT wxGuiOwnedByMainThread()
|
||||
return s_bGuiOwnedByMainThread;
|
||||
}
|
||||
|
||||
bool WXDLLEXPORT wxIsWaitingForThread()
|
||||
{
|
||||
return s_bWaitingForThread;
|
||||
}
|
||||
|
||||
#endif
|
||||
// wxUSE_THREADS
|
||||
|
@ -37,7 +37,7 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxList wxTimerList(wxKEY_INTEGER);
|
||||
UINT wxTimerProc(HWND hwnd, WORD, int idTimer, DWORD);
|
||||
ULONG wxTimerProc(HWND hwnd, ULONG, int nIdTimer, ULONG);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// macros
|
||||
@ -49,9 +49,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
|
||||
|
||||
wxTimer::wxTimer()
|
||||
{
|
||||
milli = 0 ;
|
||||
id = 0;
|
||||
oneShot = FALSE;
|
||||
m_ulId = 0;
|
||||
}
|
||||
|
||||
wxTimer::~wxTimer()
|
||||
@ -61,74 +59,84 @@ wxTimer::~wxTimer()
|
||||
wxTimerList.DeleteObject(this);
|
||||
}
|
||||
|
||||
bool wxTimer::Start(int milliseconds,bool mode)
|
||||
bool wxTimer::Start(
|
||||
int nMilliseconds
|
||||
, bool bOneShot
|
||||
)
|
||||
{
|
||||
oneShot = mode;
|
||||
if (milliseconds < 0)
|
||||
milliseconds = lastMilli;
|
||||
(void)wxTimerBase::Start( nMilliseconds
|
||||
,bOneShot
|
||||
);
|
||||
|
||||
wxCHECK_MSG( milliseconds > 0, FALSE, wxT("invalid value for timer timeour") );
|
||||
|
||||
lastMilli = milli = milliseconds;
|
||||
wxCHECK_MSG( m_milli > 0L, FALSE, wxT("invalid value for timer") );
|
||||
|
||||
wxTimerList.DeleteObject(this);
|
||||
// TODO:
|
||||
/*
|
||||
TIMERPROC wxTimerProcInst = (TIMERPROC)
|
||||
MakeProcInstance((FARPROC)wxTimerProc, wxGetInstance());
|
||||
|
||||
id = SetTimer(NULL, (UINT)(id ? id : 1),
|
||||
(UINT)milliseconds, wxTimerProcInst);
|
||||
*/
|
||||
if (id > 0)
|
||||
//
|
||||
// Create a windowless timer
|
||||
//
|
||||
m_ulId = ::WinStartTimer( m_Hab
|
||||
,NULL
|
||||
,(m_ulId ? m_ulId : 1L)
|
||||
,(ULONG)nMilliseconds
|
||||
);
|
||||
if (m_ulId > 0L)
|
||||
{
|
||||
wxTimerList.Append(id, this);
|
||||
|
||||
return TRUE;
|
||||
wxTimerList.Append( m_ulId
|
||||
,this
|
||||
);
|
||||
return(TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxLogSysError(_("Couldn't create a timer"));
|
||||
|
||||
return FALSE;
|
||||
return(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
void wxTimer::Stop()
|
||||
{
|
||||
if ( id )
|
||||
if ( m_ulId )
|
||||
{
|
||||
// KillTimer(NULL, (UINT)id);
|
||||
::WinStopTimer(m_Hab, NULL, m_ulId);
|
||||
wxTimerList.DeleteObject(this);
|
||||
}
|
||||
id = 0;
|
||||
milli = 0;
|
||||
m_ulId = 0L;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// private functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void wxProcessTimer(wxTimer& timer)
|
||||
void wxProcessTimer(
|
||||
wxTimer& rTimer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Avoid to process spurious timer events
|
||||
if ( timer.id == 0)
|
||||
//
|
||||
if (rTimer.m_ulId == 0L)
|
||||
return;
|
||||
|
||||
if ( timer.oneShot )
|
||||
timer.Stop();
|
||||
if (rTimer.IsOneShot())
|
||||
rTimer.Stop();
|
||||
|
||||
timer.Notify();
|
||||
rTimer.Notify();
|
||||
}
|
||||
|
||||
UINT wxTimerProc(HWND WXUNUSED(hwnd), WORD, int idTimer, DWORD)
|
||||
ULONG wxTimerProc(
|
||||
HWND WXUNUSED(hwnd)
|
||||
, ULONG
|
||||
, int nIdTimer
|
||||
, ULONG
|
||||
)
|
||||
{
|
||||
wxNode *node = wxTimerList.Find((long)idTimer);
|
||||
wxNode* pNode = wxTimerList.Find((ULONG)nIdTimer);
|
||||
|
||||
wxCHECK_MSG( node, 0, wxT("bogus timer id in wxTimerProc") );
|
||||
|
||||
wxProcessTimer(*(wxTimer *)node->Data());
|
||||
wxCHECK_MSG(pNode, 0, wxT("bogus timer id in wxTimerProc") );
|
||||
|
||||
wxProcessTimer(*(wxTimer *)pNode->Data());
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user