fluid中已經有它自己內建的控制項,那如何讓我們自訂的控制項放到fluid中呢,這裡有兩種方法,一種是修改fluid代碼,一種是以另外的控制項來代替自訂的控制項,只是在代替控制項屬性的class選項下填寫自訂控制項的類名,這種方式優點是添加方便,缺點是不能所得即所見。另一種方式就是修改fluid的代碼,讓自訂控制項像fltk內建的控制項一樣使用,下面就介紹如何通過修改fluid代碼,添加自訂的控制項。以下以Fl_Lcdnumber控制項為例。 第一步:首先需要在fltk的庫中添加該控制項將Fl_Lcdnumber.H
儲存在FL目錄下將Fl_Lcdnumber.cxx
儲存在src目錄下修改src->Makefile檔案,將Fl_Lcdnumber.cxx添加到makefile檔案中,在src目錄下運行make,重新編譯fltk庫。 第二步:在function_panel.fl增加一個按鈕,修改相關屬性,與其他控制項的屬性一樣,不同的是在屬性面板的C++下user_data框中的寫上“Fl_Lcdnumber”這一步的目的是在控制項面板中增加該控制項的選項,點擊這個控制項的按鈕後在視窗中就會出現這個控制項。 第三步:將控制項添加到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();} intpixmapID(){return15;} };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,重新開啟fluid後就可以看到在控制項面板中和new菜單中有Fl_Lcdnumber控制項了,使用方法與其他控制項一樣。