标签: fltk

使用SWIG的C++到C包装器(用于FLTK)

我需要生成FLTK C++类的包装器才能在纯C中使用它.我知道,SWIG可以做到这一点,我知道如何为C#,Python等生成包装器.但我不知道如何使用C++包装C++痛饮.这是一项简单的任务,但我找不到答案:)请帮助.

c c++ swig wrapper fltk

12
推荐指数
1
解决办法
3424
查看次数

在C++ 98模式下在Visual Studio 2015中运行项目

我目前有一个项目,我使用最新的编译器(即默认值)在Visual Studio 2015中编程.不幸的是,我要求我的项目在C++ 98环境中编译和执行 - 有没有办法让我在Visual Studio中通过某种方式更改编译器版本来执行此操作,以便我可以检查我的项目是否仍然有效?

此外,在这个项目中我使用FLTK 1.3.3(一个GUI包) - 如果我确实可以在Visual Studio 2015中执行此操作,我是否需要使用C++ 98模式重建此库?

c++ compatibility fltk c++98 visual-studio-2015

9
推荐指数
1
解决办法
3103
查看次数

用g ++编译FLTK

我正在使用C++编写Stroustrup的原理和实践.我试图让以下程序编译.

#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <Fl/Fl_Window.H>

int main()
{
    Fl_Window window(200, 200, "Window title");
    Fl_Box box(0,0,200,200,"Hey, I mean, Hello, World!");
    window.show();
    return Fl::run();
}
Run Code Online (Sandbox Code Playgroud)

我尝试编译它,g++ -std=c++11 trial.cpp -o trial但然后它抛出以下错误

    /tmp/ccaLRS7L.o: In function `main':
trial.cpp:(.text+0x26): undefined reference to `Fl_Window::Fl_Window(int, int, char const*)'
trial.cpp:(.text+0x50): undefined reference to `Fl_Box::Fl_Box(int, int, int, int, char const*)'
trial.cpp:(.text+0x5f): undefined reference to `Fl_Window::show()'
trial.cpp:(.text+0x64): undefined reference to `Fl::run()'
trial.cpp:(.text+0x84): undefined reference to `Fl_Window::~Fl_Window()'
trial.cpp:(.text+0xae): undefined reference to `Fl_Window::~Fl_Window()'
/tmp/ccaLRS7L.o: In function `Fl_Box::~Fl_Box()':
trial.cpp:(.text._ZN6Fl_BoxD2Ev[_ZN6Fl_BoxD5Ev]+0x13): undefined …
Run Code Online (Sandbox Code Playgroud)

c++ fltk

7
推荐指数
1
解决办法
3769
查看次数

Stroustrup的Simple_window.h

我试图从Stroustrup的原理和实践... C++中获取图形示例,但无济于事.我已经安装了fltk的东西,并知道它工作正常,因为我设法得到一个窗口显示使用他的书的附录中建议的程序:

#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Window.H>

int main(){

    Fl_Window window(200,200, "title here");
    Fl_Box box(0,0,200,200,"Hey, hello wrld");
    window.show();
    return Fl::run();
}
Run Code Online (Sandbox Code Playgroud)

然而,尝试使用他的Simple_window.h(可以在他的网站上找到)给出"对'Window'的引用是模棱两可的",因为它已经在usr/include/X11/Xh.所以我尝试将命名空间指定为相关的命名空间:

struct Simple_window : Graph_lib::Window {  //Changed Window to inc. namespace
    Simple_window(Point xy, int w, int h, const string& title );

    bool wait_for_button(); // simple event loop

.
.
.
Run Code Online (Sandbox Code Playgroud)

但这给了我一堆我不理解的错误:

$ clear; g++ -Wno-deprecated window.cpp -o holz
    /tmp/ccIFivNg.o: In function `main':
    window.cpp:(.text+0x64): undefined reference to `Simple_window::Simple_window(Point, int, int, String const&)'
    /tmp/ccIFivNg.o: In function `Graph_lib::Window::~Window()':
    window.cpp:(.text._ZN9Graph_lib6WindowD2Ev[_ZN9Graph_lib6WindowD5Ev]+0x14): undefined reference …
Run Code Online (Sandbox Code Playgroud)

c++ header fltk

6
推荐指数
2
解决办法
4693
查看次数

如何用FLTK显示Unicode?

根据FLTK 1.3.2文档:

Unicode支持最近才被添加到FLTK,但仍然不完整.

但是,应该实现以下内容:

值得注意的是,FLTK中Unicode和UTF-8的初始实现涉及三个重要方面:

  • 提供Unicode字符表和一些简单的相关功能
  • 将char*变量和函数参数从单字节每字符表示转换为UTF-8可变长度
    序列
  • 修改显示字体界面以接受通用Unicode字符或UCS代码,而不仅仅是ASCII或Latin1字符.

我的问题是,我如何在我的FLTK控件上实际显示Unicode?我找不到任何接受Unicode的小部件功能.例如,这是该label函数的签名:

void Fl_Widget::label ( const char * text )

c++ unicode user-interface fltk

6
推荐指数
1
解决办法
1019
查看次数

错误C1083:无法打开包含文件:'FL/Fl.h':没有这样的文件或目录

首先,我还是新来的,所以不知道如何格式化代码,所以它在这个问题上看起来很整洁,我希望这是可以接受的.我遵循Stroustrup的编程原则和实践.你可能会猜到问题是什么......是的FLTK安装.我已仔细按照所有步骤在VS C++ 2013中构建项目; 第1204-1206页.(我已经成功完成了附录C,与std_lib_facilities.h有关).

我正在尝试构建以下win32项目,如本书所示:

#include <FL/Fl.h>
#include <FL/Fl_Box.h>
#include <FL/Fl_Window.h>

int main()
{
Fl_Window window(200, 200, "Window title");
Fl_Box box(0, 0, 200, 200, "Hey, I mean, Hello, World!");
window.show();
return Fl::run();
}
Run Code Online (Sandbox Code Playgroud)

构建解决方案后,我收到一条错误,内容如下:错误1错误C1083:无法打开包含文件:'FL/Fl.h':没有这样的文件或目录

我还按照步骤将FLTK lib目录中的一些lib文件复制到c:\ users\pablo\desktop\c ++ course files\visual c ++\win32project1\source.cpp这是我为Visual Studio Express 2013创建的文件有人能帮助我吗?我在哪里可以找到这个丢失的文件?问题可能与FLTK版本在VS 2013中使用有点过时这一事实有关吗?(当我编译FLTK库时,我遇到了一些与备份文件和一些警告有关的错误.)我已经研究了很长时间了.我在这个论坛中发现了一些与此有关的问题,但与上述问题并不完全相关.首先十分感谢.

PS嗯,有一个问题与同样的错误有关.我已经按照提到的一些技巧作为同一问题的答案,但无济于事.

("对于这些类型的错误,您可以做的一个巧妙的技巧是将光标放在#include语句的文件名中,然后按Ctrl + Shift + G.它将失败并显示一个消息框,显示包含路径的内容.解决方案是通过右键单击项目并转到"属性">"C/C++">"常规"并设置"其他包含目录",简单地向SDK添加其他包含路径.")

显示的另一个建议也不起作用:("确保include目录不是FL目录,而是其父目录.原因是当你说#include"FL/Fl.h"时,你问的是编译器进入一个名为FL的文件夹,找到Fl.h,它将驻留在FL的父目录中.如果你指定FL作为include目录,那么你只需要说#include"Fl.h"").

c++ fltk visual-studio-2013

6
推荐指数
1
解决办法
7609
查看次数

实现进度条类

我正在使用" 使用C++编程原理和实践 "一书学习c ++.第16章介绍了通过接口库使用FLTK库的gui部分的技术.

本章中的练习之一是动画图像的动画,由一个类中实现的启动和停止按钮控制.对于计时我发现使用FLTK Fl::add_timeout并且Fl::repeat_timeout是一个比进入无限循环更好的解决方案并使用Sleep(),阻止其他回调.

我没有成功使用Fl::add_timeout和实现工作解决方案Fl::repeat_timeout,但是在这里使用带有开始和停止按钮的进度条找到了一个示例:

#include <FL/Fl.H> 
#include <FL/Fl_Double_Window.H> 
#include <FL/Fl_Progress.H> 
#include <FL/Fl_Button.H> 

Fl_Progress* progBar; 

void runcount(void*) 
{ 
    if (progBar->value() == progBar->maximum()) 
    { 
        Fl::remove_timeout(runcount); 
        progBar->value(0); 
    } 
    else 
    { 
        Fl::repeat_timeout(1, runcount); 
        progBar->value(progBar->value() + 1); 
    } 
} 

void cb_startb(void) 
{ 
    Fl::add_timeout(1, runcount); 
} 

void cb_stopb(void) 
{ 
    Fl::remove_timeout(runcount); 
} 

int main (int argc, char *argv[]) 
{ 
    Fl_Double_Window window(200,70,"ProgressBar Test"); 
    progBar = new Fl_Progress(5, 10, window.w()-10, 20); 
    progBar->box(FL_SHADOW_BOX); 
    progBar->selection_color((Fl_Color)4); 
    progBar->minimum(0); 
    progBar->maximum(10); 

    Fl_Button* …
Run Code Online (Sandbox Code Playgroud)

c++ pointers callback fltk

6
推荐指数
1
解决办法
520
查看次数

FLTK 1.3 链接错误

我将 FLTK 从 1.1 更新到 1.3,然后我无法编译更新前运行良好的代码。

\n\n
...\n    [100%] Building CXX object CMakeFiles/PROSTVIEW.dir/include/nifti/vtkznzlib.cxx.o\n    Linking CXX executable PROSTVIEW\n    /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `fontopen(char const*, int, bool, int)\':\n    fl_font.cxx:(.text+0x298): undefined reference to `FcPatternCreate\'\n    fl_font.cxx:(.text+0x362): undefined reference to `FcPatternAddString\'\n    fl_font.cxx:(.text+0x3e3): undefined reference to `FcPatternAddString\'\n    fl_font.cxx:(.text+0x3f7): undefined reference to `FcPatternAddInteger\'\n    fl_font.cxx:(.text+0x40b): undefined reference to `FcPatternAddInteger\'\n    fl_font.cxx:(.text+0x424): undefined reference to `FcPatternAddDouble\'\n    fl_font.cxx:(.text+0x43c): undefined reference to `FcPatternAddString\'\n    fl_font.cxx:(.text+0x4df): undefined reference to `FcMatrixRotate\'\n    fl_font.cxx:(.text+0x4f7): undefined reference to `FcPatternAddMatrix\'\n    fl_font.cxx:(.text+0x516): undefined reference to `FcPatternAddBool\'\n    fl_font.cxx:(.text+0x52c): undefined reference to `FcPatternAddBool\'\n …
Run Code Online (Sandbox Code Playgroud)

c++ cmake fltk

5
推荐指数
1
解决办法
3932
查看次数

fltk在windows上抱怨gcc

我一直在尝试以fltk几种不同的方式构建Windows,但我总是最终:

configure:错误:C编译器无法创建可执行文件(msys fltk/configure)

要么

检查工作C编译器:C:/MinGW/bin/gcc.exe - 破解(CMake-gui)

我已经试过了fltk 1.3.0,1.3.3而且我甚至使用了三种不同的MinGW发行版,GCC版本:5.1.0; 4.9.23.4.5.但它不会编译.以下是./configure文件生成的一些错误日志:

$ ./configure --prefix = C:/libs/fltk-1.3.3

-----------

核心测试.

-----------

configure:1336:检查构建系统类型configure:1354:result:i686-pc-mingw32 configure:1362:检查主机系统类型configure:1376:result:i686-pc-mingw32 configure:1439:检查gcc configure:1455:found/c/mingw32/bin/gcc configure:1465:结果:gcc configure:1709:检查C编译器版本configure:1712:gcc --version&5 gcc.exe(i686-win32-dwarf-rev2,由MinGW-W64构建项目)4.9.2版权所有(C)2014 Free Software Foundation,Inc.这是免费软件; 查看复制条件的来源.没有保修; 甚至不适用于适销性或特定用途的适用性.

配置:1715:$?= 0 configure:1717:gcc -v&5使用内置规范.COLLECT_GCC = c:\ mingw32\bin\gcc.exe COLLECT_LTO_WRAPPER = c:/ mingw32/bin /../ libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe目标:i686-w64-mingw32配置:../../../src/gcc-4.9.2/configure --host = i686-w64-mingw32 --build = i686-w64-mingw32 --target = i686-w64-mingw32 - prefix =/mingw32 --with-sysroot =/c/mingw492/i686-492-win32-dwarf-rt_v4-rev2/mingw32 --with-gxx-include-dir =/mingw32/i686-w64-mingw32/include/c ++ --enable-shared --enable-static --disable-multilib --enable-languages = ada,c,c …

c gcc mingw msys fltk

5
推荐指数
1
解决办法
1007
查看次数

如何以编程方式获取系统偏好设置中设置的 macOS 键盘快捷键?

在 macOS 上,使用英文键盘时,组合键CMD+Backtick用于循环浏览应用程序打开的窗口。例如,在德语键盘上,组合是CMD+<. 甚至可以使用System Preferences-> Keyboard-> Shortcuts-> Keyboard->配置此快捷方式Move focus to next window

\n\n

对于使用 FLTK 的多窗口 GUI 应用程序,我想利用此快捷方式,但不知道如何获取用户在其系统上设置的组合。所以我正在寻找一个 macOS 系统调用,它可以为我提供Move focus to next window在这台 Mac 上使用的组合键。

\n\n

当然,如果有一种使用 FLTK 的内置方式,我会更喜欢这种方式,而不是使用本机系统调用。

\n\n

谷歌搜索这个问题是一场噩梦......

\n\n

2017年8月10日更新\n\xc3\x96\xc3\xb6\的答案给了我一些额外研究的想法。从那以后我了解到首选项存储在 中com.apple.symbolichotkeys,更准确地说是存储在键 27 中。

\n\n
        27 =         {\n        enabled = 1;\n        value =             {\n            parameters =                 (\n                98,\n                11,\n                524288\n            );\n            type = standard;\n        };\n    };\n
Run Code Online (Sandbox Code Playgroud)\n\n

参数 1 …

c++ keyboard macos fltk

5
推荐指数
1
解决办法
780
查看次数