Aide MUI

15 sujets de 1 à 15 (sur un total de 15)

  • Vince

      #4359

      Bonsoir, grace à l’exemple sur Guru Meditation j’essaie de comprendre le fonctionnement des custom class MUI (sous MOS).

      En effet, j’ai un ancien programme 68K plein de MUIM_Application_ReturnID que j’aimerai refaire avec dispatcher.

      Si j’arrive bien à ouvrir ma fenêtre principale contenant le MCC qui comprend un boutton dont le clic est géré par le dispatcher. Je voudrais ouvrir une autre fenetre à partir de la méthode appelé lors du clic du boutton.

      J’ai essayé :

      //WI_compte = DoSuperNew(cl, obj,

      //WI_compte = WindowObject,

      WI_compte = NewObject(cl,NULL,

      MUIA_Window_Title, « Compte »,

      MUIA_HelpNode, « WI_compte »,

      MUIA_Window_ID, MAKE_ID(‘3’, ‘W’, ‘I’, ‘N’),

      WindowContents, GROUP_ROOT_3,

      End;

      Et dès le : SetAttrs(WI_compte, MUIA_Window_Open, TRUE, TAG_END);

      je n’obtiens que des locks ou rien mais pas de fenêtre…

      Si quelqu’un pouvait m’expliquer …

      Merci d’avance.

      Rmais96

        #75670

        Salut,

        1) Sur quelle methode du dispatcher de ta MCC est appelé le « SetAttrs » sensé ouvrir une second fenêtre ?

        2) Si comme je le suppose WI_compte est l’instance de ta fenêtre principale (déjà ouverte), est-ce bien une seconde instance de ta MCC (nommée aussi WI_compte) que tu essaies d’ouvrir avec le « SetAttrs » ?

        3) Où est créée la second instance de ta MCC ? Dans le « main » de ton programme ?

        A plus.

        Vince

          #75671

          Re: Aide MUI

          par Rmais96 le 27/1/2007 10:36:36

          Salut,

          1) Sur quelle methode du dispatcher de ta MCC est appelé le « SetAttrs » sensé ouvrir une second fenêtre ?

          c’est une méthode qui répond au clic sur un boutton (pas dans un new ou autre)

          2) Si comme je le suppose WI_compte est l’instance de ta fenêtre principale (déjà ouverte), est-ce bien une seconde instance de ta MCC (nommée aussi WI_compte) que tu essaies d’ouvrir avec le « SetAttrs » ?

          WI_compte est une instance de la fenêtre que je veux ouvrir dans une instance de ma MCC.

          3) Où est créée la second instance de ta MCC ? Dans le « main » de ton programme ?

          Le main de mon programme n’ouvre qu’une instance.

          A plus.

          Merci de ton aide.

          adrenochrome

            #75672

            2 ptites pistes :

            – « cl » c’est bien une custom class de type WindowObject ? (si la reponse est non dans ce cas la bonne ligne c’est « WI_compte = WindowObject, »)

            – tu as bien attache ta fenetre a l’ApplicationObject avec un OM_ADDMEMBER ?

            – le contenu de ta fenetre est-il ok ? (essaye deja d’afficher ton GROUP_ROOT_3 dans la fenetre principal pour voir)

            – MuiSDK developer/docs/muidev.guide, paragraphe « dynamic object linking » lien « windows »

            Vince

              #75673

              Re: Aide MUI

              par adrenochrome le 27/1/2007 13:12:47

              2 ptites pistes :

              – « cl » c’est bien une custom class de type WindowObject ? (si la reponse est non dans ce cas la bonne ligne c’est « WI_compte = WindowObject, »)

              Non, IClass en entrée du dispatcher….

              – tu as bien attache ta fenetre a l’ApplicationObject avec un OM_ADDMEMBER ?

              oui, je passe l’application par le userdata de la IClass en entréé mais peut être peux ton récupperrer l’applicationobject dans la MCC sans passer le pointeur par userdata ?

              – le contenu de ta fenetre est-il ok ? (essaye deja d’afficher ton GROUP_ROOT_3 dans la fenetre principal pour voir)

              Oui, ça c’est ok.

              – MuiSDK developer/docs/muidev.guide, paragraphe « dynamic object linking » lien « windows »

              Celui qui est dans MUI38Dev (pas le chapitre en question) ? Je n’en est pas trouvé d’autre si tu as plus récent.

              Merci pour l’aide.

              adrenochrome

                #75674

                « peux ton récupperrer l’applicationobject dans la MCC sans passer le pointeur par userdata ? »

                tu fais un get sur MUIA_ApplicationObject

                « Celui qui est dans MUI38Dev (pas le chapitre en question) ? Je n’en est pas trouvé d’autre si tu as plus récent. »

                pourtant…

                http://main.aminet.net/pub/aminet/dev/mui/mui38dev.lha

                mui/developer/docs/muidev.guide

                |


                |Getting started ...

                | ...

                |Layout...

                | ...

                |Building an application...

                | ...

                |Dynamic object linking...

                | overview

                | windows <- !!! | groups

                anonyme

                  #75675

                  p’tite question… c’est quoi ce GROUP_ROOT_3 ca sort d’où ?? et puis aussi j’ai toujours cru qu’on ouvrait une fenetre avec set(obj, MUIA_Window_Open, TRUE); plutot que SetAttrs() non ???

                  Vince

                    #75676

                    rusback a écrit :

                    p’tite question… c’est quoi ce GROUP_ROOT_3 ca sort d’où ?? et puis aussi j’ai toujours cru qu’on ouvrait une fenetre avec set(obj, MUIA_Window_Open, TRUE); plutot que SetAttrs() non ???

                    Pour le set dans mui.h :

                    #define set(obj,attr,value) SetAttrs(obj,attr,value,TAG_DONE)

                    mais je dois mal l’employé car avec un set c’est ok…

                    sinon GROUP_ROOT_3, c’est juste un pointeur sur :

                    GROUP_ROOT_3 = GroupObject,

                    Child, LV_compte,

                    Child, GR_grp_19,

                    End;

                    Sinon, t’en est où de ton gui pour mplayer et de Kompactor ?

                    Merci de ton aide.

                    Vince

                      #75677

                      adrenochrome a écrit :

                      « peux ton récupperrer l’applicationobject dans la MCC sans passer le pointeur par userdata ? »

                      tu fais un get sur MUIA_ApplicationObject

                      A ok.

                      « Celui qui est dans MUI38Dev (pas le chapitre en question) ? Je n’en est pas trouvé d’autre si tu as plus récent. »

                      pourtant…

                      http://main.aminet.net/pub/aminet/dev/mui/mui38dev.lha

                      mui/developer/docs/muidev.guide

                      |


                      |Getting started ...

                      | ...

                      |Layout...

                      | ...

                      |Building an application...

                      | ...

                      |Dynamic object linking...

                      | overview

                      | windows <- !!! | groups

                      Ben, ouai, avait pas vu…

                      Petite question tant j’y suis, où je peux trouver une explication sur quand utiliser les supernew, domethode et autres WindowObj ???

                      Pas très clair encore pour moi.

                      Merci.

                      anonyme

                        #75678

                        @vince: la gui de mplayer c’est en standby… le test ainsi que les conseils récoltés sur le forum de morphzone.org de la part de gelbes ou ailleurs par d’autres personnes m’ont permis d’avancer dessus, mais ce n’était qu’un simple test, donc je verrai ca plus tard…

                        pour kompaktor, je suis dessus et j’ai tout refais de A à Z, je vais pas montrer de grabs sinon j’en connais un qui va me taper dessus… donc ca sera pour plus tard… wait and see…

                        henes

                          #75679

                          @Vince

                          Ayant explosé mon alimentation et étant en rade de véritable machine, j’ai juste vite lu en diagonale. Donc excuse moi si je suis à côté de la plaque.

                          Lorsque tu crées ta classe, pense bien à ne pas directement donner ton dispatcher mais plutôt un EmulLibEntry qui renvoie vers ton dispatcher.

                          Pourquoi ? Parce que MUI exécute le dispatcher en mode 68k et qu’il s’agit de code PPC.

                          Regarde les exemples du SDK MorphOS (PAS le SDK mui38 d’Aminet) pour un cas d’utilisation précis du tout. C’est très simple au final.

                          Ah, et pour repérer si c’est bien ce problème (code PPC exécuté en mode 68k), je crois y avoir mis une référence ici. En gros, désactive le JIT et regarde si le SRR0 est dans l’emulation et le PC dans le code natif de ton dispatcher .

                          Vince

                            #75680

                            henes a écrit :


                            @Vince

                            Lorsque tu crées ta classe, pense bien à ne pas directement donner ton dispatcher mais plutôt un EmulLibEntry qui renvoie vers ton dispatcher.

                            Pourquoi ? Parce que MUI exécute le dispatcher en mode 68k et qu’il s’agit de code PPC.

                            Regarde les exemples du SDK MorphOS (PAS le SDK mui38 d’Aminet) pour un cas d’utilisation précis du tout. C’est très simple au final.

                            Ah, et pour repérer si c’est bien ce problème (code PPC exécuté en mode 68k), je crois y avoir mis une référence ici. En gros, désactive le JIT et regarde si le SRR0 est dans l’emulation et le PC dans le code natif de ton dispatcher .

                            Salut,

                            J’utilise cette macro :

                            #define DISPATCHERPROTO(name) static ULONG name##PPC(void); struct EmulLibEntry name = { TRAP_LIB, 0, (APTR)&name##PPC }; static ULONG name ## PPC(void)

                            qui m’a l’air de corespondre à ce que tu décris.

                            M’en va regarder le SDK Mos, au fait, quand est il prévue une distrib réaxtualisée ? elle commence à pas être jeune celle là…

                            Bien t’as doc, je vais m’en servir pour rechercher un problème de double libération…

                            Merci.

                            Vince

                              #75681

                              henes a écrit :


                              @Vince

                              Ah, et pour repérer si c’est bien ce problème (code PPC exécuté en mode 68k), je crois y avoir mis une référence ici. En gros, désactive le JIT et regarde si le SRR0 est dans l’emulation et le PC dans le code natif de ton dispatcher .

                              J’ai lu ton article sur le debugage mais le contenu du dump ne contient pas trop de détail (source) afin de rechercher de plus près la cause.

                              Tu utilise quel mode de compilation de debugage Dwarf2 ou autre ?

                              Merci.

                              anonyme

                                #75682

                                @Vince: c’est quoi Dwarf2 ??

                                Vince

                                  #75683

                                  rusback a écrit :


                                  @Vince
                                  : c’est quoi Dwarf2 ??

                                  C’est un format de sortie de debug de GCC :

                                  -gdwarf-2 Enable DWARF-2 debug output

                                  -gstabs+ Generate extended STABS format debug output

                                  -gstabs Generate STABS format debug output

                                  -ggdb Generate default extended debug format output

                                  -g Generate default debug format output

                                  et comme il me semblait assez complet, j’espérai avoir plus d’information dans le dump mais ce n’ai pas le cas…

                                  Peut être, il vaudrait mieux que je cherche du coté du soft du dump peut être…

                                  En fait, je cherche à avoir un maximum d’information pour m’aider à debuger.

                                  Merci et à bientôt pour une version de Kompactor ou du gui MPlayer à tester :-D

                                15 sujets de 1 à 15 (sur un total de 15)

                                • Vous devez être connecté pour répondre à ce sujet.
                                Amiga Impact