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.rhkb.cn/news/8092.html

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

相关文章

Cursor的简单使用

目录 一、下载与配置 1.1、下载 1.2、汉化 1.3、模型选择 1.4、规则设置 二、Chat(聊天)和Composer(编写助手) 三、快捷键 3.1、tab(代码自动补全) 3.2、CtrlL、CtrlI 3.3、系列 3.4、预防、检测、回滚 四、无限登录 …

剥离情绪的内耗

情绪的内耗,指的是我们内心对于某些情绪的过度反应、反复纠结,或者对情感的压抑所产生的心理消耗。这种内耗通常会让我们感到疲惫、焦虑、无力,甚至影响到我们的行为和决策。要真正剥离情绪的内耗,核心在于如何认识、接受并合理处…

android的gradle

资料: GitHub - ChenSWD/CopyGradleInAction: 备份《Gradle IN Action》书中的源码,添加了部分注释 //github上一个开源项目,外加pdf书 Gradle User Manual gradle官网 讲的挺好的博客 Gradle之重新认识Gradle(项目结构、命令行、tas…

Python 之 Excel 表格常用操作

示例文件 test.xlsx 将各个表单拆分成单独的 Excel 文件 import os.pathimport openpyxl import pandasdef handle_excel(file_path):dirname os.path.dirname(file_path)basename os.path.basename(file_path).split(".")[0]wb openpyxl.load_workbook(file_pat…

【C语言系列】深入理解指针(4)

深入理解指针(4) 一、回调函数是什么?二、qsort使用举例2.1使用qsort函数排序整型数据2.2使用qsort排序结构数据 三、qsort函数的模拟实现四、总结 一、回调函数是什么? 回调函数就是一个通过函数指针调用的函数。 如果你把函数的…

计算机网络 (56)交互式音频/视频

一、定义与特点 定义:交互式音频/视频是指用户使用互联网和其他人进行实时交互式通信的技术,包括语音、视频图像等多媒体实时通信。 特点: 实时性:音频和视频数据是实时传输和播放的,用户之间可以进行即时的交流。交互…

FFmpeg 头文件完美翻译之 libavcodec 模块

前言 众所周知,FFmpeg 的代码开发上手难度较高,源于官方提供的文档很少有包含代码教程相关的。要想熟练掌握 FFmpeg 的代码库开发,需要借助它的头文件,FFmpeg 把很多代码库教程都写在头文件里面。因此,熟读头文件的内…

组件框架漏洞

一.基础概念 1.组件 定义:组件是软件开发中具有特定功能或特性的可重用部件或模块,能独立使用或集成到更大系统。 类型 前端 UI 组件:像按钮、下拉菜单、导航栏等,负责构建用户界面,提升用户交互体验。例如在电商 AP…

【C++图论】1761. 一个图中连通三元组的最小度数|2005

本文涉及知识点 C图论 LeetCode1761. 一个图中连通三元组的最小度数 给你一个无向图,整数 n 表示图中节点的数目,edges 数组表示图中的边,其中 edges[i] [ui, vi] ,表示 ui 和 vi 之间有一条无向边。 一个 连通三元组 指的是 …

C语言编译过程全面解析

今天是2025年1月26日,农历腊月二十七,一个距离新春佳节仅一步之遥的日子。城市的喧嚣中,年味已悄然弥漫——能在这个时候坚持上班的人,真可称为“牛人”了吧,哈哈。。。。 此刻,我在重新审视那些曾被遗忘的…

【橘子Kibana】Kibana的分析能力Analytics简易分析

一、kibana是啥,能干嘛 我们经常会用es来实现一些关于检索,关于分析的业务。但是es本身并没有UI,我们只能通过调用api来完成一些能力。而kibana就是他的一个外置UI,你完全可以这么理解。 当我们进入kibana的主页的时候你可以看到这样的布局。…

生信软件管家——conda vs pip

pip vs conda: 安装过python包的人自然两种管理软件都用过, Pip install和Conda install在Python环境中用于安装第三方库和软件包,但它们在多个方面存在显著的区别 总的来说: pip是包管理软件,conda既是包管理软件&…

代码随想录——二叉树(二)

文章目录 前言二叉树最大深度二叉树的最小深度翻转二叉树对称二叉树完全二叉树的节点个数平衡二叉树二叉树的所有路径左叶子之和找左下角的值路径总和从中序与后序序列构造二叉树最大二叉树合并二叉树二叉搜索树中的搜索验证二叉搜索树二叉搜索树的最小绝对差二叉树中的众数二叉…

深入剖析 Adam 优化器:原理、优势与应用

在深度学习领域,优化器的选择对模型的训练效率和性能起着决定性作用。Adam优化器作为一种自适应优化算法,凭借其根据历史梯度信息动态调整学习率的特性,备受研究者和工程师的青睐。它巧妙融合了RMSProp和Momentum两种优化算法的理念&#xff…

Mybatis入门

Mybatis入门 一、mybatis的快速入门 1、创建springboot项目 直接选择必须的依赖:MyBatis Framework和MySQL Driver在项目下创建pojo包,用来存放数据库表对应的实体类 2、配置连接信息 在springboot项目的配置文件中application.properties写入一下信…

消息队列篇--通信协议篇--MQTT(通配式主题,消息服务质量Qos,EMQX的Broker,MqttClient示例,MQTT报文等)

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议。它基于发布/订阅模式,专为低带宽、高延迟或不可靠网络设计。它主要用于物联网(IoT)设备之间的通信,但也广泛应用于其他需要高效消息传递…

dmfldr实战

dmfldr实战 本文使用达梦的快速装载工具,对测试表进行数据导入导出。 新建测试表 create table “BENCHMARK”.“TEST_FLDR” ( “uid” INTEGER identity(1, 1) not null , “name” VARCHAR(24), “begin_date” TIMESTAMP(0), “amount” DECIMAL(6, 2), prim…

基于OSAL的嵌入式裸机事件驱动框架——消息队列osal_msg

参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 消息队列 消息分为hdr和bdy,把消息的头dhr和内容bdy做了一个分离的设计 dhr包括指向下一个消息的指针next,len在创建消息的时候使用,dest_id即目标任务,将消息和任务…

关于MySQL InnoDB存储引擎的一些认识

文章目录 一、存储引擎1.MySQL中执行一条SQL语句的过程是怎样的?1.1 MySQL的存储引擎有哪些?1.2 MyIsam和InnoDB有什么区别? 2.MySQL表的结构是什么?2.1 行结构是什么样呢?2.1.1 NULL列表?2.1.2 char和varc…

单相可控整流电路——单相桥式全控整流电路

以下是关于单相桥式整流电路的介绍: 电路构成(带阻性负载的工作情况) - 二极管:是电路0的核心元件,通常采用四个同型号或根据需求选择不同型号的二极管,如1N4001、1N4007等,如图Vt1和Vt4是一对…