Nicht anklickbares Fenster erstellen (Overlay)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von Xaby »

ich weiß zwar, wie ich ein halb transparentes Fenster unter Windows erzeugen kann,
auch, wie ich eine Farbe komplett durchsichtig bekomme,
aber wie kann ich dieses Fenster auch noch sticky machen, aber gleichzeitig nicht anklickbar.
Also so, dass es zwar sichtbar ist, aber für den Mauszeiger eigentlich nicht da.

Mir kommt eine Idee, ich könnte vielleicht mit 2D-Drawing-Befehlen unter die Maus auf mein Window
genau die transparente Farbe zeichnen, aber ob das so ideal und performant ist?

Diesen Code hier von FluidByte, könnte ich entsprechend anpassen.

Code: Alles auswählen

OpenWindow(0,0,0,400,300,"untitled",#WS_OVERLAPPEDWINDOW | 1) 

;/ Gadgets
ButtonGadget(0,100,100,100,20,"MausX")


CreateImage(0,100,100)
StartDrawing(ImageOutput(0))
Box(0,0,100,100,RGB(255,0,255))
StopDrawing()

ImageGadget(1,10,10,100,100,ImageID(0))


;/


osi.OSVERSIONINFO 
osi\dwOSVersionInfoSize = SizeOf(OSVERSIONINFO) 
GetVersionEx_(osi) 

If osi\dwPlatformId = #VER_PLATFORM_WIN32_NT 
  SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|524288) 
  SetLayeredWindowAttributes_(WindowID(0),RGB(255,0,255),100,1|2) 
EndIf 

StickyWindow(0,1)


While WaitWindowEvent() ! 16 
  
  
  StartDrawing(WindowOutput(0))
  Circle(WindowMouseX(0), WindowMouseY(0),3,RGB(255,0,255))
  StopDrawing()
  
  
  

Wend
Doch vielleicht gibt es ja ne andere Methode, ein Fenster Sticky, Transparent, aber eigentlich nicht vorhanden hinzubekommen. Ich würde gern einen Texteditor haben, der Notizen anzeigen kann, die ich immer sehen kann,
aber der mich beim Klicken in anderen Anwendungen nicht stört.


Ich brauche allerdings
Bei meiner Idee und Methode, ColorKey und Alpha
http://msdn.microsoft.com/en-us/library ... S.85).aspx

Flackert noch, werde das mal etwas eleganter mit ImageGadgets machen,
allerdings denke ich, muss es da ne schönere Lösung geben.

Überlege, das für Overlay Texte, Fotos und auch Videos zu realisieren.
Wer weiß, wozu das nützt :-)
Kinder an die Macht http://scratch.mit.edu/
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von c4s »

Ich bin mir nicht ganz sicher was du willst. Tuts DisableWindow()?
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von Xaby »

Im ersten Augenblick hatte ich gedacht, ich sehe den Wald vor lauter Bäumen nicht.
Doch unter Windows 7 Professional 64 Bit (Programm soll aber 32 Bit sein)
hat es zur Folge, dass ich das Fenster
einfach nicht benutzen kann, sobald ich aber auf es klicke, ein Fehler-Ton erklingt.

Ich weiß gar nicht Recht, wozu DisableWindow() gut sein soll,
denn das Fenster bleibt irgendwo ja aktiv, nur funktionsunfähig.
Und jedes Mal, wenn man eben auf das Fenster klicken will / würde, kommt ein 'Bing'

HideWindow() scheint auch keinen Sinn zu haben, sobald ich HideWindow() benutze,
geht das Fenster richtig aus.

Kurz:

Ich möchte ein Fenster, was im Vordergrund ist, so dass ich darauf Informationen anzeigen kann
wie bei einem HUD. Aber eben auf Windows Ebene, und nicht mit DirectX oder OpenGL Hooks und Hacks oder ähnlichem.

Das Fenster muss so funktionieren wie oben schon mal demonstriert.
:: Sticky, sichtbar (nicht vollständig unbedingt, Transparenz etc.), aber nicht anklickbar
Es muss also über anderen Anwendungen laufen, wenn es um die Anzeige geht, muss es vor allen anderen sein,
wenn es um die Anklickbarkeit geht, und die Funktionsweise, dann muss es für die Maus hinter allen anderen liegen.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von Xaby »

Mal angenommen, man möchte Skype-Nachrichten lesen können,
aber nicht durch aufpoppende störende Fenster vom Programmieren abgehalten werden.

Dann kann man ganz normal in seinem Editor schreiben und klicken,
aber sieht das Fenster, welches oberhalb liegt dennoch. Nur es wird eben nur angezeigt,
aber man klickt nicht laufend rein, und durch die Halbtransparenz, sieht man ja auch noch ganz gut
die Fenster, die drunter liegen
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von ts-soft »

Sowas geht nicht, deswegen gibt es das auch noch nicht.
Gehe mit Deinem Fenster einfach der Maus aus dem Weg, stellt IMHO die einzige Lösung dar.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von Xaby »

Muss gehen, schau mal hier
http://majorgeeks.com/Ghost-It_d1128.html

Ghost-It

Das ist eine Anwendung, mit der du sogar Anwendungsfremde Fenster in so einen Zustand versetzen kannst.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von ts-soft »

Der Text dort widerspricht sich aber irgendwie. Sobald ein Ghost-Fenster aktiv wird, ist es nicht mehr durchlässig,
aber ein Fenster wird doch aktiv, wenn ich draufklicke :freak:

Kannst es ja per Region durchklickbar machen, überall wo kein Text steht. Einfacher wäre es, es einfach auszublenden (Hide), solange die Maus sich drüber befindet, danach wieder einblenden.

Das Fenster muss auch positionierbar sein, damit es nicht nur nervt, also sollte es z.B. per Trayicon umschaltbar sein.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von Xaby »

Ja, die Funktion, dass es sich wie ein Geist verhält, muss abstellbar sein,
oder wenn man es nur für einen Teil des Fensters macht, im immer sichtbaren Teil des Fensters
umstellbar sein. Irgendwie muss man das Programm ja auch schließen können und eben auch
verschieben und in seiner Größe ändern können.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von edel »

Verstehe ich nicht, das Beispiel von oben funktioniert doch genau so wie du es haben willst.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: Nicht anklickbares Fenster erstellen (Overlay)

Beitrag von PureLust »

Xaby hat geschrieben:... wie kann ich dieses Fenster auch noch sticky machen, aber gleichzeitig nicht anklickbar.
Also so, dass es zwar sichtbar ist, aber für den Mauszeiger eigentlich nicht da.
Hi Xaby ...

ich fand die Geschichte echt interessant und hab da mal was gebastelt (wusste garnicht, dass das geht). :mrgreen:
Hoffe Du kannst was damit anfangen. ;)

Gruß, PL
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Antworten