| |
Suche Visual-Basic CodeFenster 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. | |
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 | |
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. | |
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! | |
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. | |
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! | |
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. | |
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 | |
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! | |
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. | |
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. | |
| 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 |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|