Connexion
Vous n'avez pas encore de compte personnel ? Vous devriez en créer un. Une fois enregistré vous aurez certains avantages, comme pouvoir modifier l'aspect du site, ou poster des commentaires signés...
Support
Activité du Site

Pages vues depuis 06/01/2019 : 13 374 899

  • Nb. de membres 368
  • Nb. d'articles 2 854
  • Nb. de forums 24
  • Nb. de sujets 13
  • Nb. de critiques 0

Top 10  Statistiques

Index du forum »»  Développement »» [Résolu] - Ouvrir une requête de fichier sur un autre écran

[Résolu] - Ouvrir une requête de fichier sur un autre écran#525

3Contributeur(s)
pierrepPapiosaurJaMiGa
2 Modérateur(s)
PapiosaurBeWorld
pierrep pierrepicon_post
toute la question est dans le titre

j'ai utilisé filereq.c des RKRMs en remplaçant dans la structure TagItem les ASL_ (obsolettes) par les ASLFR_ correspondant.

J'ai essayé ASLFR_Screen et ASLFR_PubScreenName en donnant
soit le nom de la variable ecran
soit (ULONG)"nom de l'ecran"

Rien ne fonctionne comme je voudrais, le requester s'ouvre sur l'écran d'Ambient ou le programme plante (avec ASLFR_Screen et ULONG)"nom de l'ecran")
Papiosaur Papiosauricon_post
question idiote : est-ce que tu as créer un autre écran dans les préférences MUI ?
JaMiGa JaMiGaicon_post
Bon j'ai effacé ton post par mégarde (confondu citation et édition).
[edit:] Retrouvé ! :-)
Mais je te donne ma réponse:

Citation : pierrep
Rien ne fonctionne comme je voudrais, le requester s'ouvre sur l'écran d'Ambient ou le programme plante (avec ASLFR_Screen et ULONG)"nom de l'ecran")

Dans le premier cas, je dirai que l'écran auquel tu fais appel n'est pas ouvert, donc hop celui par défaut.
Et dans le deuxième cas, ça pète pour une raison très simple.
ASLFR_PubScreenName attend une chaîne, ok.
ASLFR_Screen, un pointeur vers un struct Screen...
Tu devrais lire les autodocs.
pierrep pierrepicon_post
L'ecran est ouvert avec OpenScreenTag et c'est à partir de l'une de ses fenêtres que se fait l'appel du requester.

Pour ce qui est des autodocs, je ne crois pas les avoir.
JaMiGa JaMiGaicon_post
Citation : pierrep 
L'ecran est ouvert avec OpenScreenTag et c'est à partir de l'une de ses fenêtres que se fait l'appel du requester.
Pour ce qui est des autodocs, je ne crois pas les avoir. 

Ca peut être plein d'autres choses, vu ce que tu donnes en infos, j'ai pris le plus simple :-)
Pour les autodocs, ils sont sur le CD Amiga Developer.
Ou disponibles en ligne, , par exemple.
pierrep pierrepicon_post
Quand je compile avec ASLFR_Screen et le nom de la variable ecran ou avec ASLFR_Window et le nom de la fenêtre j'obtiens :

filereq.h:26: initializer element is not constant
filereq.h:26: (near initialization for `charge_tags[8].ti_Data')

Si je compile avec ASLFR_PubScreenName et (ULONG)"nom ecran" , ça compile mais à l'execution, le requester s'ouvre sur l'écran d'Ambient
JaMiGa JaMiGaicon_post
Alors, puisque tu as envie d'en dire le moins possible, voilà un bout de code le plus simple qui soit et qui marche.

...
if ((screen = OpenScreenTags(NULL, SA_PubName, "coucou", TAG_DONE)))
{
if ((fr = (struct FileRequester *) AllocAslRequestTags(ASL_FileRequest, TAG_DONE)))
{
AslRequestTags(fr, ASLFR_PubScreenName, "coucou", TAG_DONE);
AslRequestTags(fr, ASLFR_Screen, screen, TAG_DONE);
FreeAslRequest(fr);
}
CloseScreen(screen);
}
...

Si pas plus de précisions (sur quel exemple tu te bases, extrait de ton code,...), tu te débrouilles.
pierrep pierrepicon_post
Je ne pensais pas que le détail du code était en cause.

Dans le fichier graph.c j'ai :



  /* ouverture de l'écran */

    if ((ecran=OpenScreenTags(NULL,
                              SA_Title,"Logo",
                              SA_Width,1024,
                              SA_Height,768,
                              SA_Depth,24,
                              TAG_DONE))==NULL)
    cleanexit("Pas d'ecran !!\n",RETURN_FAIL);



Dans le fichier filereq.c :



  frtags = sauve_tags;
    if (charge) frtags = charge_tags;

    if (fr = (struct FileRequester *)
    AllocAslRequest(ASL_FileRequest, frtags))
    {
      if (AslRequest(fr, NULL))
      {
        longueur = strlen(fr->rf_Dir)+strlen(fr->rf_File)+4;
        NomComplet = (char *)malloc(longueur);
        strcpy(NomComplet,fr->rf_Dir);
        if (AddPart(NomComplet,fr->rf_File,longueur))
            o = ConsTxt(NomComplet);
        free(NomComplet);
      }
      FreeAslRequest(fr);
    } 



et dans le fichier filereq.h :



struct TagItem charge_tags[] =
{
    ASLFR_TitleText,         (ULONG)"charger un fichier logo ",
    ASLFR_InitialHeight,     MYHEIGHT,
    ASLFR_InitialWidth,      MYWIDTH,
    ASLFR_InitialLeftEdge,   MYLEFTEDGE,
    ASLFR_InitialTopEdge,    MYTOPEDGE,
    ASLFR_PositiveText,      (ULONG)"Charge",
    ASLFR_NegativeText,      (ULONG)"Abandon",
    ASLFR_InitialDrawer,     (ULONG)"",
    ASLFR_PubScreenName,     (ULONG)"logo",
    TAG_DONE
};

struct TagItem sauve_tags[] =
{
    ASLFR_TitleText,         (ULONG)"sauver un fichier logo ",
    ASLFR_InitialHeight,     MYHEIGHT,
    ASLFR_InitialWidth,      MYWIDTH,
    ASLFR_InitialLeftEdge,   MYLEFTEDGE,
    ASLFR_InitialTopEdge,    MYTOPEDGE,
    ASLFR_PositiveText,      (ULONG)"sauve",
    ASLFR_NegativeText,      (ULONG)"Abandon",
    ASLFR_InitialDrawer,     (ULONG)"",
    ASLFR_PubScreenName,     (ULONG)"logo",
    TAG_DONE
};                           

pierrep pierrepicon_post
Dans le message précédent j'ai essayé d'arranger l'affichage et ça a introduit plein de caracteres de formatage qui n'apparaissaient pas à la prévisualisation
Papiosaur Papiosauricon_post
@pierrep : et là c'est bon ?