Page 1 sur 3

Support des API des themes XP

Publié : ven. 11/mars/2005 20:56
par Anonyme2
J'ai fait les fichiers pour Purebasic afin de pouvoir utiliser directement les API liées aux thèmes XP

Voici le lien du zip qui contient 2 fichiers ici

Le 1er est le fichier UXTHEME sans extension à placer dans le repertoire PureBasic\Purelibraries\Windows et le second le fichier uxtheme.lib à placer dans le répertoire PureBasic\Purelibraries\Windows\Libraries

Relancer PB

Les 48 API suivantes sont disponibles directement en mettant le traditionnel _
Il faut bien sur ne l'utiliser qu'avec XP c'est-à-dire tester que l'oS est bien XP


Code : Tout sélectionner

    CloseThemeData 
    DrawThemeBackground 
    DrawThemeBackgroundEx 
    DrawThemeEdge 
    DrawThemeIcon 
    DrawThemeParentBackground 
    DrawThemeText 
    EnableThemeDialogTexture 
    EnableTheming 
    GetCurrentThemeName 
    GetThemeAppProperties 
    GetThemeBackgroundContentRect 
    GetThemeBackgroundExtent 
    GetThemeBackgroundRegion 
    GetThemeBool 
    GetThemeColor 
    GetThemeDocumentationProperty 
    GetThemeEnumValue 
    GetThemeFilename 
    GetThemeFont 
    GetThemeInt 
    GetThemeIntList 
    GetThemeMargins 
    GetThemeMetric 
    GetThemePartSize 
    GetThemePosition 
    GetThemePropertyOrigin 
    GetThemeRect 
    GetThemeString 
    GetThemeSysBool 
    GetThemeSysColor 
    GetThemeSysColorBrush 
    GetThemeSysFont 
    GetThemeSysInt 
    GetThemeSysSize 
    GetThemeSysString 
    GetThemeTextExtent 
    GetThemeTextMetrics 
    GetWindowTheme 
    HitTestThemeBackground 
    IsAppThemed 
    IsThemeActive 
    IsThemeBackgroundPartiallyTransparent 
    IsThemeDialogTextureEnabled 
    IsThemePartDefined 
    OpenThemeData 
    SetThemeAppProperties 
    SetWindowTheme 

Publié : ven. 11/mars/2005 21:26
par Flype
hmm c plutot cool çà.
as tu un source pour essayer çà ?

Publié : sam. 12/mars/2005 8:34
par Anonyme2
Flype a écrit :hmm c plutot cool çà.
as tu un source pour essayer çà ?
Pas grand chose pour l'instant mais ce code simple pour récupérer le handle du theme de la fenêtre
Utilise une procedure de Nico pour convertir le format ansi en unicode

Code : Tout sélectionner

Procedure.l Ansi2Uni(ansi.s)
  size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,-1,0,0)
  Dim unicode.w(size)
  MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size)
  ProcedureReturn @unicode() 
EndProcedure
 
 
WindowID_Fenetre_Principale = OpenWindow(0, 0, 0, 560 , 355, #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "")
   If WindowID_Fenetre_Principale And CreateGadgetList( WindowID_Fenetre_Principale)
          If OSVersion() = #PB_OS_Windows_XP
             htheme =OpenThemeData_(WindowID_Fenetre_Principale, Ansi2Uni("Window"))
             Debug "htheme = "+Str(htheme)
          EndIf
          Repeat
           
          Until WaitWindowEvent() = #PB_Event_CloseWindow   
   EndIf
End 

Publié : sam. 12/mars/2005 8:49
par bernard13
merci denis
mais je comprend pas

tu dis de mettre le fichier uxtheme.lib à placer dans le répertoire PureBasic\Purelibraries\Windows\Libraries
hors j'ai dejà le fichier uxtheme.lib

peux tu m'expliquer denis ...

Publié : sam. 12/mars/2005 11:09
par Le Soldat Inconnu
trop classe, je vais testé ça :D merci

Publié : sam. 12/mars/2005 11:32
par Flype
bernard, font il exactement la meme taille ?

Publié : sam. 12/mars/2005 11:37
par bernard13
non
un fais 12.0ko il date de du 12/12/2003

et celui de denis fais 11,6 ko

je comprend pas pourquoi ce fichier est deja installer

Publié : sam. 12/mars/2005 12:59
par Anonyme2
Bernard, Je ne sais pas d'ou vient ton fichier mais ces APi ne fonctionnaient pas avec PB 3.93.

Peut-être que c'est une librairie utilisateur qui t'a installé ces fichiers.
Bon, puisque tu ne comprend pas, n'installe pas ces 2 fichiers.

C'est d'ailleurs très simple d'ajouter des API pour Pure voire ses propres commandes suivies par _ du moment ou elle existent dans un fichier Dll.

Publié : sam. 12/mars/2005 13:12
par bernard13
j'ai rajouter aucun fichier

Publié : sam. 12/mars/2005 15:18
par gansta93
Cool.
tu as fais ça avec DLLImporter ?
Sûrement... c domage que l'on ait pas la syntaxe dans la barre d'état.
Qu'elqu'un saurait-il comment faire pour qu'on puisse l'avoir ?
Arf... un peu hors-sujet dsl.

Publié : sam. 12/mars/2005 15:27
par Flype
heu oui gangsta, utilise jaPBe par exemple. :wink:

Publié : sam. 12/mars/2005 16:16
par gansta93
Je sais que certaines API ont leur syntaxe qui s'affichent dans la bare d'état comme les autres fonctions. Donc je supause que c'est possible avec les API.
Et pour JaPBe, j'aimerais bien, mais je ne peux pas.

Publié : sam. 12/mars/2005 18:04
par Anonyme2
gansta93 a écrit :Cool.
tu as fais ça avec DLLImporter ?
Sûrement... c domage que l'on ait pas la syntaxe dans la barre d'état.
Qu'elqu'un saurait-il comment faire pour qu'on puisse l'avoir ?
Arf... un peu hors-sujet dsl.
Oui je l'ai fait avec DLLImporter , mais dans l'éditeur PB, aucune API n'a la synthaxe.
D'ailleurs, pour programmer les API, il faut savoir quoi passer en paramètres alors certaines API ont jusqu'à 9 paramètres pour les thèmes XP, je ne sais pas si celà tiendrait dans la barre d'état mais de toute façon cette aide n'apporterait rien, car il faut bien lire la doc MS et encore pour savoir quoi passer :roll:

Publié : sam. 12/mars/2005 18:10
par gansta93
Denis a écrit :Oui je l'ai fait avec DLLImporter , mais dans l'éditeur PB, aucune API n'a la synthaxe.
Un exemple du contraire : marque

Code : Tout sélectionner

SetupPromptReboot_(
et la syntaxe est dans la bare d'état.

Publié : sam. 12/mars/2005 18:13
par Le Soldat Inconnu
il s'agit du fichier "APIFunctionListing.txt" dans le dossier "compiler" de PB
La description de certaine fonction de l'API y est.

Donc c'est ce fichier qu'il faut compléter :wink: