Archief - [PROG][C] Venster sluiten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

White Label

Legacy Member
Hoi,

ik heb een programma voor school in c geschreven en nu heb ik een optie in een lijst gezet waarmee men het programma zou moeten kunnen sluiten. Nu is mijn vraag: hoe sluit ik een programma af zonder dat de gebruiker zelf op X moet klikken?

Btw: Ik heb de search gebruikt op het forum, heb iets gevonden van Winapi ofzo maar ik ben een newbie in C en snap er dus niks van... Google en C is blijkbaar ook niet de beste combinatie... :help:

Alvast bedankt!

Tyfius

Legacy Member
Hangt ervan af of je gebruik maakt van een grafische omgeving, of via het DOS console scherm werkt. In DOS volstaat normaal een exit(1); ofzo dacht ik.

fretn

Legacy Member
zorg dat je uit uw main loop geraakt

vb:

while (running)
{
...
...
}

en als je wil quitten zet die running op false

White Label

Legacy Member
ik heb het geprobeerd met exit(0); maar dat werkt niet. Return 0; sluit het venster ook niet... Dit is mijn code, wat doe ik verkeerd bij case 3?

#include <stdio.h>

void account(void);

int main(void)
{
printf("Welkom bij de multiple choice quiz!\n\n\n");
account();

return 0;
}

/* De functie menu, men logt in als bestaande gebruiker of maakt een nieuwe account aan */

void account(void)
{
int keuze, sw=0;
printf("Menu\n----\n");
printf("1 Log in\n2 Registreer\n3 Exit\n\n");
printf("Typ het nummer van uw keuze in: ");
scanf("%d", &keuze);

while(sw==0)
switch(keuze)
{
case 1:
inloggen(); sw=1; break;
case 2:
registreer(); sw=1; break;
case 3:
exit(0); sw=1; break;
default:
printf("Dit is geen geldige optie!");break;
}
}

Alvast bedankt!

killgore

Legacy Member
het venster echt sluiten in ansi c gaat niet :p, die voorstaande dingen beëindigen enkel het programma.
Daarvoor moet je een GUI-API hebben

White Label

Legacy Member
Ok bedankt! Nu heb ik nog een vraagje: hoe verander ik mijn tekstkleur in C?
Ik vond dit al op een forum:

Hi,I wanted to change the color of my text. i was able to do this in Borland using the textcolor() function in the conio.h header.

1. #include<conio.h>

2. textcolor(12); //this is red.

3. use cprintf(...) instead of printf(...)

Maar het wil niet werken bij mij, iemand enig idee?

Tnx!

EDIT: in de help van borland 4.52 stond hetvolgende:
#include<conio.h>
void textcolor(int newcolor);
Note: Do not use this function in Win32s or Win32 GUI applications.

Ik programmeer met het type EasyWin. Komt het er op neer dat ik die functie niet kan gebruiken?

Vich

Legacy Member
killgore zei:
het venster echt sluiten in ansi c gaat niet :p, die voorstaande dingen beëindigen enkel het programma.
Daarvoor moet je een GUI-API hebben

Even ter info, als aanvulling:
Console programma's worden altijd vanaf een console gestart en daarna keren ze terug naar die console. Ze kunnen gebruik maken van de console(voor in- en uitvoer), maar hebben nooit controle over de console zelf. In DOS was dit ook niet mogelijk, omdat je de DOS console niet kan afsluiten. De windows console is backwards-compatible en deze kan je nog steeds niet afsluiten.

Vich

Legacy Member
... maar vanuit Windows kan je in de console wel het exit command typen om deze af te sluiten. Probeer dit eens in je C app?

Code:
#include <cstdlib>
...
system("exit");
...

White Label

Legacy Member
Dan krijg ik de foutmelding: Unable to open include file CSTDLIB.

Vich

Legacy Member
White Label zei:
Dan krijg ik de foutmelding: Unable to open include file CSTDLIB.
Dat is teken dat je nog met deprecated headers moet werken, doe dan maar:
#include <stdlib.h>

White Label

Legacy Member
Vich zei:
Dat is teken dat je nog met deprecated headers moet werken, doe dan maar:
#include <stdlib.h>
Dan krijg ik Undefined Symbol _system in module test.h :sad:

Vich

Legacy Member
White Label zei:
Dan krijg ik Undefined Symbol _system in module test.h :sad:
Probeer eens eerst:
#include <stdio.h>
en dán pas:
#include <stdlib.h>
?
*gokje*

killgore

Legacy Member
wa vo nen kutcompiler is da :wtf:, deprecated headers en die fout (nja, kheb nooit borland gemogen).

en gebruik eens
using namespace std;

zou normaal enkel moeten werken bij new-style headers, maar ge weet nooit he.

White Label

Legacy Member
De code is nog helemaal niet af, tis maar dak al kan zien wat er werkt zoals de tekstkleur enzo he... Ik heb voor de tekstkleur de werking met conio.h terug geplaatst (werkt niet)... En voor sluiten heb ik dan maar de functie sluiten voorzien, daar zal ik dan maar een printf inzetten van wat tekst...

Code:
#include <stdio.h>
#include <conio.h>

void account(void);
void inloggen(void);
void registreer(void);
void sluiten(void);

int main(void)
{
  printf("Welkom bij de multiple choice quiz!\n\n\n");
  account();

  return 0;
}

/* men logt in als bestaande gebruiker of maakt een nieuwe account aan */

void account(void)
{
  int keuze, sw=0;
  textcolor(10);
  printf("Menu\n----\n");
  printf("1 Log in\n2 Registreer\n3 Exit\n\n");
  printf("Typ het nummer van uw keuze in: ");
  scanf("%d", &keuze);

  while(sw==0)
	 switch(keuze)
	 {
		case 1:
		  inloggen(); sw=1; break;
		case 2:
		  registreer(); sw=1; break;
		case 3:
		  sluiten(); sw=1; break;
		default:
		  printf("Dit is geen geldige optie!");break;
	 }
}

void inloggen(void)
{
  char gebruiker[20];
  printf("Loginmenu\n---------\n");
  printf("Geef uw gebruikersnaam in: ");
  scanf("%20[^\n[]", &gebruiker);
  scanf("%[^\n]%c");
  printf("Geef uw paswoord in: ");
  scanf("%[^\n]%c");

}

void sluiten(void)
{
}

void registreer(void)
{
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan