• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Visual C++ und system beeps

Mitglied seit
10.08.2000
Beiträge
12.908
Reaktionen
1
Ich muss mich hier leider gerade mit Visual C++ code rumschlagen.

Ein einfaches Testprogramm produziert erfolgreich einen system beep:
Code:
int main()
{
    printf("\a");
}

Im etwas komplexeren Visual C++ Programm allerdings ist kein beep zu hören.
Meine Vermutung war zunächst, dass der stdout von Visual C++ im Rahmen der ganzen Fensterinitialisierungen umgeleitet wird. Allerdings bringt auch ein
Code:
freopen("CON", "w", stdout)
keine Besserung.
Mit
Code:
stdout = CON;
erhalte ich die Meldung, dass CON garnicht definiert ist (ich dachte, das sollte standardmäßig auf die Konsole zeigen, also da wo auch \a den beep verursacht).

Wie kriege ich meinen beep? Kann das wirklich am umgeleiteten stdout liegen? Falls nein: Waran sonst? Falls ja: Wie leite ich den wieder auf die Konsole um?

Habe außer stdafx.h keine relevanten #include
 
Mitglied seit
10.08.2000
Beiträge
12.908
Reaktionen
1
Ok, hab mein Problem halb gelöst.
Ursache war tatsächlich der stdout, welcher garnicht initialisiert war.
Code:
#include "windows.h"
und dann im Init-Dialog
Code:
AllocConsole()
löst das Problem, indem es der Win32-Anwendung eine Konsole zuordnet, auf welcher dann der system beep wie gewünscht ausgegeben werden kann.

Problem: Mit der Anwendung öffnet sich ein lästiges Konsolenfenster. Ich will jedoch nur die Konsolenfunktion des stdout nutzen und garnichts im Konsolenfenster sehen.
Gibt es eine Möglichkeit, das Fenster zu verstecken? Oder evtl. nur stdout zu initialisieren, ohne das Konsolenfenster überhaupt zu öffnen?
In der Funktionsreferenz ist dazu leider nichts erwähnt :(
 
Mitglied seit
10.08.2000
Beiträge
12.908
Reaktionen
1
Der Windows-Beep hat funktioniert, danke! Ich hätte wissen können, dass man bei Windows alles mit plattformspezifischen windows.h Funktionen lösen muss und dass ein allgemeines Konsolen - \a nicht gut funktioniert ...
Ich will zurück zu Linux ;)
 
Oben