Application.EnableVisualStyles();

Résolu
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 29 déc. 2004 à 12:27
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 - 2 janv. 2005 à 17:26
Dans le main de mon programme, je fais un Application.EnableVisualStyles(); Ce qui donne le style XP aux composants de mon programme (je fais une vérification pour être certain que l'utilisateur à bien XP ou supérieur). Ceci dit, même si l'utilisateur à XP, mais qu'il n'a pas de thème alors Application.EnableVisualStyles(); ne fait rien, ce qui me pose certain problèmes de design.

J'aurais donc besoin de savoir si l'utilisateur à un thème (ou si la méthode a correctement pu changer le style des composants).
Y'a t'il une solution ??
Merci d'avance.

22 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 19:28
bon, ok, j'ai rien dit, en plus elle etait pas dur à trouver celle là

IsThemeActive

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 19:31
et le bout de code qui va avec :

private const int FALSE = 0;
private const int TRUE  = 1;

[DllImport("UxTheme.dll")]
private static extern int IsThemeActive();


if(Environment.OSVersion.Version.Major >= 5 && Environment.OSVersion.Version.Minor >= 1)
{
if ( IsThemeActive() == TRUE )
MessageBox.Show("Themed !");
else
MessageBox.Show("Coq inside !");
}
else
{
MessageBox.Show("Non supporté !");
}


Cocoricoooooooo !!!!
coq
MVP Visual C#
3
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 14:14
tu peux aussi creer un fichier manifest :

http://www.mctainsh.com/Csharp/XpControlsInCS.aspx

[PUB] REGARDEZ MES SOURCES /PUB

:big)

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 14:18
NOMDEMONAPPLI.exe.manifest dans lequel tu met :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<dependency>
<dependentAssembly>

</dependentAssembly>
</dependency>



Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 14:19
heu autre chose tu a bien passe tes composant a flastyle = SYSTEM ???

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 14:21
une chtite fonction trouver sur le net qui va passer tous les controles d'une Form passer en argument en flastyle system :

/// <summary>
/// Search the control for button type control and set the FlatStyle
/// of these buttons to System. This method searches Recursively into
/// control within control. 
/// </summary>
/// Control to search children of

/// <example><code>
/// [C#]
/// 
/// Form1 f = new Form1();
/// //Passe a system toutes les propriete flatstyle de tout les objet de la form
/// FormatForWinXP(f);
/// 
///	
</example>
public static void FormatForWinXP(System.Windows.Forms.Control control)
{
foreach( System.Windows.Forms.Control ctrlChild in control.Controls )
{
// Set FlatStyle.System if it is a button type control
if(ctrlChild.GetType().BaseType == typeof(System.Windows.Forms.ButtonBase))
((System.Windows.Forms.ButtonBase)ctrlChild).FlatStyle = System.Windows.Forms.FlatStyle.System;
if(ctrlChild.GetType() == typeof(System.Windows.Forms.GroupBox))
((System.Windows.Forms.GroupBox)ctrlChild).FlatStyle = System.Windows.Forms.FlatStyle.System;
if(ctrlChild.GetType() == typeof(System.Windows.Forms.Label))
((System.Windows.Forms.Label)ctrlChild).FlatStyle = System.Windows.Forms.FlatStyle.System;

// Dive into the child controls if there are any
if(ctrlChild.Controls.Count > 0)
FormatForWinXP(ctrlChild);
}
}
</code>

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 14:26
le manifest peut etre evité en appelant DoEvents :

Application.EnableVisualStyles();
Application.DoEvents();
Application.Run(...


Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 14:35
mais y a qd meme pas une diff avec ou sans manifest ???

meme avec le doevents ???

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 14:42
il me semble que les 2 sont equivalents

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 14:47
dixit MSDN :

If you call DoEvents in your code, your application can handle the other events. For example, if you have a form that adds data to a ListBox and add DoEvents to your code, your form repaints when another window is dragged over it. If you remove DoEvents from your code, your form will not repaint until the click event handler of the button is finished executing.

Typically, you use this method in a loop to process messages



donc a priori ca dis juste a l'appli...c bon coco affiche maintenant ce qu'on te demande....

si g bien compris...
ca parle po du manifest...

par contre d'apres le lien que j'ai fourni plus haut y a un delta avec manifest et sans...
mais j'ai pas tester...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 15:04
remarque peut être bien qu'il y a une difference je ne sais pas trop
j'avais juste vu ce workaround au hasard des sources

sachant que la premiere chose que je fais sur XP est de tout mettre en oldstyle, mes applis ne sont jamais prévue pour avoir le style xp ^^

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 16:06
monsieur coq est vieux jeu...
il n'aime pas les boutons xp ???

:o))))

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 16:11
lol

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 déc. 2004 à 19:01
Je ne sais pas si on c'est bien compris (voleur d'idée de pub) mais en fait je fais actuellement ceci dans mon code :


/* The program is running under Windows XP or higher */
if(Environment.OSVersion.Version.Major >= 5)
{
Application.EnableVisualStyles();
Application.DoEvents();
}



Si on a deux utilisateurs, tout deux sous XP mais l'un avec les thèmes activés et l'autre pas, et bien ils ne voient pas la même chose à l'écran, ce qui me pose de problème niveau design...

Donc est ce que je peux savoir si le user à actuellement un thème ou pas?
Merci de vos réponse en tout cas, je jetterai un oeil sur cette histoire de manifest...
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 déc. 2004 à 19:07
haaa...

ya encore des gens qui installe des themes ???

dingue ca :o))))
heu ben oui on c'est peut etre emporter....sur ce coup la...

nop je sais po...
pas eu le cas...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 19:13
en fait je pense que le style "old" est un theme comme les autres, donc je ne vois pas trop comment faire la difference

ah sinon : ne teste pas que le Major pour la version de l'os
2000 = 5.0
XP = 5.1

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 déc. 2004 à 21:38
Il est absolument génial ce coq, merci pour le coup de main (faudra absolument que je regarde ces APIS, j'ai toujours un temps de retard :) )

Arthenius : Ben moi j'ai un thème, le seul que je trouve pas moche, Windows XP Style (le silver)... alors tu vois, ça existe encore les gens avec les thèmes lol... ceci dit, j'ai le menu démarré et tout le reste original... bien sur !

En tout cas merci beaucoup aux deux !
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 déc. 2004 à 22:54
lol
de rien

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
30 déc. 2004 à 09:45
mouarff....

a c aussi considerer comme un theme ca....(ben ben je l'ai aussi)

moi je pensais au truc moche qui existait sous 98 avec des icones pourri sur le sport etc...

trop fort coq...

[PUB]MES sources sont les plus bo/PUB

:o)))

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
1 janv. 2005 à 23:40
Le seul truc que j'aimerais comprendre, c'est que tu déclare ta fonction entière (int) et que tu la vérifi booléennement, et en plus avec le true en majuscule ...

Je suis perdu là :P

Eric ;)
0
Rejoignez-nous