[Anfängerfrage] WhileSchleife mit Enter unterbrechen



  • Hallo,

    ich hab eine Frage (bin noch Anfänger): Wie kann man während die WhileSchleife läuft die Enter-Taste ständig abfragen und wenn Sie gedrückt wird die Schleife Unterbrechen?
    Dachte mir, dass es so geht ...

    ...
    while(1)
    {
    ...
    if(UserPressEnter) // ??
    {
    break;
    ...
    }
    

    Aber was muss ich bei der If-Abfrage eingeben anstatt "UserPressEnter"?
    Oder lässt sich das gar nicht mit If lösen?
    Vllt. könnte man es ja in die While Bedingung setzen...

    ...
    while(WaitForPressEnter) // Wenn es so geht, was kommt in die Klammer?
    {
    ...
    }
    

    Kann mir jemand sagen, wie das gemacht wird?

    mfg
    tecno



  • Ich denke, dass das mit Mitteln des Standards (ANSI-C) nicht geht. Dafür benötigt man die WinAPI:

    #include <windows.h>
    
    int main(void)
    {
    	while( ! ( ( GetForegroundWindow( ) == GetConsoleWindow( ) ) && GetAsyncKeyState( VK_RETURN ) ) );
    	return 0;
    }
    


  • danke erstmal.
    Aber:

    63: while( ! ( ( GetForegroundWindow( ) == GetConsoleWindow( ) ) && GetAsyncKeyState( VK_RETURN ) ) )
    {
    ...
    }
    

    da kommen jetz fehler aus meinem compiler (windows.h ist includiert);

    63: Error: ´GetConsoleWindow´ was not declared in this scope
    63: Error: expected primary-expression before ´)´ token

    was stimmt da jetz nit?

    mfg
    tecno



  • ^^ deine entwicklungsumgebung ist vielleicht zu alt. 'GetConsoleWindow' gibts erst seit win2000
    🙂



  • hmmm ich benutz mingw ... vers. 5.1.6
    geht des mit dem nicht?
    und ich hab xp prof



  • Seltsam, in den letzten Wochen poste ich alle drei Tage diesen Link:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39320.html

    Dafür benötigt man die WinAPI:

    Wollt ihr mich eigentlich mit diesen ewigen Windows-Lobreden vertreiben? Wäre Win 7 besser als Vista, wenn sich keiner über Vista beschwert hätte?



  • RealC++ schrieb:

    Ich denke, dass das mit Mitteln des Standards (ANSI-C) nicht geht. Dafür benötigt man die WinAPI:

    #include <windows.h>
    
    int main(void)
    {
    	while( ! ( ( GetForegroundWindow( ) == GetConsoleWindow( ) ) && GetAsyncKeyState( VK_RETURN ) ) );
    	return 0;
    }
    

    Es gibt sowas wie einen 'Quasi Standard' dazu gehören gewisse Funktionen, die unter diversen Betriebssystemen laufen. Hier mal zum Testen:

    #include <conio.h>
    #include <stdio.h>
    
    int main()
    {
    	unsigned n = 0;
    	puts ("Hit any key to enter the loop, hit enter to quit the loop.");
    	_getch();
    
    	while (1)
    	{
    		while( !_kbhit() )
    		{
    			printf ("%d\r", n++ );
    		}
    		if ( 13 == _getch() )
    		{
    			puts("\nEnter key pressed, looping stopped.");
    			break;
    		}
    	}
    	return 0;   
    }
    


  • µngbd schrieb:

    Seltsam, in den letzten Wochen poste ich alle drei Tage diesen Link:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39320.html

    Dafür benötigt man die WinAPI:

    Wollt ihr mich eigentlich mit diesen ewigen Windows-Lobreden vertreiben? Wäre Win 7 besser als Vista, wenn sich keiner über Vista beschwert hätte?

    Gehen die Funktionen aus conio nicht ebenfalls nur auf Windows????



  • Gehen die Funktionen aus conio nicht ebenfalls nur auf Windows????

    Nein. Und dein GetConsoleWindow() -- ob das auf einem Windows-Server ohne GUI verfügbar sein wird, schlage ich lieber gar nicht nach.



  • µngbd schrieb:

    Gehen die Funktionen aus conio nicht ebenfalls nur auf Windows????

    Nein. Und dein GetConsoleWindow() -- ob das auf einem Windows-Server ohne GUI verfügbar sein wird, schlage ich lieber gar nicht nach.

    Nachschlagen?-Soll das ein Witz sein, oder wie? Gibt es bei dir Fenster ohne GUI?

    Ausserdem nehme ich es dir absolut übel, dass du mir den Windows-Fanatiker anhängen willst. Ich interessiere mich nämlich genau überhaupt nicht für "Welches OS?", "Welche Sprache?", "Welche Bibliotheke?" und Konsorten. Ich benutze (als Hobby-Programmierer) einfach genau das, was mir halt als erstes einfällt und vor allem was einfach ist.



  • µngbd schrieb:

    ...GetConsoleWindow() -- ob das auf einem Windows-Server ohne GUI verfügbar sein wird...

    windosen haben alle 'ne GUI, auch die server-versionen.
    🙂



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ;fricky schrieb:

    windosen haben alle 'ne GUI, auch die server-versionen.

    Ich hatte irgendwo gelesen, daß man das bei 2008 auch weglassen kann. Scheinbar hast du aber doch irgendwie recht:
    http://www.symlink.ch/kolumnen/07/07/11/2211203.shtml
    Aber vielleicht die nächste Version...


Anmelden zum Antworten