由于SmartWin岁数尚轻,网路上资料并不多,只能看着文档摸索。因此要轻松学习是相当困难的,不过有个设计GUI的可视化环境叫Sally的,俺上sourceforge上下载结果网页出错,正当十分泄气之时,俺瞥见了WxWigets,也是相当好玩的。于是迫不及待的下载下来安装上,呵呵。一查网上资料还真挺丰富的,起码有本权威一点的指导书《使用WxWigets跨平台GUI设计》,呵呵,最可喜的是居然俺一直在用的Dev-C++有一个兄弟Wx Dev-C++,用他来设计是相当不错的。
生成的代码
void HTMLEditorFrm::CreateGUIControls()
{
//Do not add custom code between
//GUI Items Creation Start and GUI Items Creation End
//wxDev-C++ designer will remove them.
//Add the custom code before or after the blocks
/**/////GUI Items Creation Start
WxStatusBar1 = new wxStatusBar(this, ID_WXSTATUSBAR1);
WxSplitterWindow1 = new wxSplitterWindow(this, ID_WXSPLITTERWINDOW1, wxPoint(0,0), wxSize(400,99));
WxSplitterWindow1->SetFont(wxFont(9, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("宋体")));
WxHtmlWindow1 = new wxHtmlWindow(WxSplitterWindow1, ID_WXHTMLWINDOW1, wxPoint(5,5), wxSize(185,89));
WxHtmlWindow1->SetFont(wxFont(9, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("宋体")));
WxMenuBar1 = new wxMenuBar();
wxMenu *ID_MNU_FILE_1011_Mnu_Obj = new wxMenu(0);
ID_MNU_FILE_1011_Mnu_Obj->Append(ID_MNU_OPEN_TCTRL_O_1012, wxT("&Open\tCtrl+O"), wxT(""), wxITEM_NORMAL);
ID_MNU_FILE_1011_Mnu_Obj->Append(ID_MNU_SAVE_1013, wxT("&Save\tCtrl+S"), wxT(""), wxITEM_NORMAL);
ID_MNU_FILE_1011_Mnu_Obj->AppendSeparator();
ID_MNU_FILE_1011_Mnu_Obj->Append(ID_MNU_EXIT_1016, wxT("E&xit"), wxT(""), wxITEM_NORMAL);
WxMenuBar1->Append(ID_MNU_FILE_1011_Mnu_Obj, wxT("&File"));
SetMenuBar(WxMenuBar1);
…………………
/**/////GUI Items Creation End
}
void HTMLEditorFrm::OnClose(wxCloseEvent& event)
{
Destroy();
}
/**//*
* WxMemo1Updated
*/
void HTMLEditorFrm::WxMemo1Updated(wxCommandEvent& event)
{
// insert your code here
}
/**//*
* Mnuexit1016Click
*/
void HTMLEditorFrm::Mnuexit1016Click(wxCommandEvent& event)
{
// insert your code here
Destroy();
}
虽然没有smartwin通俗易懂,但面对如此好用的工具,还是很有吸引力的。原理也类似,生成框架,对各个属性设置,然后对基于事件驱动的话,每个控件都有一个函数,你可以自己定义动作。
Wxwigets的帮助文件查找相应的类和函数是很方便的,所以用他来做俺的小玩意还是比较合适的。