首页
学习
活动
专区
圈层
工具
发布

GTK :问题
EN

Stack Overflow用户
提问于 2015-10-21 09:46:37
回答 1查看 138关注 0票数 1

出于开发原因,我不得不构建GTK堆栈的调试版本。构建之后,我在Visual中为GTK和更低版本设置了pkg-config,这是我的示例程序。

代码语言:javascript
复制
#include<gtk/gtk.h>
#include<stdio.h>
#include<string.h>

int main(int argv, char* argc)
{
    GtkWidget *window, *label;
    gtk_init(&argv, &argc);
    window = gtk_window_new(GTK_WINDOW_TOP_LEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Window");
    gtk_window_set_size_request(window, 300, 100);
    label = gtk_label_new("Click Me");
    gtk_label_set_selectable(GTK_LABEL(label), TRUE);
    gtk_container_add(GTK_CONTAINER(window), label);
    g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(key_press_event), label);
    gtk_window_show_all(window);
    gtk_main();
}

static gboolean key_press_event(GtkWidget* window, GdkEvent* event, gpointer label)
{
    GtkWidget* newlabel;
    newlabel = GTK_LABEL(label);
    const gchar wtitle[100];
    strncpy(wtitle, gtk_window_get_title(GTK_WINDOW(window)), sizeof(wtitle));
    gtk_window_set_title(GTK_WINDOW(window),gtk_label_get_text(GTK_LABEL(newlabel)));
    gtk_label_set_text(GTK_LABEL(newlabel), wtitle);
    return false;
}

下面是我在Properties中包含的pkg-config --cflags gtk-3-vs12 --msvc-syntax,-> C/C++ ->命令行->附加选项:

代码语言:javascript
复制
/Ic:/gtk_compilation/vs12/win32/include /Ic:/gtk_compilation/vs12/win32/include/gtk /Ic:/gtk_compilation/vs12/win32/include/gdk /Ic:/gtk_compilation/vs12/win32/include/pango /Ic:/gtk_compilation/vs12/win32/include/atk /Ic:/gtk_compilation/vs12/win32/include/cairo  /Ic:/gtk_compilation/vs12/win32/include/fontconfig /Ic:/gtk_compilation/vs12/win32/include/gdk-pixbuf /Ic:/gtk_compilation/vs12/win32/include/glib 

下面是我在“项目属性”( Properties )、“链接器”( pkg-config --libs gtk-3-vs12 --msvc-syntax )、“命令行”( -> )、“命令行”( -> )上包含的其他选项:

代码语言:javascript
复制
/libpath:c:/gtk_compilation/vs12/win32/lib gtk-3-vs12.lib gdk3-win32.lib gdi32.lib imm32.lib shell32.lib ole32.lib -Wl,-luuid pangocairo.lib pangowin32.lib pango-1-vs12.lib m.lib atk-1-vs12.lib cairo-gobject.lib cairo-vs10.lib gdk_pixbuf-2-vs12.lib gio-2-vs12.lib gobject-2-vs12.lib glib-2-vs12.lib intl.lib 

不过,我还是会犯以下错误:

代码语言:javascript
复制
Error   9   error C2065: 'false' : undeclared identifier    c:\users\sajith\documents\visual studio 2013\projects\consoleapplication8\consoleapplication8\testapp.c 28  1   ConsoleApplication8
Error   3   error C2065: 'GTK_WINDOW_TOP_LEVEL' : undeclared identifier c:\users\sajith\documents\visual studio 2013\projects\consoleapplication8\consoleapplication8\testapp.c 9   1   ConsoleApplication8
Error   5   error C2065: 'key_press_event' : undeclared identifier  c:\users\sajith\documents\visual studio 2013\projects\consoleapplication8\consoleapplication8\testapp.c 15  1   ConsoleApplication8

有人能指点我理清这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-26 15:37:14

首先,常量名不是GTK_WINDOW_TOP_LEVEL,而是GTK_WINDOW_TOPLEVEL

其次,需要声明key_press_event(),然后才能在main()中引用它。您有两个选项:要么将函数本身移动到main()之前,要么添加行

代码语言:javascript
复制
static gboolean key_press_event(GtkWidget* window, GdkEvent* event, gpointer label);

main()之前。

第三,您希望key_press_event()返回FALSE,而不是false

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33255976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档