FreeTime - Stefano Passatordi 's Blog


Libera la mente...ecco il Blog di Stefano Passatordi
Statistiche
  • Views Home Page: 156.843
  • Views Posts: 374.260
  • Views Gallerie: 752.214
  • n° Posts: 210
  • n° Commenti: 148
Archivio Posts
Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Mappa

VS2005 and wxWidgets

Questo post è dedicato a tutti coloro che, come me, si sono trovati all'improvviso a dover sviluppare utilizzando le wxWidgets (un framework grafico multipiattaforma e open source, cioè una libreria di componenti elementari per costuire una GUI)[Leggi su wikipedia] .

Vediamo come sfruttare VS2005 con le wxWidgets (ver.2.8.4).

Dopo aver scaricato l'installer ( wxMSW), avviatelo e stabilite la cartella di destinazione. Ad esempio, C:\wxWidgets-2.8.4.

1. Aprite la cartella, andate in build\msw ed avviate wx.dsw. Quando richiesto, convertire tutti i progetti.
2. Quando VS2005 avrà convertito tutti i progetti e sarà tutto pronto per l'utilizzo, generate l'intera soluzione (in questo caso, in modalità Debug). Successivamente alla generazione, in C:\wxWidgets-2.8.4 sarà disponibile la cartella lib\vc_lib che conterrà tutte le librerie generate in precedenza. Ora siamo pronti per poterle utilizzare, vediamo come!

3. Prima di tutto, aggiungere una variabile di ambiente all'intero sistema. Nome variabile : WXWIN  Valore : C:\wxWidgets-2.8.4. Successivamente riavviate il sistema!
4. Dopo il riavvio, avviare VS2005 e create un nuovo progetto in C++ Win32 -> Progetto Win32. In questo caso, il nome sarà HelloTest. Proseguite nel wizard lasciando tutte le impostazioni di default ma nella scheda Impostazioni applocazioni selezionate la voce Progetto vuoto.

5. Aggiungere al progetto un file C++, per adesso sarà vuoto. In questo caso, il nome sarà HelloTest.cpp.
6. Impostare le proprietà del progetto.
    a. In C/C++, voce Generale, nelle Directory di inclusione aggiuntive inserire : "$(WXWIN)\include";"$(WXWIN)\contrib\include";"$(WXWIN)\lib\vc_lib\mswd";"$(WXWIN)" . Sempre in Generale, alla voce Rileva errori di portabilità a 64 bit impostare No. Ancora in Generale, per Set di caratteri scegliere Non impostato. Nella scheda Preprocessore, aggiungere come Definizioni preprocessore : WIN32;_DEBUG;_WINDOWS;__WINDOWS__;__WXMSW__;__WXDEBUG__;WXDEBUG=1;NOPCH

    b. In Linker, voce Generale, in Directory librerie aggiuntive inserire : "$(WXWIN)\lib";"$(WXWIN)\contrib\lib";"$(WXWIN)\lib\vc_lib" . Nella voce Input, Dipendenze aggiuntive, inserire : wxmsw28d_core.lib wxmsw28d_adv.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib odbc32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbccp32.lib

7. Copiare il seguente codice all'interno del file cpp aggiunto in precedenza :

#include "wx/wxprec.h"

#ifdef __BORLANDC__
  #pragma hdrstop
#endif

#ifndef WX_PRECOMP
 #include "wx/wx.h"
#endif
 

class MyApp: public wxApp
{
    virtual bool OnInit();
};

 
class MyFrame: public wxFrame
{
public:
 
    MyFrame(const wxString& title,
           const wxPoint& pos, const wxSize& size);

    void OnQuit(wxCommandEvent& event);
    void OnAbout(wxCommandEvent& event);
 
    DECLARE_EVENT_TABLE()
};

enum
{
    ID_Quit = 1,
    ID_About = 0,

};
 
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_MENU(ID_Quit, MyFrame::OnQuit)
    EVT_MENU(ID_About, MyFrame::OnAbout)
END_EVENT_TABLE()
 
IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
    MyFrame *frame = new MyFrame( "Hello World",
         wxPoint(50,50), wxSize(450,340) );
    frame->Show(TRUE);
    SetTopWindow(frame);
    return TRUE;
}
 
MyFrame::MyFrame(const wxString& title,
       const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
{
    wxMenu *menuFile = new wxMenu;
    menuFile->Append( ID_About, "&About..." );
    menuFile->AppendSeparator();
    menuFile->Append( ID_Quit, "E&xit" );
 
    wxMenuBar *menuBar = new wxMenuBar;
    menuBar->Append( menuFile, "&File" );
 
    SetMenuBar( menuBar );

    CreateStatusBar();
    SetStatusText( "Welcome to wxWindows!" );
}

 
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
    Close(TRUE);
}
 
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{

    wxMessageBox("This is a wxWindows Hello world sample",
        "About Hello World", wxOK | wxICON_INFORMATION, this);
}

Salvare, compilare ed eseguire. Se tutto andrà bene verrà lanciata l'applicazione di esempio.
Ricordate che questa configurazione è per la versione Debug delle librerie wxWidgets, per la versione Release ci sono altri parametri.

Per adesso è tutto!

Enjoy!



Categoria: Programmazione
lunedì, 25 giu 2007 Ore. 14.31
Ora e Data
Calendario
novembre 2024
lmmgvsd
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
Blogs Amici
    Links
      Copyright © 2002-2007 - Blogs 2.0
      dotNetHell.it | Home Page Blogs
      ASP.NET 2.0 Windows 2003