|
Eigentlich ist es ja nur eine kleine Spielerei... Aber da der
Desktop ja bekanntlich ein ListView-Control ist - warum nicht
einfach einmal ausprobieren, wie er in den verschiedenen Ansichten
aussieht, analog zur Eigenschaft View?
Wenn Sie erst einmal das richtige Fenster gefunden haben, ist es
kein Problem mehr, den gewünschten Stil über eine Nachricht zu
setzen... Wozu auch immer das gut und sinnvoll sein mag, überlasse
ich Ihnen. Und auch die Überraschung überlasse ich Ihnen, wenn das
unter der einen oder anderen Variante der Windows-Betriebssysteme
nicht so ganz funktioniert. Aber nett sieht es aus...
Private Type StyleBits
dwOld As Long
dwNew As Long
End Type
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) _
As Long
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" _
(ByVal hWnd As Long, ByVal wCmd As Long) As Long
Public Enum ViewModeConstants
vmIcon
vmReport
vmSmallIcon
vmList
End Enum
Public Sub DesktopViewMode(ViewMode As ViewModeConstants)
Dim nWnd As Long
Dim nStyleBits As StyleBits
Const GW_CHILD = 5
Const GWL_STYLE = (-16)
Const LVS_TYPEMASK = &H3
Const WM_STYLECHANGED = &H7D
nWnd = FindWindow("Progman", "Program Manager")
nWnd = GetWindow(nWnd, GW_CHILD)
nWnd = GetWindow(nWnd, GW_CHILD)
With nStyleBits
.dwOld = GetWindowLong(nWnd, GWL_STYLE)
.dwNew = .dwOld
.dwNew = .dwNew And Not LVS_TYPEMASK
.dwNew = .dwNew Or ViewMode
End With
SendMessage nWnd, WM_STYLECHANGED, GWL_STYLE, nStyleBits
End Sub
|