fluid中已經(jīng)有它自己自帶的控件,那如何讓我們自定義的控件放到fluid中呢,這里有兩種方法,一種是修改fluid代碼,一種是以另外的控件來(lái)代替自定義的控件,只是在代替控件屬性的class選項下填寫(xiě)自定義控件的類(lèi)名,這種方式優(yōu)點(diǎn)是添加方便,缺點(diǎn)是不能所得即所見(jiàn)。另一種方式就是修改fluid的代碼,讓自定義控件像fltk自帶的控件一樣使用,下面就介紹如何通過(guò)修改fluid代碼,添加自定義的控件。
以下以Fl_Lcdnumber控件為例。
第一步:首先需要在fltk的庫中添加該控件
將Fl_Lcdnumber.H 保存在FL目錄下
將Fl_Lcdnumber.cxx 保存在src目錄下
修改src->Makefile文件,將Fl_Lcdnumber.cxx添加到makefile文件中,在src目錄下運行make,重新編譯fltk庫。
第二步:在function_panel.fl增加一個(gè)按鈕,修改相關(guān)屬性,與其他控件的屬性一樣,不同的是在屬性面板的C++下user_data框中的寫(xiě)上“Fl_Lcdnumber”
這一步的目的是在控件面板中增加該控件的選項,點(diǎn)擊這個(gè)控件的按鈕后在窗口中就會(huì )出現這個(gè)控件。
第三步:將控件添加到fluid的new 菜單
在factory.cxx中定義class Fl_Lcdnumber_type,內容如下:
#include<FL/Fl_Lcdnumber.H>
class Fl_Lcdnumber_Type:public Fl_Widget_Type {
public:
virtual const char *type_name(){return "Fl_Lcdnumber";}
Fl_Widget *widget(int x, int y,int w,int h){
return new Fl_Lcdnumber(x,y,w,h);}
Fl_Widget_Type *_make(){return new Fl_Lcdnumber_Type();}
int pixmapID(){return 15;}
};
static Fl_Lcdnumber_Type Fl_Lcdnumber_type;
在factory.cxx的New Menu[]中添加以下兩行
{"coustom widget",0,0,0,FL_SUBMENU},
{0,0,cb,(void*)&Fl_Lcdnumber_type},
第四步:重新編譯fluid
在fluid目錄下運行make,編譯fluid,重新打開(kāi)fluid后就可以看到在控件面板中和new菜單中有Fl_Lcdnumber控件了,使用方法與其他控件一樣。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1585638