wxWidgets框架例子。
直接粘貼到vc中,運(yùn)行即可。當(dāng)然需要安裝好wxwidgets及其配置好lib和include設(shè)置。
其解釋部分非常詳細(xì),基本上wxwidgets和mfc差不了多少,但是擴(kuò)充性和跨平臺(tái)性是大于mfc,同時(shí)
也對(duì)熟悉ruby下的wxruby和wxpython是非常快速的。
#include "wx/wx.h"
// 定義應(yīng)用程序類(lèi)
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
// 定義主窗口類(lèi)
class MyFrame : public wxFrame
{
public:
// 主窗口類(lèi)的構(gòu)造函數(shù)
MyFrame(const wxString& title);
// 事件處理函數(shù)
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
private:
// 聲明事件表
DECLARE_EVENT_TABLE()
};
// 有了這一行就可以使用 MyApp& wxGetApp()了
DECLARE_APP(MyApp)
// 告訴wxWidgets主應(yīng)用程序是哪個(gè)類(lèi)
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
// 創(chuàng)建主窗口
MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App"));
// 顯示主窗口
frame->Show(true);
return true;
}
// MyFrame類(lèi)的事件表
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)
{
// 設(shè)置窗口圖標(biāo)
//SetIcon(wxIcon(mondrian_xpm));
// 創(chuàng)建菜單條
wxMenu *fileMenu = new wxMenu;
// 添加“關(guān)于”菜單項(xiàng)
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"));
// 將菜單項(xiàng)添加到菜單條中
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(fileMenu, wxT("&File"));
menuBar->Append(helpMenu, wxT("&Help"));
// ...然后將菜單條放置在主窗口上
SetMenuBar(menuBar);
// 創(chuàng)建一個(gè)狀態(tài)條來(lái)讓一切更有趣些。
CreateStatusBar(2);
SetStatusText(wxT("歡迎使用wxWidgets!"));
}
注意的是:
1.必須是windows框架而不是control程序框架
2.通過(guò)向?qū)傻膕tdafx.h 可以通過(guò)project/set/ "c/c++"中選擇無(wú)編譯頭來(lái)去掉
stdafx.h
3.直接拷貝這些lib到工程設(shè)置
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.如果報(bào)有LIBCD.lib重復(fù)定義,填到ignore lib中
6.以上都是在vc6環(huán)境測(cè)試下通過(guò)。