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:
David Webster 1999-11-15 04:50:09 +00:00
parent d45d30c868
commit 9ed0fac8a8
8 changed files with 434 additions and 598 deletions

View File

@ -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_

View File

@ -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

View File

@ -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)

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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 \

View File

@ -777,5 +777,10 @@ bool WXDLLEXPORT wxGuiOwnedByMainThread()
return s_bGuiOwnedByMainThread;
}
bool WXDLLEXPORT wxIsWaitingForThread()
{
return s_bWaitingForThread;
}
#endif
// wxUSE_THREADS

View File

@ -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;
}