Gå til innhold

Vidare programmering i C++ (Stikkord: GUI)


Anbefalte innlegg

Skrevet

Hallo

 

Eg har no kome så langt i C++ at eg kan lage grunleggjande DOS-programmer. Det vil seie slike som:

Velkommen til ditt & datt

 

Trykk 1 for ditt

Trykk 2 for datt

Men eg vil vidare. Eg vil liksom ha betre brukargrensesnitt i programma mine. Eg vil ha inn musa!!

 

Men først. Eg har jo ikkje i det heile tatt kontroll på informasjonen som eg sender ut. Det vil seie. Korleis kan eg lage eit script som viser eit klokkeslett. Kvart sekund skal klokka oppdatere seg. Her er det einaste eg kan gjere slik:

Klokka er 16:46:03

Klokka er 16:46:04

Klokka er 16:46:05

Klokka er 16:46:06

Klokka er 16:46:07

Klokka er 16:46:08

Klokka er 16:46:09

Men eg vil oppdatere klokka, ikkje skrive ut ei ny.

 

Etterpå lurar eg på ein god del til angåande dette som eg vil poste i denne tråden (slik at det bare blir ein tråd å oversjå for de som hater nybegynnarspørsmål), men eg trur eg tek bete for bete...

Videoannonse
Annonse
Skrevet

Antar det er windows du snakker om..

For å oppdatere klokka må du flytte caret tilbake til starten av linja før du skriver ut på nytt. Da kan du bruke funksjonen SetConsoleCursorPosition (søk på msdn for mer info).

 

For å lage GUIer, prøv å google etter Windows Api Tutorial eller noe lignende.

Skrevet

Eg har eigentleg ikkje tenkt så mykje på skikkeleg nymotens windowsprogrammering. Er liksom ikkje klar for det... :p Eg vil heller begynne med programmer liknande dei gode gamle dos-programma til Win 3.11 (og eldre) som qbasic, edit, osv. Dei er jo bare bygde opp av ASCII-alfabetet...

 

Skal sjå på den...

Skrevet (endret)

Eg er redd at eg ikkje forstod så mykje av den... Diverre. Det er vel ikkje nokon som kan gi eit eksempel på korleis dei kan printe "Hallo!" og eit sekund etter bytte det ut med "Hadet!"? Ikkje meir avangsert, då forstår eg det bare ikkje...

 

Og ein ting til. Korleis kan me tvinge programmet til å køyre i full skjerm?

Endret av knuto
Skrevet (endret)

De er vel snart leie alle spørsmåla mine, men eg vil slenge inn endå eit:

 

Korleis kan ein lage farge på tekst? Går det ann med cout?

 

Fant ut at det kan gjerast med system("COLOR ##"); Dette er vel den beste måten òg?

Endret av knuto
Skrevet

Nei, system er ikke en bra funksjon å bruke, bruk heller SetConsoleTextAttribute, sjekk i MSDN hvordan denne brukes.

 

COLOR velger vel fargen på hele vinduet også, denne endrer bare det som blir skrevet etter at funksjonen blir kaklt.

Skrevet

Som sagt forstår eg ikkje mykje av alt dette rotet... Eg vil bare skrive litt tekst, og er ikkje interresert i å kode ørten hundre linjer med tung kode bare for det. Det vil vel køyre seing òg...

 

Gidder nokon å gi eit eksempel, ikkje bare linke til MDSN. Eg har lest meg sjuk på MDSN, men forstår fortsatt ganske lite...

 

PS: Dersom eg maser: Ikkje klag, men oversjå denne tråden.

Skrevet (endret)

Du må lære deg å lese dokumentasjonen, men her har du et lite eksempel:

#include <iostream>
#include <windows.h>

int main()
{
   HANDLE out = (HANDLE) GetStdHandle(STD_OUTPUT_HANDLE);
   CONSOLE_SCREEN_BUFFER_INFO oldInfo;

   while(1)
   {
       // retrieve handle to standard output device
       if(INVALID_HANDLE_VALUE == out)
       {
           std::err << "error: failed to retrieve handle for the standard output device" << std::endl;
           break;
       }

       // store current state of standard output device
       if(!GetConsoleScreenBufferInfo(out, &oldInfo))
       {
           std::cerr << "error: failed to retrieve information about standard output device" << std::endl;
           break;
       }

       // set foreground color to red & print text
       SetConsoleTextAttribute(out, FOREGROUND_RED | FOREGROUND_INTENSITY);
       std::cout << "I'm red" << std::endl;

       // wait for one second
       Sleep(1000);

       // move cursor back to start position
       SetConsoleCursorPosition(out, oldInfo.dwCursorPosition);

       // set foreground color to blue & print text
       SetConsoleTextAttribute(out, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
       std::cout << "I'm blue" << std::endl;

       // restore foreground color
       SetConsoleTextAttribute(out, oldInfo.wAttributes);

       break;
   }
}

 

Sjekk ut følgende tråd for info om konsoll i fullskjerm: http://forum.hardware.no/index.php?showtopic=324763

Endret av kjetil7
Skrevet

Tusen takk. Etter å ha lese nøye og tenkt(!) gjennom ein kode eg fant på MDSN fant eg ut korleis eg kunne benytte mange av consol-funksjonane. Ganske tungvindt må eig seie, men det fungerar fett, og det er jo det viktigaste...

 

Fant òg ut korleis eg kunne endre vindaugestørrelsen til fullscreen.

 

Neste: Kva må eg søke etter (!) for å få til ein tekst som er klikkbar. Liksom slik at "Trykk her". Når personen trykkar skal det f.eks. printast "hei" eller gjerast noko som å printe ut ein heil ny meny. Med andre ord: Korleis lage ein trykkbar knapp som ein kan bruke musa (!) til å trykkje på.

Skrevet

Hallo igjen! Eg trur eg vil slutte med dette maset om ditt og datt. Har begynt å lese bok. Var med andre ord litt for vanskeleg å lage eit skikkeleg program før eg visste kva ein vector er... :$

Skrevet

Thinking in C++, 2nd ed. Volume 1 by Bruce Eckel

 

Grunnen til at valget havna på den boka er at ho ligg gratis ute på nett til nedlasting (lovleg).

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...