gtk_main()を使うとプログラムが終了しない?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
atell

gtk_main()を使うとプログラムが終了しない?

#1

投稿記事 by atell » 4ヶ月前

初めまして。atellと申します。よろしくお願い致します。

Raspberry Pi OS 64bitで、Geanyを使ってコードを書いています。まだ始めたばかりなのでわからない事だらけです。GTKを使っています。ここもよくわかりません。ちなみにこのコードはCopilotに組んでもらいました。

コード:

#include <gtk/gtk.h>
#include <stdio.h>

gint showMessageBox(const char *message, const char *title) {
    GtkWidget *dialog;
    gint response;

    // メッセージダイアログの作成
    dialog = gtk_message_dialog_new(NULL,
                                    GTK_DIALOG_MODAL,
                                    GTK_MESSAGE_INFO,
                                    GTK_BUTTONS_OK,
                                    "%s", message);
    gtk_window_set_title(GTK_WINDOW(dialog), title);

    // ダイアログを表示し、ユーザーの応答を待つ
    response = gtk_dialog_run(GTK_DIALOG(dialog));

    // ダイアログを破棄
    gtk_widget_destroy(dialog);

    return response; // 応答を返す
}

int main(int argc, char *argv[]) {
    // GTK初期化
    gtk_init(&argc, &argv);

    // メッセージボックスを表示し、応答を取得
    gint response = showMessageBox("Hello, Raspberry Pi!", "Message Box");

    // 応答に基づく処理
    if (response == GTK_RESPONSE_OK) {
        printf("OK button was clicked.\n");
    }

    // 追加の処理
    printf("Continuing with the next steps.\n");

    // GTKメインループを開始
    gtk_main();
    // メインループを終了
    //gtk_main_quit();

    return 0;
}
ターミナルのウィンドウが消えず、Ctrl+cで終了しないといけません。プログラムが完全に終了していないのでしょうか?これが入力待ちで止まるというのが正常な終了だと思うのですが、違うのでしょうか?実行ファイルを起動してOKボタンを押すとウィンドウは消えますが、終了せずにタスクマネージャに残ります。
gtk_main();が問題のようなのですが、ここをgtk_main_quit();にすると、ウィンドウは閉じますが。よくわかりません。ご教授ください。どうかよろしくお願い致します。

atell

Re: gtk_main()を使うとプログラムが終了しない?

#2

投稿記事 by atell » 4ヶ月前

書き忘れました。

uname -a
Linux raspberrypi 6.6.62+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.62-1+rpt1 (2024-11-25) aarch64 GNU/Linux

lsb_release -a
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm

atell

追記: gtk_main()を使うとプログラムが終了しない?

#3

投稿記事 by atell » 4ヶ月前

お世話になっております。追記です。

ライブラリ:

コード:

sudo apt install libgtk-3-dev
コマンド:
Compile:

コード:

gcc -Wall -c "%f" $(pkg-config --cflags --libs gtk+-3.0)
Build:

コード:

gcc -Wall -o "%e" "%f" $(pkg-config --cflags --libs gtk+-3.0)
gdbを使う場合、-gオプションをつけるそうですね。なかなか、Windowsでは得られない経験です。Raspberry Pi好きです。

どうかご教授ください。よろしくお願い致します。

返信

“C言語何でも質問掲示板” へ戻る