Moin moin,
für mein aktuelles Projekt versuche ich herauszufinden, ob ein Fenster sich in einem bestimmten Bereich befindet. Allerdings ist das ganze ein wenig verzwickter, ich hab da nämlich noch ein boolean, das sagt "soll im bereich sein" bzw. sagt "soll nicht im bereich sein".
Ich zeige mal ein wenig code...
Delphi-Quellcode:
GetWindowRect(
handle,r);
IntersectRect(ir,r,area);
intersectspace := abs((ir.Right - ir.Left) * (ir.Bottom - ir.Top));
if ((intersectspace >= puffer)
xor IsValidSpace)
then
begin
machwas;
end;
ich rechne also zuerst das schnittrechteck zwischen dem zu überprüfenden bereich und dem fenster aus. dann den flächeninhalt dieses rechtecks. wenn der größer ist als ein bestimmter puffer, ist das fenster im bereich.
Wenn das Boolean IsValidSpace wahr ist UND das fenter sich im bereich befindet, dann ist für mich alles ok, und es muss nichts gemacht werden.
Am besten mach ich mal ne wahrheitstabelle...
Code:
A = "fenster im bereich?"
B = "Bereich valide?"
C = "Muss ich was tun?"
1 = wahr
0 = falsch
A|B|C
-+-+-
0|0|0 => fenster ist nicht im nicht validen bereich => alles ok
0|1|1 => fenster ist nicht im validen bereich => was tun!
1|0|1 => fenster ist im nicht-validen bereich => was tun!
1|1|0 => fenster ist im validen bereich => alles ok
Das ist doch eindeutig ein Fall für eine XOR-Verknüpfung, oder?
Warum funktioniert es dann nicht? Ich bekomme ziemlich unerklärliche (wenn auch reproduzierbare^^) Ergebnisse.
Mach ich beim Schneiden irgendwas falsch?