Visual C++: Wie Fenster bewegen ohne den Thread dahinter einzufrieren?

OP #2829277
Lesenswert?

Mit den Forms (Fenstern) von mit Visual C++ (2008) erstellten Programmen 
habe ich das Problem, das wenn sie bewegt werden, z. B. von links nach 
rechts gezogen werden, die Threads der Forms angealten (eingefroren) 
werden; d. h. nicht nur die Anzeigen frieren ein sondern auch die 
Threads der Formen!
Das ist ein Bug, denn auch bei älteren und mit Delphi erstellten 
Programm gibt es das Problem nicht.
Ich finde das Problem auch sonst nicht bei anderen Programmen; 
beispielsweise das aktuelle TV-Programm von xawtv angezeigt und 
Youtube-Videos über Firefox angezeigt laufen problemlos und ruckelfrei 
weiter wenn ich die Fenster bewege.

Deshalb meine Frage: Kann man, und wenn ja wie, diesen Bug bei Visual 
C++ (2008) abstellen?
Und falls nicht: Wo (mit welchen IDEs) gibt es den Bug nicht oder 
zumindest in abstellbarer Form?
Gast #2829612
Lesenswert?

> Das ist ein Bug, denn auch bei älteren und mit Delphi erstellten
> Programm gibt es das Problem nicht.
Ich bezweifle, dass die Delphi-Programme auf .NET basieren -> Visual C++ 
(2008) ist doch .NET, oder?
Daher würd ich mal schauen, ob du nicht während dem Bewegen neu zeichnen 
lassen musst o.ä.

Ralf
Gast #2830620
Lesenswert?

Peter II schrieb:
> Sebastian-L schrieb:
>> Normalerweise ist das MFC hat aber mit Delphi genau so wenig zu tun!
>
> nein, er schreibt etwas von "Forms" und das in Kombination mit Visual
> C++ (2008) meint zu 99% C++/CLI also .net.

Also wenn er "Forms" in Visual c++ sagt dann meine ich
http://www.functionx.com/visualc/Lesson08.htm
auch wenn man in MFC eher Dialoge dazu sagt
Ansonsten sind das Win. Forms wenn ich .Net haben will

Aber meine Meinung dazu ist:
entweder .Net mit c# oder VB
oder c++ mit MFC
alles dazwischen macht nur ärger
Gast #2830936
Lesenswert?

Erwin Meyer schrieb:
> Mit den Forms (Fenstern) von mit Visual C++ (2008) erstellten Programmen
> habe ich das Problem, das wenn sie bewegt werden, z. B. von links nach
> rechts gezogen werden, die Threads der Forms angealten (eingefroren)
> werden; d. h. nicht nur die Anzeigen frieren ein sondern auch die
> Threads der Formen!

Forms. Bist Du sicher dass die überhaupt jeweils einen eigenen Thread 
haben?

Hmm, Forms (jedweder Form, sorry ;-), widerliches Zeug. Würde ich nicht 
mit der Kohlenzange...

> Das ist ein Bug, denn auch bei älteren und mit Delphi erstellten
> Programm gibt es das Problem nicht.

Da täuschst Du Dich sehr wahrscheinlich, also dass das ein Bug ist.

> Ich finde das Problem auch sonst nicht bei anderen Programmen;
> beispielsweise das aktuelle TV-Programm von xawtv angezeigt und
> Youtube-Videos über Firefox angezeigt laufen problemlos und ruckelfrei
> weiter wenn ich die Fenster bewege.

<grins mode="evil">Uuhhh, wusstest Du nicht dass Linux in jeder Hinsicht 
besser als Windoof ist?</grins>

> Deshalb meine Frage: Kann man, und wenn ja wie, diesen Bug bei Visual
> C++ (2008) abstellen?

Das ist ziemlich sicher kein Bug sondern im Programmiermodell so 
angelegt. Doku lesen und so programmieren dass das nicht auftritt.

Wobei mir unklar ist wieso das signifikant ist, wie lange zerren denn 
die Luser die Fenster in der Gegend herum?
Gast #2831113
Lesenswert?

Jasch schrieb:
> Forms. Bist Du sicher dass die überhaupt jeweils einen eigenen Thread
> haben?

In sofern als eine Form Anwendung wie eine normale Anwendung natürlich 
in einem Prozess mit einem Thread abläuft.

Wenn du also im Hintergrund Berechnungen anstellst die länger dauern und 
deshalb in einem Eigenen Thread laufen(sollten) damit die Oberfläche 
nicht einfriert. sollte das umgekehrt auch nicht passieren.

Erwin Meyer schrieb:
> d. h. nicht nur die Anzeigen frieren ein sondern auch die
> Threads der Formen!

sollte bei sauberer Programmierung nicht passieren. (wobei ich die 
Ausdrucksweise etwas unverständlich finde)
Also her mit dem Code!

in sofern Hast du recht Jasch, aber lass das Windows gebashe.
Gast #2832494
Lesenswert?

Sebastian-L schrieb:
> Jasch schrieb:
>> Forms. Bist Du sicher dass die überhaupt jeweils einen eigenen Thread
>> haben?
>
> In sofern als eine Form Anwendung wie eine normale Anwendung natürlich
> in einem Prozess mit einem Thread abläuft.

Einer wird da wohl kaum reichen...

> Wenn du also im Hintergrund Berechnungen anstellst die länger dauern und
> deshalb in einem Eigenen Thread laufen(sollten) damit die Oberfläche
> nicht einfriert. sollte das umgekehrt auch nicht passieren.

Wenn Du das explizit so programmiert hast - cf. Programmiermodell (das 
ist nicht trivial). Was mein Punkt war.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren