AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Anklickbares, unsichtbares Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

Anklickbares, unsichtbares Fenster

Ein Thema von Neutral General · begonnen am 10. Aug 2008 · letzter Beitrag vom 10. Aug 2008
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Anklickbares, unsichtbares Fenster

  Alt 10. Aug 2008, 13:02
Hi,

Ist es irgendwie möglich ein Fenster zu erstellen, das unsichtbar ist, aber trotzdem die WM_LBUTTONDOWN/WM_LBUTTONUP Message zu empfangen?

Ich bräuchte sowas

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Anklickbares, unsichtbares Fenster

  Alt 10. Aug 2008, 13:05
Die einzige Möglichkeit die mir einfallen würde ist ein Maushook, bei dem du prüfst, ob der Klick in deinem Fenster war.
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Anklickbares, unsichtbares Fenster

  Alt 10. Aug 2008, 13:12
Hi,

Ja an sowas in der Art dachte ich auch schon. Allerdings würde das mein Vorhaben sinnlos machen

Also was ich vorhabe, bzw mal probieren wollte ist folgendes.

Nachdem ich diesen Thread verfolgt habe, wollte ich versuchen ob sich das über AllocateHwnd bzw generell unsichtbare Fenster, die über dem Sprite schweben gelöst werden könnte und man dann für ein OnClick nur noch eine Window Message empfangen müsste, statt groß rumzurechnen (und auch GetSpriteAt rechnet ja intern, bzw geht alle (sichtbaren?) Sprites durch).

Von daher nutzt es mir nichts wenn ichs jetzt mit nem Hook löse
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Anklickbares, unsichtbares Fenster

  Alt 10. Aug 2008, 13:13
Hey,

das sollte gehen, wenn du das Fenster mit folgender Prozedure Transparent zeichnest:


Delphi-Quellcode:
procedure MakeWindowTransparent(Wnd: HWND; Alpha: Byte);
const
  WS_EX_LAYERED = $80000;
  LWA_ALPHA = $02;
type
  TSetLayeredWindowAttributes = function(const hWnd: HWND; crKey: Integer; bAlpha: Byte; dwFlags: Integer) : Integer; stdcall;
var
  SetLayeredWindowAttributes : TSetLayeredWindowAttributes;
  User32DLL : THandle;
begin
  User32DLL := LoadLibrary('User32.dll');
  if User32DLL <> 0 then
  begin
    @SetLayeredWindowAttributes := GetProcAddress(User32DLL, 'SetLayeredWindowAttributes');
    if @SetLayeredWindowAttributes <> nil then
    begin
      SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) or WS_EX_LAYERED);
      SetLayeredWindowAttributes(Wnd, 0, Alpha, LWA_ALPHA);
    end;
  end;
  FreeLibrary(User32DLL);
end;

und dann auf die Messages reagierst!

Aufrufen musst du die Funktion dann so:

Delphi-Quellcode:
MakeWindowTransparent(DeinFensterhandle,1);
//Ob es auch mit 0 geht weiß ich nciht musst du ausprobieren...
//das währe dann wirklich unsichtbar
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

Re: Anklickbares, unsichtbares Fenster

  Alt 10. Aug 2008, 13:15
Klar geht das, AlphaBlend auf Ture und AlphaBlendValue auf 1 (oder sogar null).
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Anklickbares, unsichtbares Fenster

  Alt 10. Aug 2008, 13:18
Zitat von turboPASCAL:
Klar geht das, AlphaBlend auf Ture und AlphaBlendValue auf 1 (oder sogar null).
Muss ja non-VCL sein. Ich benutze AllocateHwnd.

Und scheinbar funktioniert MakeWindowTransparent nicht mit diesen Fenstern

Delphi-Quellcode:
// Nur eine Test-Methode!
procedure THandleSprite.Apply;
begin
  SetParent(Fhandle,Form1.Handle);
  SetWindowPos(FHandle,HWND_BOTTOM,0,0,Round(Width),Round(Height),0);
  ShowWindow(FHandle,SW_SHOW);
  MakeWindowTransparent(FHandle,1);
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: Anklickbares, unsichtbares Fenster

  Alt 10. Aug 2008, 13:21
@ N.G. Da waren die anderen Beiträge noch nicht da...

Ich würde die Sprides & Mousepos. errechnen, das ist schneller und sauberer als dieses Kuddelmuddel mit unsichtbaren Fenster, Hooks etc.


(Gesausogut könnte man flacker TImages verschieben )
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz