花都营销型网站建设,文创产品设计方法,可以自己做攻略的网站,免费制作视频文章目录 FLTK - FLTK1.4.1 - demo - adjuster.exe概述笔记根据代码#xff0c;用fluid重建一个adjuster.fl 备注 - fluid生成的代码作为参考代码好了修改后可用的代码END FLTK - FLTK1.4.1 - demo - adjuster.exe
概述
想过一遍 FLTK1.4.1的demo和测试工程#xff0c;工程… 文章目录 FLTK - FLTK1.4.1 - demo - adjuster.exe概述笔记根据代码用fluid重建一个adjuster.fl 备注 - fluid生成的代码作为参考代码好了修改后可用的代码END FLTK - FLTK1.4.1 - demo - adjuster.exe
概述
想过一遍 FLTK1.4.1的demo和测试工程工程数量不多(相对于 openssl3.2) 没找到 adjuster.exe 对应的.fl, 查一下咋回事。
笔记
将 fltk-release-1.4.1.zip 释放到 D:\3rd\fltk_release\fltk-release-1.4.1 D:\3rd\fltk_release\fl_test\fltk-release-1.4.1\test\adjuster.cxx 在编译之前就有. 可能性如下
adjuster.cxx 本来就是手写的。本来有.fl, 可能为了演示删掉了.fl, 伪装成是手写的。
看看FLTK(gitgithub.com:fltk/fltk.git)的git 日志看看啥情况? test\adjuster.cxx 1998年的就存在… 那行吧就当是作者手写的。
根据代码用fluid重建一个adjuster.fl
新建函数, 就采用默认的make_window()作为名字。 建立VS工程 将工程创建到.fl相同的目录 只留下 wWinMain(), 其他删掉。
// my_adjuster.cpp : 定义应用程序的入口点。
//#include framework.h
#include my_adjuster.hint APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR lpCmdLine,_In_ int nCmdShow)
{UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);return 0;
}
工程中加入 adjuster.cxx adjuster.h 加入安装好的头文件。
#include my_adjuster.h
#include adjuster.h加入安装好的库文件 在代码中加入具体库。
// error LNK2019: 无法解析的外部符号 GdiplusStartup
#pragma comment(lib, GdiPlus.lib)// error LNK2019: 无法解析的外部符号 __WSAFDIsSet
#pragma comment(lib,ws2_32.lib)// error LNK2019: 无法解析的外部符号 __imp__TrackMouseEvent
#pragma comment(lib,Comctl32.lib)#ifdef _DEBUG
#pragma comment(lib, fltk_formsd.lib)
#pragma comment(lib, fltk_gld.lib)
#pragma comment(lib, fltk_imagesd.lib)
#pragma comment(lib, fltk_jpegd.lib)
#pragma comment(lib, fltk_pngd.lib)
#pragma comment(lib, fltk_zd.lib)
#pragma comment(lib, fltkd.lib)
#else
// todo add release lib
#endif
调用.fl生成窗口代码
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR lpCmdLine,_In_ int nCmdShow)
{UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);Fl_Double_Window* pwin make_window();if (nullptr ! pwin){pwin-show(); // ! must call}return Fl::run();// return 0;
}
窗口出来了。 以上就搭建了可以运行的FLTK程序框架在这个架子上就可以用fluid产生的UI和实现干活了。
int main(int argc, char ** argv) {Fl_Double_Window window(320,100,argv[0]);char buf1[100];Fl_Box b1(FL_DOWN_BOX,20,30,80,25,buf1); // 并不是所有代码都能用fluid生成主要是用fluid生成UI代码然后自己在fluidUI框架代码上加自己的细节处理实现。
如果为了让fluid生成细节实现可以增加控件的单行扩展代码。 增加微调按钮 现在的fluid细节处理的不好无法自如的用UI流程生成细节代码。 只能是用fluid生成UI的基础布局代码其他代码要自己填写。 因为fluid生成的代码被改了之后无法在fluid上反应出来一旦自己改了fluid生成的基础代码就不能再用fluid生成代码否则会冲掉自己手写的实现。 如果要在自己手工修改fluid基础布局代码后还想用fluid改进UI布局。就必须利用git这样的工具进行恢复手写的代码。
控件添加回调。
备注 - fluid生成的代码作为参考代码好了
因为fluid还不完善最好不要将fluid生成的代码直接包含进工程用。 而是要将fluid生成代码作为拷贝和参考来用。 自己调整fluid生成代码这样就舒服多了。
修改后可用的代码
// my_adjuster.cpp : 定义应用程序的入口点。
//#include framework.h
#include my_adjuster.h
#include adjuster.h// error LNK2019: 无法解析的外部符号 GdiplusStartup
#pragma comment(lib, GdiPlus.lib)// error LNK2019: 无法解析的外部符号 __WSAFDIsSet
#pragma comment(lib,ws2_32.lib)// error LNK2019: 无法解析的外部符号 __imp__TrackMouseEvent
#pragma comment(lib,Comctl32.lib)#ifdef _DEBUG
#pragma comment(lib, fltk_formsd.lib)
#pragma comment(lib, fltk_gld.lib)
#pragma comment(lib, fltk_imagesd.lib)
#pragma comment(lib, fltk_jpegd.lib)
#pragma comment(lib, fltk_pngd.lib)
#pragma comment(lib, fltk_zd.lib)
#pragma comment(lib, fltkd.lib)
#else
// todo add release lib
#endifint APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR lpCmdLine,_In_ int nCmdShow)
{UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);Fl_Double_Window* pwin make_window();if (nullptr ! pwin){pwin-show();}return Fl::run();// return 0;
}// typedef void (Fl_Callback )(Fl_Widget*, void*);
void my_adjuster_cb(Fl_Widget* w, void* v)
{Fl_Adjuster* a (Fl_Adjuster*)w;Fl_Box* b (Fl_Box*)v;a-format((char*)(b-label()));b-redraw();
}Fl_Double_Window* make_window() {Fl_Double_Window* w;{ Fl_Double_Window* o new Fl_Double_Window(320, 167);w o; (void)w;Fl_Box* o1 new Fl_Box(20, 30, 80, 25, label);Fl_Adjuster* o2 new Fl_Adjuster(100, 30, 75, 25);{ o1-box(FL_DOWN_BOX);o1-color(FL_WHITE);o1-labelsize(11);o1-labelcolor(FL_BLACK);o1-copy_label( ); // 将缓冲区换为可写的缓冲区} // Fl_Box* o{ // o2-box(FL_GTK_UP_BOX); // 可以改变按钮外观样式o2-labelsize(11);o2-callback((Fl_Callback*)my_adjuster_cb, o1);my_adjuster_cb((Fl_Widget*)o2, (void*)o1);} // Fl_Adjuster* oo-resizable(o);o-end();} // Fl_Double_Window* oreturn w;
} END