cocos2dx v3 添加 Linux 下的 EditBox

1. 调用其他输入框程序实现

调用 zenity 实现,使用 popen 系统调用,参考:tinyfiledialogs 的实现。

zenity 的文本输入框介绍在这里

实现已经放到评论区:hanxi/blog#7 (comment)

2. 最后采用了 GTK+ 的 dialog 实现

这种实现更像 windows 下的 dialog。而且查了 glfwFAQ,建议使用 GTK+ 实现 messge box。

需要安装 gtk 库:sudo apt-get install libgtk-3-dev

主要代码是参考这里的。还添加了下面两点:

gtk_window_set_keep_above(GTK_WINDOW(dialog), true);
// desoty dialog when lost focus
static void dialogFocusOutCallback(GtkWidget* widget, gpointer user_data)
{
    gtk_widget_destroy(widget);
}

...
g_signal_connect(dialog, "focus-out-event", G_CALLBACK(dialogFocusOutCallback), NULL);

我也是试过去找到 dialog 的父窗口,然后设置模态等等,使 dialog 为子窗口。可是没能成功的实现。现在我的这种实现也能满足基本的需求,代码在这里:cocos2d/cocos2d-x#12220

点击进入评论 ...