Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Apr 26, 2024 12:14

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Aktualisierung in Windows-Forms
BeitragVerfasst: Fr Jan 30, 2015 09:15 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
HalliHallo,
ich habe soeben folgendes Problem festgestellt:

Gegebenheit:
Ich habe eine Windows-Forms und zeige meine "Geometrien" in einem Panel nach dieser Anleitung an. Damit auch jeder das Programm nutzen kann, habe ich mithilfe von InstallShield eine Setup-Anwendung erstellt und die benötigten Dateien, wie glew.dll und VC++ 12 CRT dazugepackt. Die Dateien können auch problemlos installiert und ausgeführt werden. Das Programm startet auch wie gewollt.
Nur ...

Problem:
Auf anderen Rechnern wird das panel nicht automatisch aktualisiert. Damit meine ich folgendes: Ich erstelle meine Geometrie und lasse diese auf dem panel anzeigen. Wenn ich nun mit der Maus ein ContextMenu öffne, überlappt dieses Menu das panel und beim schließen wird das Menu in das panel "eingebrannt". Erst wenn ich die Render-funktion erneut aufrufe, wird der Inhalt des Panels aktualisiert und das "eingbrannte" Menu ist verschwunden.

Programmiersprache: C++
MS Visual Studio 2013

Mein Rechner: Win 8.1

Getestete Rechner: Win 7

Auf meinem Rechner ist dies jedoch nicht der Fall. Habe ich irgendwelche Dateien vergessen mitzuliefern? Oder habe ich einen programmiertechnischen Fehler eingebaut?

Danke schonmal!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aktualisierung in Windows-Forms
BeitragVerfasst: Fr Jan 30, 2015 10:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Hi,

Du solltest noch .NET mit in den Installer packen (falls noch nicht geschehen). Wird zwar normalerweise als Update ausgerollt aber w/e.

Zu deinen Problem: Unter OpenGL muss man in der Regel erst einmal Rendern und dann SwapBuffer bei jeder Aktualisierung machen. Events sind dafuer etwas sub-optimal, da diese ggf. nicht zum richtigen Zeitpunkt kommen und Animationen etc. schwerer zu loesen sind. Am besten machst du folgendes:
Code:
  1.  
  2. MyForm->Erstellen();
  3. while(true) {
  4.     Application::DoEvents();
  5.     if(MyForm->ShouldExit()) {
  6.        break;
  7.     }
  8.     if(MyForm->ShouldDraw()) { //Die events koennen nun einfach einen Bool oder so setzen den du hier zurueckgibst.
  9.     MyForm->OpenGLControl->RenderStuff(); //In einigen Faellen wird dein vorheriges Bild nicht gespeichert, also neu zeichnen.
  10.     MyForm->OpenGLControl->SwapBuffers(); //Bild ausgeben
  11.     }
  12. }
  13. MyForm->Close();
  14.  


Schau dir auch gleich mal das OpenGL Fenster bei nehe an. Dort gibt es ein Beispiel fuer C# das eine ganze Ecke besser funktioniert und keine zusaetzlichen Dependencies hat.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aktualisierung in Windows-Forms
BeitragVerfasst: Fr Jan 30, 2015 14:16 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Windows Forms lässt sich übrigens nicht in C++ verwenden.
Der Zugriff ist nur über C++/CLI möglich. Standard C++ ist eine Teilmenge davon, so wie C eine Teilmenge von C++ ist, aber es ist eine völlig andere Sprache.

Wenn du mit Dot.Net entwickeln willst, was du momentan machst, würde ich dir C# empfehlen. Der Umstieg sollte dir nicht schwer fallen. OpenGL kannst du dort zum Beispiel über OpenTK zugreifen.
Wenn du nativ entwickeln willst, solltest du richtiges C++ verwenden. (Was, besonders wenn du noch eher Neuling bist, definitiv komplexer ist als C#)

C++/CLI ist beides ein bisschen aber keins richtig und gilt als relativ komplex richtig zu verwenden.
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn

Microsoft schreibt:
https://msdn.microsoft.com/en-us/library/bb531344%28v=vs.110%29 hat geschrieben:
Although we recommend that you do not create Windows Forms applications in C++/CLI, maintenance of existing C++/CLI UI applications is supported. If you have to create a Windows Forms application, or any other .NET UI application, use C# or Visual Basic. Use C++/CLI for interoperability purposes only.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aktualisierung in Windows-Forms
BeitragVerfasst: Mo Feb 02, 2015 21:42 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
Hi,
danke für die Infos.

Meine Forms erstelle ich mit dem integrierten Forms Designer. An diesem Code ändere ich so gut wie nichts. Meine Klassen/Objekte schreibe ich in C++ mithilfe dieses Buches.

Ich habe das Programm auf weiteren Rechnern erfolgreich testen können. Daher gehe ich davon aus, dass ich in meinem Code keinen Fehler, sondern das Problem speziell an diesem Rechner liegt.

Können die System-/Grafikeinstellungen darauf Auswirkungen haben?
Ich werde auch überprüfen, ob alle Treiber aktuell sind.

Dankesehr!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 38 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.241s | 18 Queries | GZIP : On ]