fltk中文手册Word文档下载推荐.docx
- 文档编号:20887704
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:21
- 大小:25.51KB
fltk中文手册Word文档下载推荐.docx
《fltk中文手册Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《fltk中文手册Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
⑵支持OpenGL提供FI_GL_Window,支持OpenGL相关的操作。
(3)提供界面设计工具flUid,非常方便进行界面的设计。
(4)良好的跨平台移植性。
⑸支持多种C++编译器,Gcc,BC,VC等等。
⑹灵活性。
FLTK本身可以定制,以满足不同的需要。
这使得FLTK在嵌入式开发上有着极大
的竞争力,这正是我要推荐使用FLTK的原因。
本文就FLTK编程的一些基本方法进行介绍.
安装FLTK彳艮简单,我们只需要下载它的源文件,解压缩到目录下,在Linux下我们只需要输
入make编译完成然后makeinstall就头文件安装到/usr/include/FL目录下。
库文件就在
/usr/lib下,也可以自己编译之后把这些文件复制到这些目录,或者不需要复制,只在编译连接的时候指定路径。
在window下可以使用VC,BC打开相应目录下的工程文件编译即可。
第一步:
下载FLTK源码包
FLTK官网
下载后解压缩到C盘根目录下,命名为FLTK
进到C:
\FLTK\ide\visualc目录下,找到fltk.dsw
用VisualC++6.0打开项目,然后选择【组建】-->
全部重建,就开始编译了
编译完成后关闭VisualC++6.0
第二步:
添加FTLK库文件
(1)重新打开VisualC++6.0,新建一个Win32Application项目,命名为FLTK然后再新建
一个hello.cxx文件
(2)建立好之后选择【工程】->
【设置】-->
选择“连接”选项卡-->
“分类”下拉框选择输入,在对象/
库模块添加:
fltkd.libfltkgld.libcomctl32.libwsock32.libopengl32.libglu32.lib
还要在忽略库中添加:
LIBCDlibcd.lib
⑶之后选择“C/C++"
选项卡,"
分类”下拉框选择:
codegeneration,在“userun-time
library"
中选择”Multi-threadedDLL“最后确定。
⑷选择【工具】-->
【选项】--》"
目录"
选项卡
在”目录“下拉框中选择"
IncludeFiles"
然后新增一项C:
\FLTK(导入头文件)
⑸在“目录“下拉框中选择"
LibraryFiles”然后新增一项C:
\FLTK(导入类库)
(6)编译运行hello.cxx
配置基础开发环境GCC
xhy@xhy-desktop:
~$sudoapt-getinstallbuild-essential
第二步:
安装QT开发环境
~$sudoapt-getinstallqt4-dev-toolsqt4-docqt4-qtconfigqt4-demosqt4-designer
第三步:
下载后解压缩:
第四步:
编译安装FLTK
~$cdFLTKxhy@xhy-desktop:
~$make
~$sudomakeinstall
第五步:
测试环境
写一个简单的FLTK程序
#include<
FL/FI.H>
FL/FI_Window.H>
FL/FI_Box.H>
intmain(intargc,char**argv)
{
Fl_Window*window=newFl_Window(300,180);
Fl_Box*box=newFI_Box(20,40,260,100,"
Hello,World!
"
);
box->
box(FL_UP_BOX);
labelsize(36);
labelfont(FL_BOLD+FL_ITALIC);
labeltype(FL_SHADOW_LABEL);
window->
end();
show(argc,argv);
returnFl:
:
run();
}
包含了需要的头文件后,该程序创建了一个窗口
还创建了一个box类,标签是“HelloWorld!
”
下一步,我们设置了box的类型,大小,字体和标签的类型
FLTK作为GUI开发包,包含了常用的图形用户接口需要的一些构件,视觉表现非常丰富,如
下两图所示:
常用按钮构件
按钮名称
头文件
FlButton
—
FIButton.H
FICheckButton
FICheckButton.H
FILightButton
FILightButton.H
FIRepeatButtonF
RepeatButton.H
FI_Return_ButtonF
_Return_Button.Hf|_
RoundButton
FIRoundButton.H
对于具有FI_Check_Button、FI_Loght_Button和FI_Round_Button当状态为off时value()=0,On时value()返回1。
处理按钮时间可以使用回调(callback)函数,参见后面的事件处理。
文本处理构件
构件名称
FlInput
Fl」nput.H
FlOutput
FlOutput.H
FlMultilineInputF
MultilineInput.HFl
MultilineoutputFlM
iltilineoutput.H
设置和取得文本内容使用value();
如:
(newFI_Input(x,y,width,height,"
LabeI"
))->
vaIue("
HeIIoWorld!
其他构件参见FLTK.org的文档说明。
IabeItype(FL_SHADOW_LABEL);
最后,我们显示该窗口并进入FLTK事件循环
运行该程序得到的界面如下,你能直接关闭该窗口退出,也可以按ESC键退出
对于一般构件的如按钮,菜单等常用事件的处理一般可以使用回调函数实现,回调函数的原型是:
voidXXX_caIIback(FI_Widget*w,void*data)
{一一
//添加自己处理的内容
使用F1_Widget->
callback(XXX_caIIback,data)注册回调函数
/***************************************************************
按钮事件例子
***************************************************************/
FL/FI_Button.H>
FL/FI_ask.H>
voidBtnO1_cb(FI_Widget*w,void*data)
((Fl_Button*)w)->
label((char*)data);
fl_alert("
Hello"
char*buff="
;
Fl_Window*w=newFl_Window(272,144);
Fl_Button*BtnOI=newFl_Button(85,50,105,25,"
&
Testcallback"
Btn01->
shortcut(FL_ALT+'
t'
//定义按钮的快捷键
BtnO1->
callback((FI_Callback*)BtnO1_cb,buff);
//调用处理函数buff作为参数
w->
编译运行程序,鼠标点击按钮,按钮标签会发生改变,并且会弹出提示框。
通常的callback是当构件的value改变时调用,可以使用when()改变为其他事件发生调用回调函数,主要事件有以下事件
事件
说明
FLWHENNERVER
从不调用回调函数
FLWHENCHANGED
当构件值改变时调用
FL_WHEN_RELEASE
当释放按键或者鼠标并且构件值改变
FL_WHEN_RELEASE_ALWAYS
当释放按键或者鼠标,即使构件值没有改变
FLWHENENTERKEY
按下Enter键并且构件值改变
FLWHENENTERKEYALWAYS
————
按下Enter键,即使构件值没有改变
通过使用F1_Widget->
when(FL_WHEN_XXX来改变回调事件。
FL/Fl.H>
FL/Fl_Window.H>
FL/Fl_Button.H>
FL/Fl_ask.H>
{一一fl_alert("
Fl_Button*BtnO1=newFl_Button(85,5O,1O5,25,"
when(FL_WHEN_RELEASE_ALWAYS);
编译运行程序,在按钮上按下鼠标左键,移动到按钮外,松开鼠标按键,仍然会弹出对话框,对比上面的两程序,看看有什么不同。
在FLTK中是通过FI_Widegt:
handle(),虚拟函数来处理系统的消息。
我们可以查看Fltk的
源代码来分析系统是怎样处理一些系统消息的,如按钮的消息处理/*******************************************************
Fl_Button中处理消息的代码,省略了具体的处理代码
*******************************************************/
intFl_Button:
handle(intevent){
switch(event)
caseFL_ENTER:
caseFL_LEAVE:
return1;
caseFL_PUSH:
……
caseFL_DRAG:
caseFL_RELEASE:
caseFL_SHORTCUT:
caseFL_FOCUS:
caseFL_UNFOCUS:
caseFL_KEYBOARD:
……default:
return0;
可以看出了,系统的一些消息,都是在构件的handle()中进行处理的。
系统的主要消息有以下
鼠标事件消息
焦点事件消息
FLPUSH
FLENTER
FLDRAG
FLLEAVE
FLRELEASE
FLFOCUS
FLMOVE
FLUNFOCUS
键盘事件消息
剪贴板事件消息
FLKEYBOARD
FLPASTE
FLSHORTCUT
FLSELECTIONCLEAR
构件事件消息
FLDEACTIVATE
FLACTIVE
FLHIDE
FLSHOW
通过重载handle函数我们可扩充标准构件,下面是一个鼠标移动到上面就改变颜色的按钮的
实现源代码。
FL/fl_ask.H>
classEnterButton:
publicFl_Button
{_
inthandle(inte)
switch(e)
color(FL_GREEN);
labelsize(18);
redraw();
color(FL_GRAY);
default:
returnFl_Button:
handle(e);
}_
public:
EnterButton(intx,inty,intw,inth,constchar*l):
Fl_Button(x,y,w,h,l){}};
staticvoidcb(Fl_Widget*s,void*data)
HelloWorld!
Fl_Window*w=newFl_Window(130,50);
EnterButton*eBtn=newEnterButton(25,50,120,25,"
HelloWorld"
eBtn->
callback((FI_Callback*)cb);
运行显示效果如图:
Linux下演示[截屏时鼠标没有取到]
1.6OpenGL编程
在FLTK中很容易使用OpenGL进行图形编程的,我们只需要使用它的FI_GI_Window构件,重新定义一个派生于FI_GI_Window的类,重载draw()和handle()就可以。
所需要的代码和步骤如下:
1.包含以下头文件
FL/gI.h>
FL/FI_GI_Window.H>
2.定义一个子类,如下代码所示
classMYGLWindow:
publicFI_GI_Window
voiddraw();
//作图操作
voidhandle(int);
//消息事件处理
MYGLWindow(intx,inty,intw,inth,constchar*L):
FI_GI_Window(x,y,w,h,L){};
};
3.实现draw()事件
voidMYGLWindow:
draw()//作图
if(!
valid())
//设置viewport窗口大小等等例如/**********************************************valid
(1);
glLoadldentity();
glViewport(0,0,w(),h());
***********************************************/
〃添加使用OPENGL作图操作
4.事件处理实现
handle(intevent)//事件处理{
//操作等
case
注意
1.编译时需要包含openGL32的库文件,名字在不同的平台名字稍微不同。
2.使用<FL/gI.h>代替<GL/gI.h>头文件,不要使用后者的头文件。
例子程序比较长,附在参考中。
运行显示,弹出菜单后如图所示:
第二章:
常用的控件和属性
这章将描述FLTK提供的控件,并介绍如何得到和设置控件的标准属性。
普通按钮
带有选择框的按钮带有指示灯的按钮
FLTK提供了很多类型的按钮
FI_Button
FI_Check_Button
能被Enter激活的按钮带有圆形选择框的按钮
FI_Light_ButtonFI_Repeat_Button
FI_Return_Button
Fl_Round_Button
每一个按钮都需要相应的<
FL/FI_xyz_Button.H>
头文件。
构造函数包含了控件的位置,大小和可选的标签
FI_Button*button=newFI_Button(x,y,width,height,"
label"
FI_Light_Button*lbutton=newFI_Light_Button(x,y,width,height);
FI_Round_Button*rbutton=newFI_Round_Button(x,y,width,height,"
每一个按钮可以设置自己的类型用_type()「通过这个设置,可以让一个按钮为
pushbutton,togglebutton,orradiobutton:
button->
type(FL_NORMAL_BUTTON);
lbutton->
type(FL_TOGGLE_BUTTON);
rbutton->
type(FL_RADIO_BUTToN对于toggle和radio按钮,value()函数返回当前的状态,开/关(0代表关,
1代表开),set()和clear()分别用来设置和清除togglebutton的状态。
RadioButton可以用setonly()打开,同组中的其他Radiobutton按钮将关闭。
here
FLTK提供了几种文本控件来显示和接收文本信息
输入单行的文本
输出单行的文本多行文本输入框
多行文本输出框显示多行文本控件多行文本编辑控件显示HTML文本控件
控件允许互相copy,但是不能改变
Fl」nput
FI_Output
FI_MuItiIine_lnput
FI_MuItiIine_Output
FI_Text_Display
FI_Text_Editor
FI_HeIp_View
FI_OutputandFI_MuItiIine_Output
v/ue()函数用来设置和得到显示的字符串
Fl_lnput*input=newFl_lnput(x,y,width,height,"
input->
Nowisthetimeforallgoodmen..."
这个字符串将被拷贝到该控件的存储空间内,当用value()设置后
FI_Text_DispIayandFI_Text_Editor用FI_Text_Buffer来设置他的值,而不是一个简单的字符串~~~~
Valuators
用来显示数字轨迹信息带有箭头按钮的控件显示当前值圆形手柄
FI_Counter
FI_DiaI
FI_RoIIer
滚动条控件带有手柄的滑块
显示当前值的滑块
FI_ScroIIbar
FI_SIider
FI_Value_Slider
Figure3-2:
FLTKvaluatorwidgets
value()函数得到和设置控件的当前值,minimum()和maximum()设置了控件的范围
群Groups
FI_Group控件被用来做一般的容器控件。
除了单选按钮群以外,还被用来形成windows,tabs,scrolledwindows等控件。
一下是FLTK提供的群类。
Fl_Double_WindowFl_Gl_WindowFl_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fltk 中文 手册