Timer: Text hochlaufen lassen

gerd87

Erfahrenes Mitglied
Hallo,

ich bekomme es nicht hin, einen Timer zu bauen.

Habe alle Beispiele hier im Forum schon ausprobiert.
Wenn ich
SetTimer (1, 100, 0);
mache, Bekomme ich folgende Fehlermeldung:
error C3861: "SetTimer": Bezeichner wurde nicht gefunden.

Benutze Microsoft Visual Studio C++, habe vorher mit QT gearbeitet, deshalb bin ich hier neu auf dem Gebiet.
 
Hallo,

kenne mich da nicht so aus.
Habe so das Projekt erstellt:
Datei -> Neu -> Projekt -> Visual C++ -> Windows Forms-Anwendung.
 
Danke, habe es ausprobiert. Es scheint auch zu laufen, jedoch bekomme ich immer die Fehlermeldung, wenn ich bei dem Event etwas machen will, z.B. eine Zahl zu einer Variable hinzuzählen, dass man das nicht machen kann, weil das ganze statisch ist.

Wie muss ich denn das Projekt erstellen, um den Befehl SetTimer() nutzen zu können. Das sieht etwas leichter aus.
 
Danke, habe es ausprobiert. Es scheint auch zu laufen, jedoch bekomme ich immer die Fehlermeldung, wenn ich bei dem Event etwas machen will, z.B. eine Zahl zu einer Variable hinzuzählen, dass man das nicht machen kann, weil das ganze statisch ist.
Ohne etwas Code und die genaue Fehlermeldung, läst sich da schwer was zu sagen

Wie muss ich denn das Projekt erstellen, um den Befehl SetTimer() nutzen zu können. Das sieht etwas leichter aus.
Wenn du in deinen Programm eine GUI haben willst, bleibt dir nur, ein Projekt mit der MFC zu erstellen (Reines Win32 lasse ich mal außen vor). Die genaue Bezeichnung des Projekttypes habe ich im Moment nicht parat. Ich denke aber nicht, dass das leichter als eine Windows-Forms-Anwendung wird.

Ansonsten (ohne Fenster) tut's auch eine Win32-Konsolenanwendung. In die Verwendung der SetTimer()-Funktion solltest du dich aber trotzdem einlesen (MSDN).

Gruß
MCoder
 
Danke für die Antwort.

Ich möchte mit meinem Programm einen Text hochlaufen lassen, und auch im Hintergrund ein Video anzeigen können. Dann soll das ganze auch suf dem zweiten Bildschirm, wenn einer vorhanden ist, angezeigt werden können.

Mit welchem Projekt kann man das am besten realisieren?


zu meinem Problem mit dem Timer:

habe folgendes im header stehen:
Code:
int i;

   static void Demo(void)
   {
      // Normally, the timer is declared at the class level, so
      // that it doesn't go out of scope when the method ends.
      // In this example, the timer is needed only while Demo
      // is executing. However, KeepAlive must be used at the
      // end of Demo, to prevent the JIT compiler from allowing 
      // aggressive garbage collection to occur before Demo
      // ends.
      System::Timers::Timer^ aTimer = gcnew System::Timers::Timer;

      // Hook up the Elapsed event for the timer.
      aTimer->Elapsed += gcnew ElapsedEventHandler( Fenster::OnTimedEvent );
      
      // Set the Interval to 2 seconds (2000 milliseconds).
      aTimer->Interval = 2000;
      aTimer->Enabled = true;

      // Keep the timer alive until the end of the Demo method.
      GC::KeepAlive(aTimer);
   }

   // Specify what you want to happen when the Elapsed event is 
   // raised.
   static void OnTimedEvent( Object^ /*source*/, ElapsedEventArgs^ /*e*/ )
   {
		i=1;
   }

Wenn ich jetzt etwas in die Ereignisfunktion schreibe, was ich verändern will, bekomme ich folgende Fehlermeldung:
error C2597: Ungültiger Verweis auf nicht-statischen Member 'Fenster::i'
 
Ich möchte mit meinem Programm einen Text hochlaufen lassen, und auch im Hintergrund ein Video anzeigen können. Dann soll das ganze auch suf dem zweiten Bildschirm, wenn einer vorhanden ist, angezeigt werden können.
Ich denke, da ist die Windows-Forms-Anwendung schon nicht so verkehrt. Die .NET-Bibliothek gibt im Grafik/Multimedia -Bereich doch etwas mehr her, als etwa die MFC.
Wenn ich jetzt etwas in die Ereignisfunktion schreibe, was ich verändern will, bekomme ich folgende Fehlermeldung:
error C2597: Ungültiger Verweis auf nicht-statischen Member 'Fenster::i'
Sagt ja eigentlich die Fehlermeldung schon: Du kannst von einer statischen Methode nicht auf nicht-statische Member zugreifen. Du müsstest daher das "i" ebenfalls als "static" deklarieren.

Gruß
MCoder
 
Ja, Danke, der Timer scheint zu laufen.
Dachte nur, dass man den Wert einer Variable nicht verändern kann, wenn man sie alst statisch deklariert.

Wenn ich jetzt aber mein Label in der selben Klasse verschieben möchte:
Code:
void Fenster::update(void){
	label1->Location = System::Drawing::Point(328, i);
}

bekomme ich folgenden Fehler:
Code:
error C2227: Links von "->Location" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.

Habe auch mal versucht, Fenster:: davor zu schreiben, geht leider nicht.

Gruß, Gerd
 

Neue Beiträge

Zurück