| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx_exe.cpp
- // Purpose: Sample showing how to use wx from a DLL
- // Author: Vaclav Slavik
- // Created: 2009-12-03
- // Copyright: (c) 2009 Vaclav Slavik
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- // ============================================================================
- // declarations
- // ============================================================================
- // ----------------------------------------------------------------------------
- // headers
- // ----------------------------------------------------------------------------
- #include "wx/wxprec.h"
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
- #include "my_dll.h"
- #include "wx/app.h"
- #include "wx/frame.h"
- #include "wx/panel.h"
- #include "wx/sizer.h"
- #include "wx/stattext.h"
- #include "wx/button.h"
- #ifndef __WINDOWS__
- #error "This sample is Windows-only"
- #endif
- #ifdef WXUSINGDLL
- #error "This sample doesn't work with DLL build of wxWidgets"
- #endif
- // ----------------------------------------------------------------------------
- // GUI classes
- // ----------------------------------------------------------------------------
- static const int ID_RUN_DLL = wxNewId();
- class MainFrame : public wxFrame
- {
- public:
- MainFrame();
- void OnRunDLL(wxCommandEvent& event);
- wxDECLARE_EVENT_TABLE();
- };
- class MainApp : public wxApp
- {
- public:
- virtual bool OnInit();
- virtual int OnExit();
- };
- // ============================================================================
- // implementation
- // ============================================================================
- // ----------------------------------------------------------------------------
- // MainFrame
- // ----------------------------------------------------------------------------
- wxBEGIN_EVENT_TABLE(MainFrame, wxFrame)
- EVT_BUTTON(ID_RUN_DLL, MainFrame::OnRunDLL)
- wxEND_EVENT_TABLE()
- MainFrame::MainFrame()
- : wxFrame(NULL, wxID_ANY, "Main wx app",
- wxDefaultPosition, wxSize(400, 300))
- {
- wxPanel *p = new wxPanel(this, wxID_ANY);
- wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
- sizer->Add
- (
- new wxStaticText
- (
- p, wxID_ANY,
- wxString::Format
- (
- "Main wxApp instance is %p (%s),\n"
- "thread ID %ld.\n",
- wxApp::GetInstance(),
- wxVERSION_STRING,
- wxThread::GetCurrentId()
- )
- ),
- wxSizerFlags(1).Expand().Border(wxALL, 10)
- );
- sizer->Add
- (
- new wxButton(p, ID_RUN_DLL, "Run GUI from DLL"),
- wxSizerFlags(0).Right().Border(wxALL, 10)
- );
- p->SetSizerAndFit(sizer);
- wxSizer *fsizer = new wxBoxSizer(wxVERTICAL);
- fsizer->Add(p, wxSizerFlags(1).Expand());
- SetSizerAndFit(fsizer);
- }
- void MainFrame::OnRunDLL(wxCommandEvent& WXUNUSED(event))
- {
- run_wx_gui_from_dll("child instance");
- }
- // ----------------------------------------------------------------------------
- // MainApp
- // ----------------------------------------------------------------------------
- bool MainApp::OnInit()
- {
- if ( !wxApp::OnInit() )
- return false;
- wxFrame *f = new MainFrame();
- f->Show(true);
- return true;
- }
- int MainApp::OnExit()
- {
- wx_dll_cleanup();
- return wxApp::OnExit();
- }
- IMPLEMENT_APP(MainApp)
|