Nach dem Zuweisen einer Region steht diese nicht weiter zur Verfügung
-
Hallo Leute,
Ich habe ein kleines Problem mit einer Region (HRGN).
Mit SetWindowRgn(...) weise ich die Region meinem Fenster zu. Später überbergebe ich meinem Fenster eine andere Region. Will ich meinem Fenster nun erneut die erste Region mit SetWindowRgn(...) zuweisen verändert sicht nichts mehr.
Warum ist eine Region, nachdem sie einmal eingesetzt wurde, dann verbraucht???
Vielen Dank für eure Hilfe,
Euer Entertainer
-
Ich kenn mich jetzt mit Set...(); net aus.
Aber schau mal in der BCB Hilfe mal nach.
Es kann sein, das du das Fenster Update/Refreshen/Neu zeichen mußt, so das es die neue Redion zuweist und anzeigt.
-
Aus der Windows- Hilfe:
After a successful call to SetWindowRgn, the operating system owns the region specified by the region handle hRgn. The operating system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not close this region handle.
Das Verhalten ist also NORMAL (Windoof) :p
Du musst ev. eine Kopie der Region machen. (GetWindowRgn)
-
Hallo Leute,
Danke für eure bisherigen Hilfeversuche. Besonderer Dank gilt auch dem Altenburger für sein Zitat der Fehlermeldung. Jetzt weiß ich wenigstens den Grund für das Problem. Der Versuch mit GetWindowRgn eine Kopie anzufertigen hat leider nicht funktioniert. Kann mir vielleicht noch jemand einen Tipp mitteilen?
Vielen Dank,
Euer Entertainer
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich glube, Du musst vor GetWindowRgn erst eine neue Region (irgendeine Form) in der Variablen erzeugen! - die Variable ist nach SetWindowRgn() ungueltig.
-
Hallo Leute,
Wenn ich mit GetWindowRgn(...) die Region zurückhole funktioniert das bei mir nicht. Warum?
Beispiel:
// Die beiden Beispielregionen: HRGN Region1; HRGN Region2; // Die Regionen werden befüllt // ... //Die Region1 zuweisen SetWindowRgn(...->Handle, Region1, true); // Irgendwelche Vorgänge // ... // Region1 zurückholen und neue Region2 zuweisen: GetWindowRgn(...->Handle, Region1); SetWindowRgn(...->Handle, Region2, true); // Irgendwelche Vorgänge: // ... // Erneut Region1 zuweisen (was bei mir nicht funktioniert!!!): SetWindowRgn(...->Handle, Region1, true);Wo liegt bei mir der Fehler???
Vielen Dank,
Euer Entertainer
-
mach mal VOR das letzte
SetWindowRgn(...->Handle, Region1, true);
ein
CreateRectRgn(...);// Durch SetWindowRgn(...) wird Region1 UNGUELTIG!
Hat bei mir geholfen!

-
Hallo Altenburger,
Vielen, vielen Dank. Es funktioniert genau so, wie du es geschrieben hast.
Danke für deine große Mühe,
Dein Entertainer