Gå til innhold

Åpne en exe fil ved å trykke på knapp


Anbefalte innlegg

Jeg skal åpne en exe fil ved hjelp av en knapp. Her er koden så langt. ( Jeg bruker FLTK )

 

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <cstdlib>


void exit(Fl_Widget *x, void *y) {
    exit(0);
    }

void startCS(Fl_Widget *x, void *y) {
    system("C:\div.prog\CS\cstrike.exe");
    }
    
int
main (int argc, char *argv[])
{
   Fl_Window* window;
   Fl_Button* button;
   Fl_Button* buttonStart;
   
   window = new Fl_Window(600, 400);
   
   button = new Fl_Button(260, 320, 80, 80, "EXIT");
   buttonStart = new Fl_Button(260, 0, 50, 50, "CS");
   
   button->labelsize(20);
   button->labelfont(FL_ITALIC);
   
   buttonStart->labelsize(20);
   buttonStart->labelfont(FL_ITALIC);
   
   button->callback(exit, NULL);
   buttonStart->callback(startCS, NULL);
   
   window-> end();
   window-> show(argc, argv);
   
   return Fl::run();
} 

 

Her eg også en knapp som avslutter programmet. Men skjønner ikke helt hvorfor jeg ikke får åpnet den exe fila med "CS" knappen.

 

takker for all hjelp.

Endret av Kjeksen
Lenke til kommentar
Videoannonse
Annonse

Noen som vet hvordan man lukker et spesifisert vindu i en annen funksjon i FLTK?

for eks. visst man trykker på help, så kommer det opp vindu, og i help vinduet er det for eks. en ok knapp, dersom man trykker på den forsvinner help vinduet only. Det går ikke an og bruke exit(0) for da avslutter man jo hele programmet. Bruker fortsatt FLTK.

Lenke til kommentar
Jeg synes dokumentasjonen er bra jeg.

Fl_Window *window=new Fl_Window(x,y);
...
...
//Når du vil gjemme vinduet:
window->hide();

Ja, men her er et eksempel. Jeg har laget en meny, der jeg har blant annet disse tingene: File og help. Visst jeg trykker "help" skal det poppe opp et vindu. I dette vinduet er det også en "Ok" knapp, så jeg må bruke button->callback(funksjon);

( eller er det andre måter og gjøre dette på? ) når jeg har trykt på "ok" knappen skal help vinduet forsvinne. Visst jeg skal gjøre det med callback så hopper den til en funksjon, men da har ikke denne funksjonen tilgang til å gjøre noe med help vinduet.

Endret av Kjeksen
Lenke til kommentar
Da bruker du Fl_Widget-pekeren som blir sendt med callback-funksjonen.

 

Evt. kan du spare deg vinduet og bruke fl_message-funksjonen i stedet.

Hm? kan du gi meg et eksempel? startet med FLTK for et par dager siden.

Skal teste Fl_Message nå :)

Lenke til kommentar

Det ble litt vagt må jeg inrømme. Slik jeg forstår det blir det sendt med en Fl_Widget-peker med callback-en. Denne peker til widgeten som utførte kallet. En Fl_Widget har også en parent-funksjon som returnerer en peker til gruppen widgeten hører til under (ofte et vindu).

 

EDIT: La inn litt sikring så ingen brenner seg på copy/paste.

void xyz_callback(Fl_Widget *w, void *data) {
   Fl_Group *parent=w->parent();
   if(parent->type()==FL_WINDOW)
       ((Fl_Window*)parent)->hide();
}

Noe slikt burde vel fungere, om jeg har forstått det rett. Ellers er det vel mulig å sende Fl_Window-pekeren med som void *data.

 

Jeg anbefaler deg likevel å titte på fl_message() for en lettvint måte å gi en beskjed med ok-knapp.

Endret av drall
Lenke til kommentar

const char *Fl_Input::value() const

int Fl_Input::value(const char*)

int Fl_Input::value(const char*, int)

 

The first form returns the current value, which is a pointer to the internal buffer and is valid only until the next event is handled.

 

The second two forms change the text and set the mark and the point to the end of it. The string is copied to the internal buffer. Passing NULL is the same as "". This returns non-zero if the new value is different than the current one. You can use the second version to directly set the length if you know it already or want to put nul's in the text.

 

 

...jeg tror du må øve deg litt på å lese dokumentasjon :)

Lenke til kommentar
const char *Fl_Input::value() const

int Fl_Input::value(const char*)

int Fl_Input::value(const char*, int)

 

The first form returns the current value, which is a pointer to the internal buffer and is valid only until the next event is handled.

 

The second two forms change the text and set the mark and the point to the end of it. The string is copied to the internal buffer. Passing NULL is the same as "". This returns non-zero if the new value is different than the current one. You can use the second version to directly set the length if you know it already or want to put nul's in the text.

 

 

...jeg tror du må øve deg litt på å lese dokumentasjon :)

Ja seff, men det jeg missliker sterkt er at det ikke er eksempler på ting og tang. Skal jo liksom lære det og da er det så koselig med eksempler som viser hvordan det faktisk fungerer. Og jeg er LAAANGT ifra stø på FLTK siden jeg startet med det for fullt for et par dager siden :ermm:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...