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

FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验

文章目录

    • FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验
    • 概述
    • 笔记
    • my_fltk_test.cpp
    • fltk_test.h
    • fltk_test.cxx
    • 用adjuster工程试了一下,好使。
    • END

FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验

概述

用fluid搭建UI, 然后将生成的代码搬到自己工程中,这是普通流程。

但是如果想过一遍fltk自带的demo工程,而且fltk自带的demo大部分是不带fl的,如果想自己根据demo实现再重新搭fl文件,有点本末导致。
且已经知道了fluid的操作流程,放置的控件都是啥效果,控件参数的调整基本一致,具体再试验了,只是时间问题。真没必要脱裤子放屁。
且fltk自带的demo工程是一组依赖cmake编译的工程,已经试过了,如果改一点,将VS2019关掉时,会关不掉。

想再搭一个工程模板,将fltk的demo粘贴过来,稍微改一下调用点,就可以直接做实验。

笔记

在这里插入图片描述

my_fltk_test.cpp

//! @file my_fltk_test.cpp
//! @biref fltk试验模板,可以将fltk自带的demo实现粘贴过来用

#include "framework.h"
#include "my_fltk_test.h"
#include "fltk_test.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

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    const char* app_title = "fltk test app";
    return fl_demo_main(1, (char**)&app_title);

    // return 0;
}


fltk_test.h

//! @file fltk_test.h

#ifndef _FLTK_TEST_H_

int fl_demo_main(int argc, char** argv);

#endif // !_FLTK_TEST_H_


fltk_test.cxx


#include "fltk_test.h"

// 如果要将fl demo的实现搬过来测试,就注释掉下面的宏
#define DONT_USE_FL_DEMO

#ifdef DONT_USE_FL_DEMO
int fl_demo_main(int argc, char** argv)
{
	return 0;
}

#else

#endif // TEST_FL_DEMO

// 将fltk的单文件实现都贴在这里
// 将main() 改名为 fl_demo_main()

用adjuster工程试了一下,好使。

在此模板工程,针对fltk自带的不同demo工程,需要改动的只是 fltk_test.cxx


#include "fltk_test.h"

// 如果要将fl demo的实现搬过来测试,就注释掉下面的宏
// #define DONT_USE_FL_DEMO

#ifdef DONT_USE_FL_DEMO
int fl_demo_main(int argc, char** argv)
{
	return 0;
}

#else

#endif // TEST_FL_DEMO

//
// Adjuster test program for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file.  If this
// file is missing or damaged, see the license at:
//
//     https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
//     https://www.fltk.org/bugs.php
//

#include <stdlib.h>
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Adjuster.H>
#include <FL/Fl_Box.H>

void adjcb(Fl_Widget* o, void* v) {
	Fl_Adjuster* a = (Fl_Adjuster*)o;
	Fl_Box* b = (Fl_Box*)v;
	a->format((char*)(b->label()));
	b->redraw();
}

int fl_demo_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);
	b1.color(FL_WHITE);
	Fl_Adjuster a1(20 + 80, 30, 3 * 25, 25);
	a1.callback(adjcb, &b1);
	adjcb(&a1, &b1);

	char buf2[100];
	Fl_Box b2(FL_DOWN_BOX, 20 + 80 + 4 * 25, 30, 80, 25, buf2);
	b2.color(FL_WHITE);
	Fl_Adjuster a2(b2.x() + b2.w(), 10, 25, 3 * 25);
	a2.callback(adjcb, &b2);
	adjcb(&a2, &b2);

	window.resizable(window);
	window.end();
	window.show(argc, argv);
	return Fl::run();
}

在这里插入图片描述

END


http://www.kler.cn/a/526682.html

相关文章:

  • 【ArcMap零基础训练营】03 常用数据网站的数据下载及处理
  • 脚本运行禁止:npm 无法加载文件,因为在此系统上禁止运行脚本
  • 使用langchain ollama gradio搭建一个本地基于deepseek r1的RAG问答系统
  • 大数据学习之Kafka消息队列、Spark分布式计算框架一
  • 最新-CentOS 7 基于1 Panel面板安装 JumpServer 堡垒机
  • 【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • 知识管理平台在数字经济时代推动企业智慧决策与知识赋能的路径分析
  • 全面认识了解DeepSeek+利用ollama在本地部署、使用和体验deepseek-r1大模型
  • 【仓颉】仓颉编程语言Windows安装指南 配置环境变量 最简单解决中文乱码问题和其他解决方案大全
  • 360嵌入式开发面试题及参考答案
  • 【Linux指令/信号总结】粘滞位 重定向 系统调用 信号产生 信号处理
  • 【开源免费】基于Vue和SpringBoot的医院资源管理系统(附论文)
  • Python的那些事第六篇:从定义到应用,Python函数的奥秘
  • 将多目标贝叶斯优化与强化学习相结合用于TinyML
  • 2024年数据记录
  • 【16届蓝桥杯寒假刷题营】第1期DAY2
  • 创建 priority_queue - 进阶(内置类型)c++
  • React 低代码项目:项目创建
  • .Net / C# 分析文件编码 并将 各种编码格式 转为 另一个编码格式 ( 比如: GB2312→UTF-8, UTF-8→GB2312)
  • Vue中的动态组件是什么?如何动态切换组件?
  • C 标准库 - `<errno.h>`
  • 学习笔记 ---- 平衡树 总结
  • UE求职Demo开发日志#15 思路与任务梳理、找需要的资源
  • sys中目录和文件的建立以及与驱动的交互
  • 【Block总结】LSKNet,大核卷积|即插即用
  • opencv裁剪视频区域