vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Fenster immer in Hintergrund halten 
Autor: Fraggel
Datum: 09.10.03 12:40

Hallo,

ich programmiere gerade eine Art 'Pinnwand', die immer auf dem Desktop liegen soll. Allerdings soll sie verständlicherweise immer auf dem Desktop liegen. Gibt es 'ne Möglichkeit das Fenster immer Hintergrund zu halten, so daß auch bei einem Click auf eines der Steuerelemente das Fenster hinten bleibt?

THX
Fraggel

Greetz
Fraggel

Phantasie ist wichtiger als Wissen.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: GuidoE
Datum: 09.10.03 21:27

Hallo Fraggel,


füge im allgemeinen Teil ein:

Const HWND_BOTTOM = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
 
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal _
  hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long)
dann füge in das Form_Paint (Wichtig!)- Ereignis ein:

Private Sub Form_Paint()
    SetWindowPos Me.hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
End Sub
Guido
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: Fraggel
Datum: 10.10.03 08:21

Jau, Danke

Hatte schon probiert mit SetWindowPos() was zu machen, aber ich hatte wohl die falschen Konstanten. Jetzt funzts...

Greetz
Fraggel

Phantasie ist wichtiger als Wissen.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: E7
Datum: 13.10.03 19:34

Hi,

eine elegantere Lösung wäre:

- Hwnd von Desktop herausfinden
- SetParent() und Formular direkt in Desktop integrieren...

E7

???????????????????????????????????????????????????????????
e7o.de | jetzt (wirklich) neu!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: Fraggel
Datum: 24.10.03 09:57

Immer im Hintergrund scheint nicht 100%ig zu funktionieren, daher habe ich probiert, das Fenster zum Child vom Desktop zu machen, klappt aber auch nicht. Folgenden Code habe ich benutzt:

' API
Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function SetParent Lib "user32" _
(ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Const WS_EX_MDICHILD = &H40&
Const WS_EX_WINDOWEDGE = &H100&
Const GWL_EXSTYLE = (-20)

Private Sub Form_Load()

SetParent Me.hwnd, GetDesktopWindow
SetWindowLong Me.hwnd, GWL_EXSTYLE, _
WS_EX_MDICHOLD Or WS_EX_WINDOWEDGE

End Sub

Greetz
Fraggel

Phantasie ist wichtiger als Wissen.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: E7
Datum: 27.10.03 19:19

Hi,

die hWnd vom Desktop findest du mittels FindWindow heraus:

Desktop = FindWindow("SysListView32", "")

Das sind die Icons vom Desktop - da gehört dein Fensterchen hin....

E7

???????????????????????????????????????????????????????????
e7o.de | jetzt (wirklich) neu!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: Fraggel
Datum: 28.10.03 20:18

Kann es sein, daß die hWnd vom Desktop immer &H0 ist?

Jedenfalls kann ich die Form irgendwie nicht zum Child vom Desktop erklären, aber mir einer Picturebox hat's geklappt. Leider funktionieren die RichText-Steuerelemente da drin danach nicht mehr. Hm.. :-/

Greetz
Fraggel

Phantasie ist wichtiger als Wissen.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: GuidoE
Datum: 28.10.03 23:38

Ich bin zu dem gleichen Ergebnis gekommen: das Desktop-Handel wird so nicht zurückgegeben (bzw. "0").

Gruss, Guido
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: E7
Datum: 29.10.03 18:50

Hi,

0 ist eigentlich direkt der Bildschirm... Wenn ihr zum Handle 0 mittels GetDC die hDC auslest, könnt ihr direkt auf den Bildschirm zeichnen.

Ich habs mal mit dem eigentlichem Desktop versucht und nicht mit dem Listview:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
  lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal _
hWndNewParent As Long) As Long
 
Private Sub Form_Load()
Dim I As Long
Show
I = FindWindow("Progman", "Program Manager")
SetParent Me.hWnd, I
End Sub
Weg wäre das Fenster dann - direkt auf dem Desktop ;)

E7

???????????????????????????????????????????????????????????
e7o.de | jetzt (wirklich) neu!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: Fraggel
Datum: 30.10.03 11:29

Jo Danke, das geht jetzt.

Greetz
Fraggel

Phantasie ist wichtiger als Wissen.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: tom-010
Datum: 09.06.10 17:37

bei mir weiß visual basic nicht was Me.hwnd ist.
Ich programmiere mit VB10 falls das etwas ausmacht.

Beitrag wurde zuletzt am 09.06.10 um 17:42:59 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fenster immer in Hintergrund halten 
Autor: Zardoz
Datum: 09.06.10 18:09

Hallo tom-010,
wenn du mit VB10 VB2010 meinst, stellst du deine Frage besser hier:
http://www.vbarchiv.net/forum/list_10_vb-dotnet-fortgeschrittene.html

Gruss,

Zardoz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel