Newsgroup: it.comp.lang.visual-basic
Titolo: Temi XP

Stavo giocherellando con i temi di xp ed ho tirato fuori questa piccola cosa
..magari si puo pubblicare sul sito sempre se ne valga la pena.
In pratica è un piccolo esempio di come disegnare i vari pulsanti o
qualsiasi altra cosa  inclusa nei temi di xp..
Questo esempio funziona bene se provato dal file.exe e non semrpe da
ambiente vb(misteri di vb)..
modulino:
Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Public Type Size
        cx As Long
        cy As Long
End Type
Public Enum THEME_SIZE
    TS_MIN
    TS_TRUE
    TS_DRAW
End Enum
Public Const WP_CloseBUTTON = 18
Public Const MAXBS_NORMAL = 1
Public Declare Function OpenThemeData Lib "UxTheme.dll" (ByVal hwnd As Long,
_
                ByRef pszClassList As Byte) As Long
'pszClassList si poteva usare come string però per oscuri motivi non
funziona (almeno non sembra) :))
Public Declare Function CloseThemeData Lib "UxTheme.dll" (ByVal theme As
Long) As Long
Public Declare Function GetThemePartSize Lib "UxTheme.dll" (ByVal hTheme As
Long, _
  ByVal hdc As Long, ByVal iPartId As Integer, ByVal iStateId As Integer, _
  prc As Any, ByVal theme As THEME_SIZE, ByRef psz As Size) As Long
Public Declare Function DrawThemeBackground Lib "UxTheme.dll" (ByVal hTheme
As Long, _
  ByVal hdc As Long, ByVal iPartId As Integer, ByVal iStateId As Integer, _
  ByRef pRect As RECT, ByRef pClipRect As RECT) As Long
Public Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As
Long, _
  ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function OffsetRect Lib "user32" (lpRect As RECT, ByVal x As
Long, _
 ByVal y As Long) As Long
form con autoredraw a true (non necessario pero' per il momento si ) :))))))
Private Sub Command1_Click()
Dim hThem As Long
Dim hwnd As Long
Dim sz As Size
Dim rc As RECT
Dim ss() As Byte
ss = "WINDOW"
hThem = OpenThemeData(0, ss(0))
'hThem = OpenThemeData(0, "WINDOW")
GetThemePartSize hThem, Me.hdc, WP_CloseBUTTON, MAXBS_NORMAL, 0, TS_TRUE, sz
SetRect rc, 0, 0, 12, 12 ' 
sz.cx
, 
sz.cy
DrawThemeBackground hThem, Me.hdc, WP_CloseBUTTON, MAXBS_NORMAL, rc, rc
CloseThemeData hThem
Me.Refresh
End Sub
ricordate di provarlo dall'exe altrimenti non sempre funziona
ciao :)))

 End Sub
perņ non fą niente ne con l'exe ne in vb6 sp5
ho XP Professional
Huntercity
www.spagoland.3000.it

 > hThem = OpenThemeData(0, ss(0))
con:
ss = "WINDOW"
hThem = OpenThemeData(Me.hwnd, ss(0))
al limite ti posso mandare tutto il progetto zippato  fammi sapere
ciao :))


non fą proprio niente
compila lo esegue ma a video non si vede proprio niente
mandami il progetto zippato all'indirizzo hunte...@NOSPAMexcite.com
togliendo NOSPAM
grazie
Huntercity
www.spagoland.3000.it

 togliendo NOSPAM
l'ho messo su uno spazio free
http://members.xoom.virgilio.it/algoritmi/file.zip

 > non fà proprio niente


 win2k e non winXp??
certezze non ne ho sto provando adesso anch'io..ma credo che dovresti prima
abilitare un tema qualsiasi
ciao :)


se abilito il tema di XP allora funziona

> se abilito il tema di XP allora funziona
cmq esiste una funzione  se non fai uso dei temi...
DrawFrameControl disegna anche lei pulsanti e altre cosine uguali a quelli
di sistema
es: puoi usarla per pulsanti ontop e altro
ciao :)