链接的时候 comctl32.lib uuid.lib rpcrt4.lib 这三个库不要忘记, 要不然会出现找不到符号的情况。
今天准备学习一下 wxWidget了, 小小的写了个程序。
#ifndef FIRST_APP_H #define FIRST_APP_H #include <wx/string.h> #include <wx/bitmap.h> #include <wx/image.h> #include <wx/icon.h> #include <wx/menu.h> #include <wx/gdicmn.h> #include <wx/font.h> #include <wx/colour.h> #include <wx/settings.h> #include <wx/statusbr.h> #include <wx/treectrl.h> #include <wx/richtext/richtextctrl.h> #include <wx/sizer.h> #include <wx/frame.h> #include <wx/app.h> /////////////////////////////////////////////////////////////////////////// #define wxID_Exit 1000 class MyFirstApp : public wxApp { public: MyFirstApp(void); public: bool OnInit(void); }; /////////////////////////////////////////////////////////////////////////////// /// Class MyFirstFrame /////////////////////////////////////////////////////////////////////////////// class MyFirstFrame : public wxFrame { protected: wxMenuBar* m_menubar_main; wxMenu* m_menu1; wxStatusBar* m_statusBar1; wxTreeCtrl* m_treeCtrl2; wxRichTextCtrl* m_richText2; wxRichTextCtrl* m_richText3; // Virtual event handlers, overide them in your derived class virtual void OnMenuExit( wxCommandEvent& event ) { event.Skip(); } public: MyFirstFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Hello wxWidget"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 606,441 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); ~MyFirstFrame(); }; #endif #include "FirstApp.h" IMPLEMENT_APP(MyFirstApp); DECLARE_APP(MyFirstApp); MyFirstApp::MyFirstApp(void) { } bool MyFirstApp::OnInit(void) { MyFirstFrame *pFrame = new MyFirstFrame(0); pFrame->Show(true); return true; } MyFirstFrame::MyFirstFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) { this->SetSizeHints( wxDefaultSize, wxDefaultSize ); m_menubar_main = new wxMenuBar( 0 ); m_menu1 = new wxMenu(); wxMenuItem* m_menuItemExit; m_menuItemExit = new wxMenuItem( m_menu1, wxID_Exit, wxString( wxT("退出") ) , wxEmptyString, wxITEM_NORMAL ); m_menu1->Append( m_menuItemExit ); m_menubar_main->Append( m_menu1, wxT("系统(&S)") ); this->SetMenuBar( m_menubar_main ); m_statusBar1 = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY ); wxBoxSizer* bSizer1; bSizer1 = new wxBoxSizer( wxVERTICAL ); m_treeCtrl2 = new wxTreeCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_DEFAULT_STYLE|wxTR_FULL_ROW_HIGHLIGHT ); bSizer1->Add( m_treeCtrl2, 1, wxEXPAND, 5 ); m_richText2 = new wxRichTextCtrl( this, wxID_ANY, wxEmptyString, wxPoint( -1,-1 ), wxSize( -1,-1 ), 0|wxVSCROLL|wxHSCROLL|wxNO_BORDER|wxWANTS_CHARS ); bSizer1->Add( m_richText2, 1, wxALIGN_RIGHT|wxEXPAND, 5 ); m_richText3 = new wxRichTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0|wxVSCROLL|wxHSCROLL|wxNO_BORDER|wxWANTS_CHARS ); bSizer1->Add( m_richText3, 1, wxEXPAND | wxALL, 5 ); this->SetSizer( bSizer1 ); this->Layout(); this->Centre( wxBOTH ); // Connect Events this->Connect( m_menuItemExit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MyFirstFrame::OnMenuExit ) ); } MyFirstFrame::~MyFirstFrame() { // Disconnect Events this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MyFirstFrame::OnMenuExit ) ); }
界面是直接用 wxFormBuilder 做的,投一下懒,感觉和MFC一样, 所以学过MFC的朋友们,应该很容易接受的啦。
编译工具: VS.2008
依赖工具: wxFormBuilder
运行时库: MT/MTD
依赖输入: uuid.lib rpcrt4.lib comctl32.lib wxjpeg.lib wxpng.lib wxregex.lib wxtiff.lib wxzlib.lib wxexpat.lib wxbase28.lib
wxbase28_net.lib wxbase28_odbc.lib wxbase28_xml.lib wxmsw28_dbgrid.lib wxmsw28_core.lib wxmsw28_richtext.lib wxmsw28_media.lib wxmsw28_html.lib wxmsw28_gl.lib wxmsw28_aui.lib wxmsw28_adv.lib wxmsw28_qa.lib wxmsw28_xrc.lib
当然啦,这么多不是都用的,我是为了解决前面那个错误而加的。:)