wxWidgets框架例子。 直接粘贴到vc中,运行即可。当然需要安装好wxwidgets及其配置好lib和include设置。 其解释部分非常详细,基本上wxwidgets和mfc差不了多少,但是扩充性和跨平台性是大于mfc,同时 也对熟悉ruby下的wxruby和wxpython是非常快速的。 #include "wx/wx.h" // 定义应用程序类 class MyApp : public wxApp { public: virtual bool OnInit(); }; // 定义主窗口类 class MyFrame : public wxFrame { public: // 主窗口类的构造函数 MyFrame(const wxString& title); // 事件处理函数 void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); private: // 声明事件表 DECLARE_EVENT_TABLE() }; // 有了这一行就可以使用 MyApp& wxGetApp()了 DECLARE_APP(MyApp) // 告诉wxWidgets主应用程序是哪个类 IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // 创建主窗口 MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App")); // 显示主窗口 frame->Show(true); return true; } // MyFrame类的事件表 BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_ABOUT, MyFrame::OnAbout) EVT_MENU(wxID_EXIT, MyFrame::OnQuit) END_EVENT_TABLE() void MyFrame::OnAbout(wxCommandEvent& event) { wxString msg; msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING); wxMessageBox(msg, wxT("About Minimal"), wxOK | wxICON_INFORMATION, this); } void MyFrame::OnQuit(wxCommandEvent& event) { Close(); } MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title) { // 设置窗口图标 //SetIcon(wxIcon(mondrian_xpm)); // 创建菜单条 wxMenu *fileMenu = new wxMenu; // 添加“关于”菜单项 wxMenu *helpMenu = new wxMenu; helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog")); fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"), wxT("Quit this program")); // 将菜单项添加到菜单条中 wxMenuBar *menuBar = new wxMenuBar(); menuBar->Append(fileMenu, wxT("&File")); menuBar->Append(helpMenu, wxT("&Help")); // ...然后将菜单条放置在主窗口上 SetMenuBar(menuBar); // 创建一个状态条来让一切更有趣些。 CreateStatusBar(2); SetStatusText(wxT("欢迎使用wxWidgets!")); } 注意的是: 1.必须是windows框架而不是control程序框架 2.通过向导生成的stdafx.h 可以通过project/set/ "c/c++"中选择无编译头来去掉 stdafx.h 3.直接拷贝这些lib到工程设置 wxmsw28d_aui.lib wxmsw28d_html.lib wxmsw28d_xrc.lib wxmsw28d_adv.lib wxmsw28d_core.lib wxbase28d_xml.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib 4.附加该lib的位置,或者把以上lib放置到vc6可以找到地方. 5.如果报有LIBCD.lib重复定义,填到ignore lib中 6.以上都是在vc6环境测试下通过。 |
|
来自: orion360doc > 《开发平台》