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