Witam chciałbym się dowiedzieć czy istnieje jakaś funkcją która by zresetowała główne okno aplikacji w GTK+ coś na przykład jak gtk_main_quit tylko nie zamykająca aplikacje a restartująca, lub każdym innym sposobem?
1
1
Możesz zrobić:
system("twoja_aplikacja &") ;
gtk_main_quit();
Ale lepszym sposobem jest uruchamianie twojej aplikacji pośrednio, przez jakiś manager. To znaczy, że jeśli chcesz restartować aplikację, to nie zwracasz 0 na końcu programu, tylko na przykład 1. Musisz pamiętać, że to co zwrócisz jest przesunięte o 8 (albo 7, nie pamiętam) bitów w lewo. Przykład
//manager.cpp
#include <cstdio>
#include <cstdlib>
int main(int argc, char**argv)
{
int a;
bool restart=true ;
while(restart)
{
//czynności przed uruchomieniem twojego programu
a = system("twoja_aplikacja") ; //uruchomienie i przypisanie zwróconej wartości do a
a>>=8 ; //przesunięcie o 8 bitów w prawo(nie pamiętam teraz czy 8 czy 7)
switch(a)
{
0 : //0 - koniec pracy
{
restart = false ;
break ;
}
1: //twój umówiony restart
{
break ;
}
default: //inna wartość, prawdopodobnie segmentation fault
{
//czynności po błędzie
}
}
}
//czynności po wyłączeniu twojego programu
return 0;
}
0
a w poleceniu system("twoja_aplikacja &") ; pod twoja_aplikacja mam wpisać nazwe pliku? bo zrobiłem tak: system("program.c &") ; i działa uruchamia się aplikacja na nowo ale stare okienko się nie zamyka i mam wyświetlone oby dwa. Da się jakoś zamknąć to pierwsze bo gtk_main_quit(); tak jakby nie chciał działac
Cała funkcja działa podobnie otwiera na nowo okno aplikacji ale nie zamyka starego okna i mam 2