Entwickler-Ecke
Windows API - Programm überlabbt alles jedoch maus nicht
Iaa_1 - Mo 08.09.08 19:01
Titel: Programm überlabbt alles jedoch maus nicht
hi leute ich habe eine uhr in ein spiel oben links gebracht indem ich die uhr eingestellt habe das sie über alles ist...
jedoch wenn ich die maus ausversehen beim spielen nach oben links mache klicke ich auf die maus anstatt im spiel das im hintergrund ist :(
wie kann ich das beheben?
BenBE - Mo 08.09.08 19:06
Leider kann ich die Lösung dazu nicht auf einem Silbertablett präsentieren, da mir eben diese ausgegangen sind.
Versuch dich bitte einmal etwas verständlicher auszudrücken ...
Iaa_1 - Mo 08.09.08 19:11
also ich habe eine uhr erstellt...
wenn ich die exe von der Uhr starte habe ich es so gemacht das die Uhr über allen fenstern zu sehen ist doch das problem ist:
wenn ich zb Warrock (ego shooter) spiele und baller kommt die maus manchmal auf die Uhr wodurch sie sichtbar ist...
und wenn ich dann schießen will klicke ich nur auf der Uhr rum (auf der Form der uhr) und net im spiel wodurch ich sterbe
BenBE - Mo 08.09.08 19:23
Ach das meinst Du ...
k, also wenn das so ist, dann gibt's drei Möglichkeiten:
1. Nutzung einer Transparenten Form, die nur beim Rumklicken auf der Schrift reagiert
2. Überschreiben des Message-Handlers deiner TForm, so dass diese jegliche Klicks ignoriert
3. Einblenden der Uhrzeit mit einem HUD\GameOverlay über einen Hook
Gibt sicherlich noch weitere, aber die mal der Komplexität nach geordnet.
Iaa_1 - Mo 08.09.08 19:25
also hook scheidet sowas von aus denke ich mal^^
das wäre wirklich schwer für einen anfänger und würde ohne detouring einen Bann von Punkbuster bedeutet xD wegen einer uhr^^
also 1. scheint am einfachsten zu sein jedoch wie mache ich das?
BenBE - Mo 08.09.08 19:34
Seit Delphi 7 gibt es die Möglichkeit, AlphaBlending und Transparenz für seine Formulare zu nutzen. Dort einfach eine Transparenzfarbe setzen, die gleiche für deinen Formular-Hintergrund und es sollte wie erwartet funktionieren.
Iaa_1 - Mo 08.09.08 19:51
ok nun ist es perfekt aber wie mache ich es das das spiel dann netmehr so stark ruckelt?
scheint nen richtig starker resourcen fresser zu sein
gibts wege das die uhr so bleiben kann aber mans verringern kann?
BenBE - Mo 08.09.08 22:19
Du könntest alternativ auch ein onMouseMove für das Formular einrichten, und dabei das Programm von Links Oben nach Rechts Oben (und umgekehrt) verschieben, sobald die Maus sich auf deinem Programm bewegt ...
Iaa_1 - Di 09.09.08 19:31
ok das geht nun alles wunderbar...
aber wie mache ich es das das teil net alles zum ruckeln bringt?
Hidden - Di 09.09.08 19:54
Iaa_1 hat folgendes geschrieben: |
ok das geht nun alles wunderbar...
aber wie mache ich es das das teil net alles zum ruckeln bringt? |
Versuch mal Form1.DoubleBuffered := true oder drück dich klarer aus ;)
delphi10 - Di 09.09.08 19:55
Delphi-Quelltext
1: 2:
| Form.DoubleBuffered := True; oder Form.imageUhr.parent.ControlStyle:=imageUhr.parent.ControlStyle+[csOpaque]; |
Eins von beiden sollte das Flimmern beheben.
Edit: Arrgh, ich muß schneller tippeln....
delphi10 - Di 09.09.08 19:56
delphi10 hat folgendes geschrieben: |
Delphi-Quelltext 1: 2:
| Form.DoubleBuffered := True; oder Form.imageUhr.parent.ControlStyle:=imageUhr.parent.ControlStyle+[csOpaque]; |
Eins von beiden sollte das Flimmern beheben. |
Edit: Arrgh, ich muß schneller tippeln....
Bitte löschen..Danke.
Iaa_1 - Di 09.09.08 20:08
nein es flimmert nicht es ruckelt..
also das SPiel ruckelt
wenn ich ohne die Uhr spiele , ruckelt es nicht
(zb Einheiten bleiben auf der Stelle stehen,die grafik ruckelt, alles sehr langsam)
Hidden - Di 09.09.08 20:19
Hi,
Dann musst du den verbrauch deiner Uhr an Arbeitsspeicher reduzieren. Aber das ist ein neues Thema, neuer Thread ;)
mfG,
Boldar - Di 09.09.08 20:24
Ich glaube eher, dass spiel hat aus anderen Gründen was gegen die Uhr. Denn eigentlich braucht sowas nicht so viel ram...
BenBE - Di 09.09.08 21:01
Das AlphaBlending von Windows läuft ohne Hardware-Beschleunigung, daher ruckelt das.
Yogu - Di 09.09.08 21:01
Du könntest versuchen, direkt auf den Bildschirm zu schreiben. Mit
Blitz Basic [
http://www.blitzbasic.com] ist das möglich - muss also auch mit Delphi gehen. Dort heißt die Methode
DESKTOP BUFFER - vielleicht findest du was bei Google mit ähnlichen Suchbegriffen.
Boldar - Di 09.09.08 21:05
Im Prinzip schreibt man auch da nicht direkt auf den Bildschirm, da der Speicher dafür eigentlich im GRAM liegt und somit ausserhalb des Zugriffs. Damit wird auch nur die ONTOP-Anwendung modifiziert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!