方法一:

FLTK已经支持unicode了,所以可以直接通过使用unicode的方式来使用中文字符:

char utf8[10] = {0xE6, 0xB5, 0x8B, 0xE8, 0xAF, 0x95, 0x00}; // 表示“测试”

方法二:

使用FLTK封装好的函数来转换字符到utf8编码字符串,如下:

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

#include <wchar.h>

int main(int argc, char **argv) {
    Fl_Window *window = new Fl_Window(300,180);
    const size_t MAX=256;
    wchar_t wcs[256] = L"我是一个按钮";

    char utf8[MAX] = {0};
    fl_utf8fromwc(utf8, MAX, wcs, wcslen(wcs));
    Fl_Box *box = new Fl_Box(20,40,260,100,utf8);

    box->box(FL_UP_BOX);
    box->labelsize(36);
    box->labelfont(FL_BOLD+FL_ITALIC);
    box->labeltype(FL_SHADOW_LABEL);

    window->end();

    window->show(argc, argv);

    return Fl::run();
}

注意方法二需要添加编译命令:-finput-charset=GBK