Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1196 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Afficher le thème XP (sous XP) pour une vielle APP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher le thème XP (sous XP) pour une vielle APP

n°2153814
Scuriolus
Posté le 21-08-2012 à 20:05:39  profilanswer
 

Bonjour à tous,
 
Je souhaiterai donner une apparence un peut plus agréable à une veille application qui sert à piloter une machine.
Elle semble être écrite en C++ 5.0 et je n'ai pas accès au code source.
J'ai donc ajouté le fichier manifeste suivant dans le répertoire de l'exécutable :
Code :
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="Vieux.Prog.XP"
    type="win32"
/>
<description>Usinage</description>
<dependency>
 <dependentAssembly>
  <assemblyIdentity
   type="win32"
   name="Microsoft.Windows.Common-Controls"
   version="6.0.0.0"
   processorArchitecture="*"
   publicKeyToken="6595b64144ccf1df"
   language="*"
  />
 </dependentAssembly>
</dependency>
</assembly>
 
Sous Vista, cela fonctionne parfaitement. Le style est affiché dans toutes les conditions. En revanche, sous XP (sp3), les boutons qui possèdent une image sont affichés en style classique.
 
Quelqu'un a-t-il une idée de ce sur quoi il faut agir ?
 
Merci d'avance pour votre aide :)


Message édité par Scuriolus le 13-07-2013 à 10:48:04
mood
Publicité
Posté le 21-08-2012 à 20:05:39  profilanswer
 

n°2154037
tpierron
Posté le 23-08-2012 à 19:14:26  profilanswer
 

Hmm, c'est probablement dû à une limitation de XP. L'icône sur le bouton a probablement été rajouté en utilisant ce message :
 
http://msdn.microsoft.com/en-us/li [...] v=vs.85%29
 
La dll common control v6 de XP utilise le style classique pour dessiner le bouton (même si les styles personalisés sont activés). Pour utiliser le style personnalisé avec icône, il aurait fallu utiliser ce message : (edit: tu peux d'ailleurs voir que les boutons dans les coins utilisent bien le style personnalisé)
 
http://msdn.microsoft.com/en-us/li [...] v=vs.85%29
 
Vu que tu n'as pas le code, il n'y a probablement pas grand chose que tu puisses faire ....


Message édité par tpierron le 23-08-2012 à 19:15:49
n°2154090
Scuriolus
Posté le 24-08-2012 à 11:14:02  profilanswer
 

Bonjour Tpierron, et merci pour ta réponse,
 
De ce que je peux voir dans le code désassemblé, il semble bien utiliser BM_SETIMAGE (des fois avec IMAGE_BITMAP d'autres avec IMAGE_ICON).
 
Effectivement, à voir aussi les discutions sur les forums de programmation, l'ajout d'une image sur un bouton de style XP ne se fait pas simplement.
 
Comme Vista arrive à l'afficher correctement, est-ce qu'il est possible d'ajouter quelque chose dans le manifeste pour qu'XP utilise une DLL plus récente, ou je ne sais quoi, qui lui permettrait de passer cette limite ?

n°2154157
tpierron
Posté le 24-08-2012 à 15:18:47  profilanswer
 

Scuriolus a écrit :

Comme Vista arrive à l'afficher correctement, est-ce qu'il est possible d'ajouter quelque chose dans le manifeste pour qu'XP utilise une DLL plus récente, ou je ne sais quoi, qui lui permettrait de passer cette limite ?


 
Non, je pense qu'il n'y a pas grand chose que tu puisses faire à ce niveau. Les common controls ont une architecture à la con : il y a une partie utilisateur et une partie noyau. La partie utilisateur ne fait que l'interface avec le noyau (c'est pour ça que la DLL est minuscule). L'interaction/rendu est faite en grande partie dans le noyau. Donc simplement remplacer la DLL comctl32.dll ne suffira probablement pas, et ça va être d'autant plus la merde, que cette DLL est installé via Windows Side by Side (il n'existe évidemment aucun installeur officiel pour cette DLL).
 
Je suis aussi pratiquement sûr que même la DLL uxtheme.dll est incapable de corriger ce problème. Il doit y avoir un morceau de logique qui manque dans la gestion interne des boutons avec un BM_SETIMAGE.
 
Pour m'être battu pendant trop longtemps avec cette DLL, ça ne me surprends qu'à moitié cela dit...

n°2154193
Scuriolus
Posté le 24-08-2012 à 22:06:07  profilanswer
 

Merci pour ta réponse éclairée.
Je vais malheureusement laisser tomber cette idée d’embellissement et rester avec cette vielle interface grisonnante, c'est dommage  :(  
 
Merci pour ton aide  :)  

n°2154250
breizhbugs
Posté le 25-08-2012 à 18:46:31  profilanswer
 

C'est peut être (sûrement?) une grosse connerie qui demanderait beaucoup trop de boulot mais y aurait il moyen d'injecter une dll qui subclasserait les bouton pour les faire s'afficher de la bonne façon?
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx


---------------
Seul Google le sait...
n°2155184
Scuriolus
Posté le 31-08-2012 à 12:14:16  profilanswer
 

Merci pour l'idée mais cela me semble top compliqué pour mon niveau.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Afficher le thème XP (sous XP) pour une vielle APP

 

Sujets relatifs
Afficher texte durant execution d'une servletafficher le contenu d'une colonne
Windows XP SP3 : forger intégralement des paquetsComment faire pour afficher le nom de la personne connecter
[C] Quelle différences entre le langage C pour Win XP et Win CE 6.0 ?[BATCH] Afficher + logger une commande
Iompatibilité script entre Seven et XPAfficher variable dans textarea
Afficher aléatoirement des enfants d'une baliserécupérer une image sur un socket et l'afficher en plein écran
Plus de sujets relatifs à : Afficher le thème XP (sous XP) pour une vielle APP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR