我现在通过手动包含所有必需的路径(gtk捆绑包D:/Tools/gtk+-bundle_2.20.0-20100406_win32)来以非常丑陋的方式进行:
include_directories(D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/gtk-2.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/glib-2.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib/glib-2.0/include D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/cairo D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/pango-1.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib/gtk-2.0/include D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/atk-1.0)
link_directories(D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib)
target_link_libraries(MyProgram gtk-win32-2.0.lib)
Murrine引擎硬编码了我需要在我自己的代码中复制的一些行为,因此我需要找出是否正在使用Murrine引擎或其他一些.我怎样才能做到这一点?哪些配置文件存储此信息,是否有我可以调用的API?
我编写了一个小测试应用程序,它生成一个 GUI,如下所示:

我对 gtk 编程非常陌生。在这个小 GUI 中,有一个树视图,当我尝试扩展它时,它跨越了可视窗口大小。我只想向这个窗口添加一个滚动条(垂直),它显示treeview 并且我想在滚动条向上或向下移动(逐步)时捕获该滚动条的事件。任何人都可以帮助我如何将此功能添加到我当前的小 GUI 中。不幸的是,我没有在网上找到任何关于这个的好材料,这促使我提出这个问题。
我想这对于真正的 gtk 程序员来说应该是一件容易的事。
下面是相同的代码:
#include <gtk/gtk.h>
enum
{
  COLUMN = 0,
  NUM_COLS
} ;
void  on_changed(GtkWidget *widget, gpointer statusbar)
{
  GtkTreeIter iter;
  GtkTreeModel *model;
  char *value;
  if (gtk_tree_selection_get_selected(
      GTK_TREE_SELECTION(widget), &model, &iter)) {
    gtk_tree_model_get(model, &iter, COLUMN, &value,  -1);
    gtk_statusbar_push(GTK_STATUSBAR(statusbar), gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), value), value);
    g_free(value);
  }
}
static GtkTreeModel *
create_and_fill_model (void)
{
  GtkTreeStore *treestore;
  GtkTreeIter toplevel, child;
  treestore = gtk_tree_store_new(NUM_COLS,
                  G_TYPE_STRING);
  gtk_tree_store_append(treestore, &toplevel, NULL);
  gtk_tree_store_set(treestore, &toplevel, COLUMN, "Scripting languages", -1);
  gtk_tree_store_append(treestore, &child, …我需要使用gtk和C打开用户系统的默认文件管理器(不是对话框,而是系统使用的文件管理器).
这意味着,当用户选择目录时,文件管理器将打开而不是对话框.有没有办法实现这个目标?