2016-04-13 38 views
-1

İşte benim kodudur. Ve bu kod çalışır. Ben gibi benim programı başlatırsanız:gtk 3 yeni uygulama kullanımı eski komut satırı argümanları

./myapp here_some_string 

argv [1] bir problem olmadan benim pencere Widget'a gönderir.

Ancak, geçerli pencereyi kapatmazsam ve başka bir komut satırı argümanı ile tekrar (başka bir kopyasını) çalıştırırsam, biraz garip gelir. argv [1] doğru değeri içermiyor, eski değeri içeriyor. Niye ya?

Örnek: Bütün kodum

./myapp string_1 & //app gets string_1 
./myapp string_2 //app gets string_1 again! 
+0

Bu sorunu yeniden oluşturamadım. – sjsam

+0

Neyi yanlış yaptığımı açıklamam gibi görünüyor. Gtk_application_new() 'işlevinin ilk dize argümanını değiştirmeliydim. Kodumu değiştiririm. Rastgele bir string alıyorum ve 'gtk_application_new()' nin ilk argümanı olarak yazdım. – Daniel

cevap

-1

yoktur. Uygulamayı konsolda çalıştırdığımda, dizeyi iki kez basar. Geçerli pencereyi kapatmaz ve başka bir uygulamayı çalıştırmazsam, ikinci uygulama sadece bir dizgi basar. Ve ilk uygulama baskı dizgisi bir kez daha. Bu ne? Bir böcek?

#include "MyMain.h" 


void showWindow2(GtkApplication *app, gpointer gp_data) 
{ 
    printf("%s\n", (char*) gp_data); 
    GtkWidget *window; 
    window = gtk_application_window_new(app); 
    gtk_widget_show_all(window); 
} 


void main(int argc, char **argv) 
{ 
    printf("%s\n", argv[1]); 

    //Создаем окно 
    GtkApplication *app; 
    app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE); 
    g_signal_connect(app, "activate", G_CALLBACK(showWindow2), argv[1]); 
    g_application_run(G_APPLICATION(app), 0, NULL); 
    g_object_unref(app); 
} 
+0

StackOverflow'a Hoş Geldiniz! Sorunuzu daha fazla bilgi içerecek şekilde güncellerken, yanıt gönderilerinin yalnızca yanıtlar için olması gerektiği için lütfen orijinal yayınınızın altındaki Düzenle bağlantısını kullanın. – Chirality