Forum: PC-Programmierung Label löst Paint Ereigniss aus


von deep d. (deepdiver99)


Lesenswert?

Hallo!

Habe eine Windows_Forms Anwendung mit TabControl und einem Tab. Auf 
diesem Tab ist ein Panel und daneben einige Buttons. Wenn ich nun mit 
der Maus über die Buttons fahre wird jedes mal für das Panel das Paint 
Ereigniss ausgelöst. Da das Neuzeichnen recht aufwendig ist flackert es 
sehr doll. Weiss jemand wie ich das umgehen kann?
Programmierplattform ist Visual Studio C++/CLI.

VG Deepdiver99

von Rainer V. (rudi994)


Lesenswert?

deep diver99 schrieb:
> Visual Studio C++/CLI.

Kenne ich leider nicht, bin daher nicht sicher, ob es das Richtige ist:
In Control-Eigenschaft Style die Flags AllPaintingInWmPaint und 
UserPaint auf TRUE (bzw. true) setzen, um Botschaft WM_ERASEBKGND zu 
unterdrücken und dadurch das Flimmern/Flackern zu vermindern.
https://msdn.microsoft.com/de-de/library/system.windows.forms.controlstyles(v=vs.110).aspx

Siehe Flag UserPaint: wenn FALSE, dann wird kein Paint-Event ausgelöst 
und das Neuzeichnen wird nicht mehr vom System erledigt. Ich vermute 
mal, daß dann die Anwendung selbst für das Neuzeichnen sorgen muß.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rainer V. schrieb:
>> Visual Studio C++/CLI.
>
> Kenne ich leider nicht

Das ist eine Microsoft-Perversion, um eine optisch an C++ erinnernde 
Programmiersprache mit dem .Net-Geraffel zu verbinden. Hieß früher 
"Managed C++".

von Deepdiver99 (Gast)


Lesenswert?

Habe es jetzt mal probiert, aber es kommt eine Fehlermeldung. "SetStyle" 
ist PRIVATE, kann daher nicht darauf zugreifen.

Form1.h(2282) : error C3767: 
"System::Windows::Forms::Control::SetStyle": Auf mögliche Funktion(en) 
kann nicht zugegriffen werden.

Noch eine andere Idee?

von Deepdiver99 (Gast)


Lesenswert?

Habe die Lösung gefunden. Das Problem war der TAB auf dem das PANEL und 
die BUTTON's waren. Habe ein neuen TAB angelegt und die Steuerelemente 
darauf verschoben, und siehe da es wird kein PANEL_Paint_Event mehr 
ausgeöst wenn man mit der Maus über die Button's fährt.
Warum der "alte" TAB diese Problem gemacht hat kann ich mir nicht 
erklären. Habe alle Einstellungen von beiden TAB's verglichen, aber sie 
waren gleich.

von Rainer V. (rudi994)


Lesenswert?

Deepdiver99 schrieb:
> Warum der "alte" TAB diese Problem gemacht hat kann ich mir nicht
> erklären.

Habe sowas früher auch erlebt, z.B. bei einer VB6-Demo nach ausgiebigem 
Herumprobieren im Fensterformular-Editor. In einem neuen Projekt ohne 
wildes Herumprobieren hat dann alles funktioniert.

> "SetStyle" ist PRIVATE, kann daher nicht darauf zugreifen.

Sorry! O.g. Link bezieht sich auf .NET Framework 4.5, aber die Sache mit 
den Style-Flags wäre wohl ohnehin nicht des Rätsels Lösung gewesen. LG

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.