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

 C Discussion :

Création IHM en C


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut Création IHM en C
    Bonjour,

    Je dois coder une IHM pour un projet. Pour le langage, je n'ai que Visual studio sur l'un de mes PC et de toute manière il me faut de préférence du C pour la suite des travaux.
    Le problème est que j'ai très très peu de connaissances dans ces langages, je voudrais donc savoir si certains auraient des codes ressemblant à ce que je dois faire ...

    C'est un projet totalement confidentiel, je vais donc utiliser d'autres termes pour définir l'IHM attendue.

    Je précise également que j'ai étudié la page "API Windows en C", très intéressante, mais comme je vous l'ai dit, à part copier-coller et modifier quelques valeurs je ne sais pas faire grand chose.

    L'objectif est le suivant :

    - Une barre de recherche permettant de rechercher un fichier et le sélectionner (pas le lire ou l’afficher).

    - Ouverture d'une fenêtre avec un premier choix entre deux boutons A et B. Lors de la sélection, on pourra observer que le bouton sélectionné sera grisé. Ensuite, il y aura encore 2 autres choix, entre deux boutons.

    Ici, je pense que si j'arrive à faire cela ce sera déjà bien.

    Ensuite, lors de l'activation des boutons :

    Les premiers servent à indiquer quelle lettre l'application va devoir rechercher dans le fichier choisis. Donc plus précisément chercher soit A soit B dans le NOM d'un des fichiers contenus dans le fichier parent choisis.

    Ensuite, le reste se complique un peu ...

    Mon objectif pour l'instant est de créer la barre de recherche, et les boutons. Ensuite, j'aimerai m'occuper des évènements à créer.

    Je suis ouvert à toute aide / propositions de codes.

    Si certains ont des propositions de développement sur demande, vous pouvez me contacter par message privé pour toutes collaborations.

    Merci pour votre attention et n’hésitez pas pour toute question.

    Cordialement,

    Perot.

  2. #2
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Oublie la WinApi/ Win32. La seule bibliothèque C connue avec 1 bonne documentation c'est GTK : https://www.gtk.org/

    Par contre, c'est du C, mais ils ont recréés la notion d'objet (<- la dernière fois que j'ai y touché c'était en 2006 donc peut-être que cela à changer)
    En 2016, j'ai vu 1 gars développait avec : cela te créer 1 arborescence avec pleins de fichiers pour exécuter ton programme (peut-être que c'est dû à l'activation des thèmes )

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    Malheureusement, je n'ai pas le choix d'utiliser cet API ... Par rapport au matériel et au projet.


    Merci en tout cas pour ta réponse et bonne journée.

  4. #4
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Si tu dois rester avec la WinApi/ Win32 , alors il faut utiliser l'outil graphique WYSIWYG de Visual C++, et donc peut-être revenir sur 1 version gratuite de 2010.
    Parce que les nouvelles versions (2015, 2017, 2019 et même peut-être 2013) je ne suis pas sûr qu'elle le propose encore (ou alors passer encore par 1 module à installer)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    Effectivement, je suis sur la version 2010.

  6. #6
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Il faut donc que tu apprennes 1 bibliothèque sortie avant la norme C99 et cela ne te servira quasi à rien (éventuellement les encodages de caractères, la programmation événementielle et 2 - 3 trucs)

    Pour des exemples, il faut chercher et comprendre : pas d'autre choix
    Et en + lorsque tu écris "une barre de recherche", attends-toi à déchanter fortement C'est 1 bibliothèque sortie dans les années 90 (et mise à jour certes), mais sans thème, sans complétion, sans "soft loading" ... la localisation c'est compliquée, la gestion des "attentes passives" ("thread") c'est à la main, ...
    Et en +, coder en C, qui est 1 langage qu'il faut de l'expérience (pointeur, cast, sentinelle, ...)

    Je n'ai pas de conseil sauf de te faire fortement aidé par quelqu'un en présentiel ... ou d'abandonner (tu perds ton temps si c'est 1 projet "formation")

    déjà le Visual 2010 augure des dépendance qui ne sont pas présentes sous Windows 8/ 10, des problèmes de versions (cela peut-être simplement visuel, 1 bouton qui se barre par exemple)

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    A vrai dire après quelques recherches j'ai pu créer mes boutons de façon basique.

    La difficulté que je rencontre maintenant est de pouvoir sélectionner un fichier, après avoir appuyé sur un bouton.

  8. #8
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Il n'y a aucune difficulté : CFileDialog, documentation Microsoft

    Édit : en C, c'est la fonction GetOpenFileName (ANSI ou unicode), documentation Microsoft
    Open and Save As Dialog Boxes, documentation Microsoft

    Parce que, je peux te garantir que coder 1 boite de dialogue qui liste les fichiers, avec 1 ergonomie correcte, cela se fait bien, mais c'est loooooooooooooong
    Surtout que la majorité des utilisateurs habitués à Windows veulent la fenêtre de sélection de Windows.

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 8 963
    Points : 24 568
    Points
    24 568
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Perot Voir le message
    La difficulté que je rencontre maintenant est de pouvoir sélectionner un fichier, après avoir appuyé sur un bouton.
    En général toutes les IHM possèdent un module type "browser" ou "FileDialog" qui fait tout tout seul...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    Merci pour toutes vos réponses.

    Je vais reprendre ce travail dès lundi et voir ce que je peux faire.

    Bonne soirée

  11. #11
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 242
    Points : 535
    Points
    535
    Par défaut
    Salut,

    Citation Envoyé par foetus Voir le message
    déjà le Visual 2010 augure des dépendance qui ne sont pas présentes sous Windows 8/ 10, des problèmes de versions (cela peut-être simplement visuel, 1 bouton qui se barre par exemple)
    Ben surtout, si je ne me trompe pas, Visual C++ 2010 ne comprend que le C version C89 ! Pour quelqu'un d’inexpérimenté, ce sera de la torture.

    Je conseille codeblocks avec mingw-w64 pour le code métier en C et un tout petit peu de C++ pour l'interface avec le framework wxwidget. D'ailleurs avec le plugin wxsmith livré avec codeblocks faire une ihm c'est presque un jeu d'enfant.

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Effectivement j'ai du mal à atteindre mon objectif, mais j'avance tout de même.

    J'ai créé mon interface, tous mes boutons etc. Lorsque je clique sur le bouton sélectionner, j'ai bien l’arborescence qui s'affiche et je peux sélectionner le dossier désiré. Ensuite, le chemin de ce dossier est affiché.

    Cette étape est donc terminée.

    A présent, je m'occupe de deux autres boutons, que je vais appeler A et B. Si je choisis A, je souhaite que celui-ci soit mis en surbrillance lorsque je clique dessus.

    Après quelques recherches, j'ai trouvé la constante SETSTATE BM qui doit normalement être utilisée. Le problème c'est que je ne comprends pas comment l'utiliser.

    Ces deux boutons sont créés via "CreateWindow" et ont le type "PUSHBUTTON".

    Je continue mes recherches, mais si quelqu'un a une idée je ne suis pas contre.

  13. #13
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Citation Envoyé par Perot Voir le message
    j'ai trouvé la constante SETSTATE BM qui doit normalement être utilisée.
    Il faut lire la documentation Microsoft : BM_SETSTATE message (<- en anglais)

    BM_ veut dire "Button Message" (tu as aussi WM_ ("Windows"), EM_ par exemple)
    Et qui dit message, dit la fonction SendMessage. Et la documentation te donne tout :
    • le premier paramètre - le handle du bouton
    • le deuxième paramètre - le message
    • le troisième, wParam - 1 booléen (*)
    • le quatrième, lParam - rien



    Donc SendMessage(hwndButton, BM_SETSTATE, 1, 0); par exemple.
    Appel à mettre là où tu as décidé qu'il soit.


    * : En C, 0 (zéro) c'est faux. Toutes les autres valeurs sont vraies.

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    J'ai justement trouvé cette constante dans le lien que tu as donné, mais je n'avais pas bien compris son utilisation avant ta merveilleuse explication.

    J'ai donc écris dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    case WM_COMMAND
     
              if (LOWORD(wParam) == ID_A))
     
                    SendMessage(hwnd, BM_SETSTATE, 1 , 0);
     
     
               if (LOWORD(wParam) == ID_B))
     
                    SendMessage(hwnd, BM_SETSTATE, 1 , 0);
    (Je ne sais pas si c'est bien d'enchaîner les "if" comme ceci)

    Merci !

    PS : en m'excusant pour le code, j'aurai aimé pouvoir en montrer un peu plus

  15. #15
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Citation Envoyé par Perot Voir le message
    (Je ne sais pas si c'est bien d'enchaîner les "if" comme ceci)
    Tu pourrais stocker LOWORD(wParam) dans 1 variable de type WORD (*)
    Et après tu as 3 choix :
    • 2 if comme tu l'as fait
    • if() { } else if() { } - tu mets 1 des tests dans 1 sinon. Techniquement, cela te fait économiser 1 test lorsque le premier test est vrai - donc rien de notable.
    • 1 switch. En théorie avec 1 type WORD cela devrait fonctionner - mais comme tu as 2 valeurs, 1 switch demande + de lignes. Il faut mieux compacter le code pour qu'il reste lisible.

    Donc rien de fou


    * : comme tu es dans 1 switch , il faut soit la définir avant, soit créer 1 bloc entre accolades { /* ton code ici */ }.

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    Très bien.

    Par contre, le rendu ne correspond pas tout à fait à ce que je veux.

    Lorsque je clique sur le bouton B par exemple, il se mets en "surbrillance", mais j'aimerais qu'il reste dans cet état jusqu'à la validation.

    En fait, après le choix entre les deux boutons A et B, il y a ensuite un autre choix entre deux boutons 1 et 2.

    Ce que je veux, c'est que le bouton choisi, par exemple B, reste en surbrillance même lorsque j'ai appuyé sur les boutons 1 ou 2.

    Je me suis dit, et si je fais un "if" dans le "if" ?

    C'est à dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    if (WORD == ID_B)
     
        SendMessage(hwnd, BM_SETSTATE, 1, 0);
     
                   if (WORD == ID_1)
     
                            SendMessage(hwnd, BM_SETSTATE, 1, 0);

    Cela ne fonctionne pas, mais j'aimerai savoir si je suis sur la bonne piste, ou si je dois partir sur autre chose.

    Je tiens à te remercier pour ton temps donné.

  17. #17
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Citation Envoyé par Perot Voir le message
    Lorsque je clique sur le bouton B par exemple, il se mets en "surbrillance", mais j'aimerais qu'il reste dans cet état jusqu'à la validation.
    Il faut apprendre comment Windows fonctionne et là tu vas commencer à te prendre la tête pour gérer tous "les cas possibles"

    Donc (je peux me tromper ), lorsque tu affiches la fenêtre fille de sélection, ta fenêtre principale perd le focus et donc elle doit supprimer l'état "pressé" que tu as mis.
    Donc il faut soit
    • remettre cet état à la fermeture de la fenêtre fille de sélection - trouver le bon endroit qui "catche" la fermeture
    • peut-être définir l'ordre de priorité de tes boutons et ainsi, lors de la fermeture de la fenêtre principale, elle donne le focus au bouton "par défaut que tu as défini" - mais il faudra changer cet ordre à l'exécution pour le bouton cliqué ... si c'est possible
    • je ne sais pas ... enfin si j'ai des idées mais c'est trop compliqué et je ne connais pas ton code

    Attention, il a des chances qu'il ait 2 états : l'état "pressé" et l'état "par défaut"
    L'état "par défaut" c'est l'état dans lequel il y a 1 "bord" à l'intérieur de ton bouton.

    Citation Envoyé par Perot Voir le message
    Je me suis dit, et si je fais un "if" dans le "if" ?
    En C, si tu te ne définis pas 1 bloc entre accolades { /* ton code ici */ }, 1 seule instruction sera prise pour le if.
    Donc tu as codé 2 if séparés

    Comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        if (WORD == ID_B) {
            SendMessage(hwnd, BM_SETSTATE, 1, 0);
     
            if (WORD == ID_1) {
                SendMessage(hwnd, BM_SETSTATE, 1, 0);
            }
        }

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse.

    Je vais voir tout cela demain matin.

    Si ce n'est pas possible, je ferais autrement, comme afficher un message lors de l'appui du bouton. Je pense que ce sera plus simple.

    Bonne soirée

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2021
    Messages : 38
    Points : 4
    Points
    4
    Par défaut
    Bonjour.


    J'ai essayé de faire ce que j'ai dis hier.

    Voici une partie de mon code pour la création des fenêtres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    case WM_CREATE:
    {
     
     
    hbrFond=CreateSolidBrush(RGB(124,164,224)); 
     
    CreateWindow(TEXT("button"), TEXT("Sélectionner"),WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 255, 95, 100, 30, hwnd, (HMENU)SELECTDOSSIER, NULL, NULL);
     
    		hEdit = CreateWindow("edit", "", WS_VISIBLE | WS_CHILD | ES_MULTILINE | ES_WANTRETURN | WS_HSCROLL, 150, 130, 300, 30, hwnd, NULL, hinst, NULL);
    		hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
    		SendMessage(hEdit, WM_SETFONT, (UINT)hFont, TRUE);
    		SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(5,5));
     
     
    CreateWindow(TEXT("button"), TEXT("BASE"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 300, 185, 100, 30, hwnd, (HMENU)ID_BASE, NULL, NULL);
     
    hEditD = CreateWindow("edit", "", WS_VISIBLE | WS_CHILD | ES_MULTILINE | ES_WANTRETURN | WS_HSCROLL, 335, 230, 50, 30, hwnd, NULL, hinst, NULL);
    		hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
    		SendMessage(hEdit, WM_SETFONT, (UINT)hFont, TRUE);
    		SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(5,5));
     
     
    CreateWindow(TEXT("button"), TEXT("RESSOURCE"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 190, 185, 100, 30, hwnd, (HMENU)ID_RESSOURCE, NULL, NULL);
     
    hEditE = CreateWindow("edit", "", WS_VISIBLE | WS_CHILD | ES_MULTILINE | ES_WANTRETURN | WS_HSCROLL, 225, 230, 50, 30, hwnd, NULL, hinst, NULL);
    		hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
    		SendMessage(hEdit, WM_SETFONT, (UINT)hFont, TRUE);
    		SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(5,5));
     
     
    CreateWindow(TEXT("button"), TEXT("****"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 300, 275, 100, 30, hwnd, (HMENU)ID_***, NULL, NULL);
     
     
     
    CreateWindow(TEXT("button"), TEXT("****"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 190, 275, 100, 50, hwnd, (HMENU)ID_**, NULL, NULL);
     
     
    CreateWindow(TEXT("button"), TEXT("Valider"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 255, 400, 100, 50, hwnd, (HMENU)VALIDER, NULL, NULL);
     
     
    return 0;
    }

    Ensuite, lorsque j'appuie sur le bouton "ressource", je veux afficher du texte pour montrer que le bouton est "sélectionné". J'ai également ajouté une variable texte, mais c'est pour une autre utilité ...

    Cela active bien la "barre de texte", mais il n'y a pas de texte ... Voici le code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    case WM_COMMAND:
     
     
     
    		if(LOWORD(wParam) == ID_RESSOURCE)
     
    		{
     
    		char texte[]="Ressource";
    		SendMessage(hEditE, WM_SETTEXT, 0, (long)"Ressources choisies");
     
    		}

  20. #20
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Impossible de répondre et c'est à ce moment qu'il faut débugger ton application :
    • Utiliser le bon cast c'est LPARAM et non long
    • forcer le rafraîchissement de la fenêtre et/ ou de la zone d'édition
    • vérifier que tu as le bon "handle"
    • tester le retour de SendMessage - programmation défensive
    • catcher le message WM_GETTEXT pour savoir ce que tu as dans ta zone d'édition

    Et ensuite, c'est peut-être 1 problème d'allocation de chaîne et il faut faire 1 allocation et éviter les variables locales. Mais avec la WinApi je ne sais plus comment faire

    et à chaque problème, c'est à peu près ce que tu vas faire à chaque fois.
    Il faut apprendre ton IDE, et mettre des points d'arrêt pour voir ce qu'il y a dans les variables au bon moment.
    Ce n'est pas 1 application en ligne de commande, et afficher des messages c'est possible mais c'est compliqué

Discussions similaires

  1. Modélisation 1ère étape de la création d'IHM Leonardi
    Par Lucas Panny dans le forum W4 Express
    Réponses: 2
    Dernier message: 26/07/2007, 09h29
  2. [OpenOffice][Texte] Création d'une TOC sans IHM
    Par lekekoo dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 25/05/2007, 16h09
  3. création d'IHM java en XML
    Par sglon dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 10/04/2007, 05h43
  4. IHM : création Dataset typé
    Par cDotNet dans le forum Windows Forms
    Réponses: 9
    Dernier message: 29/01/2007, 17h29
  5. Conseils/docs sur la création d'ihm
    Par hellbilly dans le forum Windows
    Réponses: 3
    Dernier message: 19/09/2005, 21h53

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