Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ? [ Windows / GUI ] (uaip)

samedi 22 novembre 2008 à 16:06:56 | [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ?

uaip

Bonjour à tous,
Ma question est toute bête (je pense) pourtant je n'y arrive pas.
En gros, j'ai créé une fenêtre utilisant l'API Win32, et je lui ai mis le style XP en incluant un fichier "manifest.xml". Depuis cette fenêtre, plusieurs boites de dialogue peuvent être ouvertes. Elles aussi ont donc le style XP.
Comment faire pour ne pas attribuer le style XP à l'une des boites de dialogue ? (autrement dit, pour qu'elle reste au style Windows 9*).
Ma recherche dans le forum n'a rien donné...
Merci d'avance.

Cordialement, uaip.

samedi 22 novembre 2008 à 17:34:55 | Re : [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ?

jeffy131

C'est une FAQ Win32 api
Voir sur le newsgroup professionnel des apis win32 :
news://194.177.96.26/fr.comp.os.ms-windows.programmation
(TA)

lundi 24 novembre 2008 à 23:06:17 | Re : [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ?

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Si tu veux que les controles d'une boîte de dialogue n'aient pas le syle XP il suffit d'utiliser SetWindowTheme() dans une boucle à la fin du traitement de WM_INITDIALOG. Exemple:
case WM_INITDIALOG:
    //...
    HWND hwndchild;
    hwndchild=FindWindowEx(hDlg,0,0,0);
    do
    {   
        SetWindowTheme(hwndchild,L"",L"");
        hwndchild=FindWindowEx(hDlg,hwndchild,0,0);
    }while(hwndchild);
    //...

Pour que ce code fonctionne il faut inclure uxtheme.h et lier uxtheme.lib au projet.

mardi 25 novembre 2008 à 00:01:35 | Re : [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ?

uaip

Salut, salut

jeffy131, je suis allé faire un tour, et je n'ai pas trouvé mon bonheur
racpp, en effet ça correspond à ce que je cherchais, cependant... ça ne marche pas.
Suite à ton bout de code, j'ai cherché des infos sur ces fonctions, j'ai compris comment les utiliser, etc, le programme compile, mais rien ne passe.
Je suis allé visiter ceci :
http://msdn.microsoft.com/en-us/library/bb759827(VS.85).aspx
http://msdn.microsoft.com/fr-fr/library/ms649781(VS.85).aspx
(et d'autres liens qui en découlent)
J'ai effectué tous les tests, comme par exemple (je cite)
hwndButton = CreateWindow (TEXT ("button"), ...);
if (hwndButton)
{
SetWindowTheme (hwndButton, TEXT (" "), TEXT (" "));
}

Il est "tout bête" mais rien ne se passe.
J'ai remplacé mon manifest par tous ceux qu'ils proposaient (même si c'est absurde pour certains, autant trop essayer que pas assez).
Je me doute bien que le problème vient de moi (et non de la machine) mais je ne sais pas d'où exactement...



Cordialement, uaip.

mardi 25 novembre 2008 à 00:14:58 | Re : [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ?

racpp

Administrateur CodeS-SourceS
Je viens de faire un test chez moi et ça marche parfaitement. J'ai fait une fenêtre principale et une boite de dialogue fille. Grâce au bout de code mentionné tous les controles de la boite ont le style classique alors que ceux de la fenêtre mère ont le style XP.
As-tu testé la valeur de retour de SetWindowTheme()? Elle doit retourner 0 en cas de succès.


mardi 25 novembre 2008 à 00:19:54 | Re : [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ?

racpp

Administrateur CodeS-SourceS
Tu utilises quel compilateur?


mardi 25 novembre 2008 à 14:06:00 | Re : [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ?

uaip

Olah ! Et bien écoute, je m'apprétais à t'expliquer comment j'avais procédé et ce qui ne marchait pas, mais avant d'écrire mon commentaire j'ai recompilé vite fait (je sais pas trop pourquoi d'ailleurs) et... ça fonctionne.
Alors là j'avoue ne pas comprendre. J'ai essayé pendant une bonne demi-heure hier, rien à faire. Et là, j'ouvre le compilo, je compile sans avoir touché au code et ça fonctionne.
Hier je ne comprenais pas pourquoi ça ne fonctionnait pas (vu que les commandes sont relativement simples à comprendre (quand on a le code sous les yeux ^^)) mais là je ne comprends pourquoi ça refonctionne.
Je vais estimer que c'est bon, alors.

Sinon pour infos, j'utilise Code::Blocks, j'avais donc linké libuxtheme.a et j'ai du rajouter #define _WIN32_WINNT 0x0501 pour pouvoir utiliser SetWindowTheme();
(je ne sais pas trop si c'est "dangereux" ou pas).
Un grand merci en tout cas

Cordialement, uaip.



Cette discussion est classé dans : style, xp, fenêtre, win32, dialogue


Répondre à ce message

Sujets en rapport avec ce message

Problème d'onglets avec le style XP [ par MasterShadows ] Salut à tous,voilà le problème, je suis en train d'écrire un p'tit programme à base d'onglets, alors voilà ce que j'ai fait :En prenant l'éditeur de r Lancer un prog en meme temps que la boîte de dialogue de login d'XP ou de 2K [ par Cyberdevil ] J'aimerai savoir comment (car je sais que c possible lol) lancer un progz au démarrage de windows (donc sur un système NT donc 2K Xp etc..) en meme te Mettre une fenêtre en premier plan [ par jipp ] Hey, encore un novice en MFC.Je souhaitrai connaitre le code qui permette de mettre en premier plan une fenêtre.Concrétement, j'ai un SDI avec des boi Ouvrir une deuxième fenêtre Win32 sous Dev-C++ [ par olivier007700 ] Bonjour, Je souhaite ouvrir, depuis une première fenêtre, une deuxième fenêtre tout à fait classique.Quel est le code le plus simple pour ce faire ?Me Style XP [ par Crazy_Joe ] Bonjour, J'ai cherché un peu partout dans le forum pensant que ça aurait été une question fréquente mais non, je n'ai rien trouvé. J'aimerais appliqu Style Xp [ par yoyo269 ] Salut à tous,je suis actuellement sous Dev-C++ 4.9.9.2 et je souhaiterais qu'un de mes programmes ait le style XP.J'arrive à obtenir le style XP sans simulation de dialogue sur win32 [ par wydadi001 ] bonjour,pour un programme de simulation de dialogue entre l utilisateur et un robot par exemple il me faut une fenetre windows programmé en language C problème affichage fenêtres API WIN32 [ par yepla75 ] Bonjour,Je suis nouveau et j'espère poster au bon endroit...Je débute la programmation C / API WIN32 et je veux faire un programme qui affiche une fen API win32 problème d'affichage [ par rachid12450 ] Ma question est celle d'un débutant API win32 Voilà j'ai une fenêtre de dialogue avec DialogBox à l'aide de l'éditeur des ressources VC++ j'y ai i Affichage de données traités [ par rachid1245 ] Bonjour à tousvoilà , je crée une boîte de dialogue par DialogBox comme fenêtre enfant d'une fenêtre principalevoici le code à peu près:<span lang="EN


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.