以下の例に示すように、このコールバック関数は、ユーザーが [OK] ボタンをクリックしたときのものです。gtk_widget_get_toplevel を使用してボタンからウィンドウ (最上位のウィジェット) を取得できますが、ENTRY という名前の GtkEntry ウィジェットのウィジェット ポインターを取得しようとして行き詰まりました。
/* Called when OK button is clicked */
on_BT_OK_clicked(GtkButton *button, gpointer user_data)
{
//The line directly below is the one I get an error on
GtkWidget *entry = lookup_widget( GTK_WIDGET(button), "ENTRY" );
gchar *text1, *text2;
text1 = gtk_entry_get_text( GTK_ENTRY(entry));
text2 = g_strconcat("Hello, ", text1, NULL);
GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET(button));
GtkWidget *dialog = gtk_message_dialog_new( window,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE,
text2);
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
}
しかし、「lookup_widget への未定義の参照」というエラーが表示されます。lookup_widget を使用したコードのスニペットのサンプルは 10 億個も見つかりますが、それを使用できるようにするヘッダーを示す完全なソース コードのサンプルは 1 つもありません。Anjuta3.2.0 と最新の Glade プラグインを使用しています。