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.mzph.cn/bicheng/69320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地大模型编程实战(03)语义检索(2)

文章目录 准备按批次嵌入加载csv文件,分割文档并嵌入测试嵌入效果总结代码 上一篇文章: 本地大模型编程实战(02)语义检索(1) 详细介绍了如何使用 langchain 实现语义检索,为了演示方便,使用的是 langchain 提供的内存数据库。 在实…

以太网详解(六)OSI 七层模型

文章目录 OSI : Open System Interconnect(Reference Model)第七层:应用层(Application)第六层:表示层(Presentation)第五层:会话层(Session)第四…

单片机基础模块学习——DS18B20温度传感器芯片

不知道该往哪走的时候,就往前走。 一、DS18B20芯片原理图 该芯片共有三个引脚,分别为 GND——接地引脚DQ——数据通信引脚VDD——正电源 数据通信用到的是1-Wier协议 优点:占用端口少,电路设计方便 同时该协议要求通过上拉电阻…

在每一次灵感碰撞中,见证成长的蜕变--24年年度总结

我也来写一个年度总结吧。从24年8月5号开始了职业生涯的第一篇创作,当时刚好被拉去封闭开发了,做一个保密的AI赋能业务的项目。当时写博客的初衷是为了记录项目中遇到的一些问题以及技术栈的使用、原理剖析等,从而让自己快速成长。没想到文章…

基于paddleocr的表单关键信息抽取

全流程如下: 数据集 XFUND数据集是微软提出的一个用于KIE任务的多语言数据集,共包含七个数据集,每个数据集包含149张训练集和50张验证集分别为: ZH(中文)、JA(日语)、ES(西班牙)、FR(法语)、IT(意大利)、DE(德语)、PT(葡萄牙)&a…

AIGC视频扩散模型新星:Video 版本的SD模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,…

深度解析:基于Vue 3的教育管理系统架构设计与优化实践

一、项目架构分析 1. 技术栈全景 项目采用 Vue 3 TypeScript Tailwind CSS 技术组合,体现了现代前端开发的三大趋势: 响应式编程:通过Vue 3的Composition API实现细粒度响应 类型安全:约60%的组件采用TypeScript编写 原子化…

aws(学习笔记第二十六课) 使用AWS Elastic Beanstalk

aws(学习笔记第二十六课) 使用aws Elastic Beanstalk 学习内容: AWS Elastic Beanstalk整体架构AWS Elastic Beanstalk的hands onAWS Elastic Beanstalk部署node.js程序包练习使用AWS Elastic Beanstalk的ebcli 1. AWS Elastic Beanstalk整体架构 官方的guide AWS…

视频多模态模型——视频版ViT

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》,2021由google 提出用于视频处理的视觉 Transformer 模型,在视频多模态领域有…

【ArcGIS微课1000例】0141:提取多波段影像中的单个波段

文章目录 一、波段提取函数二、加载单波段导出问题描述:如下图所示,img格式的时序NDVI数据有24个波段。现在需要提取某一个波段,该怎样操作? 一、波段提取函数 首先加载多波段数据。点击【窗口】→【影像分析】。 选择需要处理的多波段影像,点击下方的【添加函数】。 在多…

讨论:延迟双删,要延迟多久呢?

这个延迟双删,其实是保证数据库和缓存数据一致性的一种方案来的。大家觉得应该如何回答更好呢?我觉得可以先从最基础的开始聊起,比如什么是一致性,然后从串联起来。我聊聊我的思路。 首先,先回归基础,什么…

SQL Server查询计划操作符(7.3)——查询计划相关操作符(5)

7.3. 查询计划相关操作符 38)Flow Distinct:该操作符扫描其输入并对其去重。该操作符从其输入得到每行数据时即将其返回(除非其为重复数据行,此时,该数据行会被抛弃),而Distinct操作符在产生任何输出前将消费所有输入。该操作符为逻辑操作符。该操作符具体如图7.2-38中…

智慧消防营区一体化安全管控 2024 年度深度剖析与展望

在 2024 年,智慧消防营区一体化安全管控领域取得了令人瞩目的进展,成为保障营区安全稳定运行的关键力量。这一年,行业在政策驱动、技术创新应用、实践成果及合作交流等方面呈现出多元且深刻的发展态势,同时也面临着一系列亟待解决…

关于圆周率的新认知

从自然对数底 的泰勒展开, 可以得出 的展开式, 它可以被认为是,以 0 为周期的单位 1 ,以 1 为周期的单位 1 ,以 2 为周期的单位 1 等所有自然数为周期的单位 1 分阶段合成(体现为阶乘的倒数)之…

Flutter使用Flavor实现切换环境和多渠道打包

在Android开发中通常我们使用flavor进行多渠道打包,flutter开发中同样有这种方式,不过需要在原生中配置 具体方案其实flutter官网个了相关示例(https://docs.flutter.dev/deployment/flavors),我这里记录一下自己的操作 Android …

通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)

大家对于智能体代理Agent一定已经非常熟悉,自主代理(Autonomous Agents) 目前在AI行业极其热门并具有巨大的潜力,能够显著提升开发者日常的工作效率、自动化日常琐碎、重复性任务,并生成全新的内容。Agent可以理解用户…

基于STM32的阿里云智能农业大棚

目录 前言: 项目效果演示: 一、简介 二、硬件需求准备 三、硬件框图 四、CubeMX配置 4.1、按键、蜂鸣器GPIO口配置 4.2、ADC输入配置 4.3、IIC——驱动OLED 4.4、DHT11温湿度读取 4.5、PWM配置——光照灯、水泵、风扇 4.6、串口——esp8266模…

游戏与硬件深度协同,打造更精细的体验优化

高画质的游戏往往带来手机的发热和卡顿从而影响游戏体验。开发者希望能够获取到手机运行的实时状态,从而能够进行主动的负载调节,将手机发热时游戏体验影响降到最低;同时手机也可以通过游戏传入的关键场景如"正在下载资源"“团战中…

14-7C++STL的stack容器

(一)stack容器的入栈与出栈 (1)stack容器的简介 stack堆栈容器,“先进后出”的容器,且stack没有迭代器 (2)stack对象的默认构造 stack采用模板类实现,stack对象的默认…

Python从0到100(八十五):神经网络-使用迁移学习完成猫狗分类

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…