当前位置: 首页 > news >正文

FLTK - FLTK1.4.1 - demo - adjuster.exe

文章目录

    • 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(git@github.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.h"int 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

http://www.lryc.cn/news/527083.html

相关文章:

  • 单路由及双路由端口映射指南
  • 专为课堂打造:宏碁推出三款全新耐用型 Chromebook
  • 云计算架构学习之LNMP架构部署、架构拆分、负载均衡-会话保持
  • Python案例--暂停与时间格式化
  • 【javaweb项目idea版】蛋糕商城(可复用成其他商城项目)
  • git gui 笔记
  • 使用 Docker 运行 Oracle Database 23ai Free 容器镜像并配置密码与数据持久化
  • PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(下.代码部分)
  • salesforce公式字段 ISBLANK 函数和 <> NULL的区别
  • 微服务学习-服务调用组件 OpenFeign 实战
  • 关于安卓greendao打包时报错问题修复
  • Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)
  • RGB 转HSV空间颜色寻找色块
  • Spring Boot - 数据库集成04 - 集成Redis
  • C++红黑树详解
  • 与机器学习相关的概率论重要概念的介绍和说明
  • 60.await与sleep的原理分析 C#例子 WPF例子
  • 数据库连接池是如何工作的?
  • 2025年01月26日Github流行趋势
  • C语言的灵魂——指针(1)
  • vue2和vue3指令
  • 【超详细】ELK实现日志采集(日志文件、springboot服务项目)进行实时日志采集上报
  • 微信阅读网站小程序的设计与实现(LW+源码+讲解)
  • 通过配置核查,CentOS操作系统当前无多余的、过期的账户;但CentOS操作系统存在共享账户r***t
  • Vue 3 30天精进之旅:Day 05 - 事件处理
  • .NET Core跨域
  • 笔试-二维数组2
  • vue中使用jquery 实现table 拖动改变尺寸
  • 使用ensp进行ppp协议综合实验
  • 什么是AGI