added wxPersistentRegisterAndRestore() function to work around VC6 brokenness in debug DLL build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58635 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -215,5 +215,23 @@ private:
|
|||||||
DECLARE_NO_COPY_CLASS(wxPersistentObject)
|
DECLARE_NO_COPY_CLASS(wxPersistentObject)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME-VC6: VC6 has troubles with template methods of DLL-exported classes,
|
||||||
|
// apparently it believes they should be defined in the DLL (which
|
||||||
|
// is, of course, impossible as the DLL doesn't know for which types
|
||||||
|
// will they be instantiated) instead of compiling them when
|
||||||
|
// building the main application itself. Because of this problem
|
||||||
|
// (which only arises in debug build!) we can't use the usual
|
||||||
|
// RegisterAndRestore(obj) with it and need to explicitly create the
|
||||||
|
// persistence adapter. To hide this ugliness we define a global
|
||||||
|
// function which does it for us.
|
||||||
|
template <typename T>
|
||||||
|
inline bool wxPersistentRegisterAndRestore(T *obj)
|
||||||
|
{
|
||||||
|
wxPersistentObject * const pers = wxCreatePersistentObject(obj);
|
||||||
|
|
||||||
|
return wxPersistenceManager::Get().RegisterAndRestore(obj, pers);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#endif // _WX_PERSIST_H_
|
#endif // _WX_PERSIST_H_
|
||||||
|
|
||||||
|
@@ -259,6 +259,23 @@ protected:
|
|||||||
framework.
|
framework.
|
||||||
|
|
||||||
@see @ref persistence_defining
|
@see @ref persistence_defining
|
||||||
|
|
||||||
|
@header{wx/persist.h}
|
||||||
*/
|
*/
|
||||||
template <class T>
|
template <class T>
|
||||||
wxPersistentObject *wxCreatePersistentObject(T *obj);
|
wxPersistentObject *wxCreatePersistentObject(T *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
A shorter synonym for wxPersistenceManager::RegisterAndRestore().
|
||||||
|
|
||||||
|
This function simply calls wxPersistenceManager::RegisterAndRestore() but
|
||||||
|
using it results in slightly shorter code as it calls
|
||||||
|
wxPersistenceManager::Get() internally.
|
||||||
|
|
||||||
|
For the implementation reasons, this function @em mucst be used instead of
|
||||||
|
the template method when using Microsoft Visual C++ 6 compiler.
|
||||||
|
|
||||||
|
@header{wx/persist.h}
|
||||||
|
*/
|
||||||
|
template <class T>
|
||||||
|
bool wxPersistentRegisterAndRestore(T *obj);
|
||||||
|
@@ -367,7 +367,7 @@ WidgetsFrame::WidgetsFrame(const wxString& title)
|
|||||||
: wxFrame(NULL, wxID_ANY, title)
|
: wxFrame(NULL, wxID_ANY, title)
|
||||||
{
|
{
|
||||||
SetName("Main");
|
SetName("Main");
|
||||||
const bool sizeSet = wxPersistenceManager::Get().RegisterAndRestore(this);
|
const bool sizeSet = wxPersistentRegisterAndRestore(this);
|
||||||
|
|
||||||
// set the frame icon
|
// set the frame icon
|
||||||
SetIcon(wxICON(sample));
|
SetIcon(wxICON(sample));
|
||||||
@@ -617,7 +617,7 @@ void WidgetsFrame::InitBook()
|
|||||||
wxEVT_COMMAND_WIDGETS_PAGE_CHANGED,
|
wxEVT_COMMAND_WIDGETS_PAGE_CHANGED,
|
||||||
wxWidgetsbookEventHandler(WidgetsFrame::OnPageChanged) );
|
wxWidgetsbookEventHandler(WidgetsFrame::OnPageChanged) );
|
||||||
|
|
||||||
const bool pageSet = wxPersistenceManager::Get().RegisterAndRestore(m_book);
|
const bool pageSet = wxPersistentRegisterAndRestore(m_book);
|
||||||
|
|
||||||
#if USE_TREEBOOK
|
#if USE_TREEBOOK
|
||||||
// for treebook page #0 is empty parent page only so select the first page
|
// for treebook page #0 is empty parent page only so select the first page
|
||||||
|
Reference in New Issue
Block a user