IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Problème d'affichage des boutons [MFC]


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Points : 56
    Points
    56
    Par défaut Problème d'affichage des boutons [MFC]
    Bonjour à tous,

    Ultime question d'ordre esthétique et mon projet sera bouclé.

    Je suis sous visual studio 2010 et je fais un projet en MFC. Tout allé bien les boutons et la barre de progression en style win7. Mais je ne sais pas trop ce que j'ai touché mais l'affichage des boutons est maintenant très basic (un rectangle sans bout arrondit).

    Je pense que j'ai déclenché ça quand j'ai choisit dans les propriétés de mon projet "Utiliser le jeu de caractères multioctet (MBCS)" mais je ne peux pas le confirmer.

    Voici un rendu de ma fenêtre sous visual (à gauche) et une fois compilé (à droite) :


    http://www.imagup.com/data/1108981495.html

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,
    c'est un projet natif en Visual 2010 ?
    si oui , tu as cette séquence dans InitInstance ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // InitCommonControlsEx() est requis sur Windows XP si le manifeste de l'application
    	// spécifie l'utilisation de ComCtl32.dll version 6 ou ultérieure pour activer les
    	// styles visuels.  Dans le cas contraire, la création de fenêtres échouera.
    	INITCOMMONCONTROLSEX InitCtrls;
    	InitCtrls.dwSize = sizeof(InitCtrls);
    	// À définir pour inclure toutes les classes de contrôles communs à utiliser
    	// dans votre application.
    	InitCtrls.dwICC = ICC_WIN95_CLASSES;
    	InitCommonControlsEx(&InitCtrls);
    sinon tu avais un manifeste et tu la supprimmé , voir aussi les paramètres du projet dans
    éditeur de liens /Fichier manifeste.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Points : 56
    Points
    56
    Par défaut
    Alors c'est bien un projet natif sous VS2010 et j'ai bien le code que tu décris (je suis sous seven je ne sais pas si ça peut aider) et dans les fichiers manifestes je t'avouerai que je ne comprend pas tout voilà comment cela est configuré :



    Après si ça peut aider ça j'ai aussi rajouté un fichier source .cpp et un fichier d'entete .h dans mon projet ( le .cpp est codé sous code block avec des string d'où le changement de l'option "Utiliser le jeu de caractères multioctet (MBCS)" et mon .h est tout petit le voici dans son intégralité)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void CopyFiles (int Drive, int DateInput);
    Donc quand j'ai fait toutes ces modifs j'ai observé le changement d'aspect de mes boutons et je ne vois pas ce qui a changé pour lui

  4. #4
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Certains contrôles peuvent subir une modifications de style selon que ton projet est en ANSI ou Unicode. Tente de le remettre en Unicode.
    Sinon il doit s'agir du manifest comme te l'a dit farscape.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Points : 56
    Points
    56
    Par défaut
    je viens de faire un test avec un nouveau projet et c'est bien ça !

    Le passage de Unicode à Multioctet fait perdre le desgin win7 des contrôles!

    Le problème c'est que si je passe en UNICODE j'ai plein d'erreur du style
    L'argument de type const char* est incompatible avec le paramètre de type LPCWSTR
    ou bien encore
    Aucune instance du constructeur std::basic_string...
    et donc ces erreurs ne me permettent plus d'utiliser les fonctions Create Directory, FindFirstFile, GetFileAttributes

  6. #6
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Pour certains contrôles (tels que le progressbar) tu n'auras pas d'autres choix que de passer en Unicode si tu veux le style win7/vista, il me semble.

    En attendant essaye de rajouter un manifest supplémentaire contenant le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="WINWORD" type="win32" />
        <dependency>
            <dependentAssembly>
                <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" />
            </dependentAssembly>
        </dependency>
     </assembly>
    Ça réglera peut-être tes problèmes. Ça marche pour moi sous VS2008, donc je ne te garantis pas que ça marche sous VS2010.

    (plus d'infos ici)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Points : 56
    Points
    56
    Par défaut
    Ok merci pour ces infos.

    Je pense que je vais donc essayer de résoudre les conflits que j'ai avec l'UNICODE pour que tout cela fonctionne bien étant donnée que je suis débutant et que les manifestes me font peur je sais pas où mettre ton code.

    (je cocherai Résolu si j'y arrive)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Points : 56
    Points
    56
    Par défaut Modification Style Controles UNICODE/MBCS
    Bon ben je n'y arrive pas

    je n'ai pourtant plus de soulignage en rouge dans mon code mais il ne compile pas, il me dit memory leak...

    voilà comment j'ai essayé de contourné mes problèmes en UNICODE :

    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindFirstFile("D:\\*.*", &FoundDATAFolder);
    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindFirstFile(LPCWSTR("D:\\*.*"), &FoundDATAFolder);
    et le plus bourrin :

    Avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string(FoundBmp.cFileName);
    BmpFound = FoundBmp.cFileName;
    strcat_s(ScrFolderBmp, 1024, BmpFound);
    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ostringstream ossDATATxt; 
    ossBmpFound << FoundBmp.cFileName;
    istringstream issBmpFound (ossBmpFound.str());
    issBmpFound  >> BmpFound ;
    strcat_s(ScrFolderBmp, 1024, BmpFound);

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Points : 56
    Points
    56
    Par défaut
    Yes !!!

    J'y suis arrivé. Donc pour solutionner mon problème j'ai suivit les conseils de theGzD en repassant mon projet en UNICODE à la place de MBCS.

    Ensuite j'ai corrigé toutes les erreurs en utilisant à la place de , à la place de ect ect

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Graphique avec matplotlib, probléme d'affichage des boutons
    Par astragoth dans le forum Général Python
    Réponses: 0
    Dernier message: 08/04/2010, 08h27
  2. Problème d'affichage des bouton et image de fond
    Par kartouch dans le forum Applets
    Réponses: 2
    Dernier message: 16/12/2008, 14h23
  3. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo