\begin{itemize}\itemsep=0pt
\item Include the appropriate headers: normally "wx/xrc/xmlres.h" will suffice;
-\item call \verb$wxXmlResource::Get()->InitAllHandlers()$ from your wxApp::OnInit function,
-and then call \verb$wxXmlResource::Get()->Load("myfile.xrc")$ to load the resource file;
+\item call {\tt wxXmlResource::Get()->InitAllHandlers()} from your wxApp::OnInit function,
+and then call {\tt wxXmlResource::Get()->Load("myfile.xrc")} to load the resource file;
\item to create a dialog from a resource, create it using the default constructor, and then
-load using for example \verb$wxXmlResource::Get()->LoadDialog(&dlg, this, "dlg1")$;
-\item set up event tables as usual but use the \verb$XRCID(str)$ macro to translate from XRC string names
-to a suitable integer identifier, for example \verb$EVT\_MENU(XRCID("quit"), MyFrame::OnQuit)$.
+load using for example {\tt wxXmlResource::Get()->LoadDialog(\&dlg, this, "dlg1");}
+\item set up event tables as usual but use the {\tt XRCID(str)} macro to translate from XRC string names
+to a suitable integer identifier, for example {\tt EVT\_MENU(XRCID("quit"), MyFrame::OnQuit)}.
\end{itemize}
To create an XRC file, use one of the following methods.
-\begin{itemize}\itemsep=0
+\begin{itemize}\itemsep=0pt
\item Create the file by hand;
\item use \urlref{wxDesigner}{http://www.roebling.de}, a commercial dialog designer/RAD tool;
\item use \urlref{XRCed}{http://www.mema.ucl.ac.be/~rolinsky/xrced/}, a wxPython-based
To compile binary resource files, use the command-line wxrc utility. It takes a single file parameter (the
input XRC file) and the following switches and options.
-\begin{itemize}\itemsep=0
+\begin{itemize}\itemsep=0pt
\item -h (--help): show a help message
\item -v (--verbose): show verbose logging information
\item -c (--cpp-code): write C++ source rather than a RSC file
This is the C++ source file (xrcdemo.cpp) for the XRC sample.
\begin{verbatim}
-/////////////////////////////////////////////////////////////////////////////
-// Name: xmldemo.cpp
-// Purpose: XML resources sample
-// Author: Vaclav Slavik
-// RCS-ID: $Id$
-// Copyright: (c) Vaclav Slavik
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-#ifdef __GNUG__
- #pragma implementation "xrcdemo.cpp"
- #pragma interface "xrcdemo.cpp"
-#endif
-
-// For compilers that support precompilation, includes "wx/wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
- #pragma hdrstop
-#endif
-
-// for all others, include the necessary headers (this file is usually all you
-// need because it includes almost all "standard" wxWindows headers)
-#ifndef WX_PRECOMP
- #include "wx/wx.h"
-#endif
-
+#include "wx/wx.h"
#include "wx/image.h"
#include "wx/xrc/xmlres.h"
-// ----------------------------------------------------------------------------
-// resources
-// ----------------------------------------------------------------------------
// the application icon
#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__)
#include "rc/appicon.xpm"
// event tables and other macros for wxWindows
// ----------------------------------------------------------------------------
-// the event tables connect the wxWindows events with the functions (event
-// handlers) which process them. It can be also done at run-time, but for the
-// simple menu events like this the static method is much simpler.
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(XRCID("menu_quit"), MyFrame::OnQuit)
EVT_MENU(XRCID("menu_about"), MyFrame::OnAbout)
EVT_MENU(XRCID("menu_dlg2"), MyFrame::OnDlg2)
END_EVENT_TABLE()
-// Create a new application object: this macro will allow wxWindows to create
-// the application object during program execution (it's better than using a
-// static object for many reasons) and also declares the accessor function
-// wxGetApp() which will return the reference of the right type (i.e. MyApp and
-// not wxApp)
IMPLEMENT_APP(MyApp)
-// ============================================================================
-// implementation
-// ============================================================================
-
// ----------------------------------------------------------------------------
// the application class
// ----------------------------------------------------------------------------
SetToolBar(wxXmlResource::Get()->LoadToolBar(this, "toolbar"));
}
-
// event handlers
-
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
// TRUE is to force the frame to close
dlg.ShowModal();
}
-
void MyFrame::OnDlg2(wxCommandEvent& WXUNUSED(event))
{
wxDialog dlg;
\begin{verbatim}
<?xml version="1.0"?>
-<resource>
+<resource version="2.3.0.1">
<object class="wxMenuBar" name="mainmenu">
<style>wxMB_DOCKABLE</style>
<object class="wxMenu" name="menu_file">
- <label>$File</label>
+ <label>_File</label>
<style>wxMENU_TEAROFF</style>
<object class="wxMenuItem" name="menu_about">
- <label>$About...</label>
+ <label>_About...</label>
<bitmap>filesave.gif</bitmap>
</object>
<object class="separator"/>
</object>
<object class="separator"/>
<object class="wxMenuItem" name="menu_quit">
- <label>E$xit\tAlt-X</label>
+ <label>E_xit\tAlt-X</label>
</object>
</object>
</object>