ID_FILE_MRU_FILE1

Signaler
Messages postés
30
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
7 novembre 2005
-
Messages postés
30
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
7 novembre 2005
-
Bonjour a tous.

Il faut que je recupere la pathname d'un fichier ouvert par une appli lors d'une utilisation anterieure a l'actuelle.
Il me semble que c'est grace a ID_FILE_MRU_FILE1 mais je n'arrive aps a en extraire un path.
Si qqn a une idee de la solution a appliquer merci de me la communiquer.

Xakal.

7 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
je suppose que c'est MFC,

dans la classe appli dérivée de CWinApp, il y a la liste des MRU :

CRecentFileList* m_pRecentFileList;

utilisation :
#include "afxadv.h"

int nSize = m_pRecentFileList->GetSize();
CString strFile = (*m_pRecentFileList)[nIndex];
Messages postés
30
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
7 novembre 2005

J'ai fait des essais et ca me plante qd je met la valeur de l'indice 0 ie CString strFile = (*m_pRecentFileList)[0];
de meme avec 1.
Une idee ?
Messages postés
30
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
7 novembre 2005

La ca marche mais ca ne me donne rien de bon ...

Tu ne sais pas comment je pourrais faire pour capter le nom dans la liste MRU de mon appli qd qqn a clique dessus ?

Le but du jeu est de recuperer le path pour pouvoir creer des fichiers au meme endroit que le fichier ouvert.
Le pb est que j'arrive a capter le path si on fait fichier ouvrir mais si on passe pas la liste MRU le path qui est pris en compte est celui de l'executable de l'appli qui n'ast pas le meme que celui des fichiers serialises que j'ouvre ...

Sur ce je te souhaite de bons comptages Hemsley ce WE je vais faire de meme.
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
dans la classe dérivée de CWinApp, surcharge la fonction :

virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName);

elle est appelée à chaque fois qu'un document est ouvert (avec le nom complet du fichier)

il te suffira d'appeler CWinApp::OpenDocumentFile et de faire ton boulot après (ou avant c'est toi qui voit).

sinon voici le code MFC qui gère la sélection d'un fichier de la MRU (fichier appui.cpp):

BOOL CWinApp::OnOpenRecentFile(UINT nID)
{
ASSERT_VALID(this);
ASSERT(m_pRecentFileList != NULL);

ASSERT(nID >= ID_FILE_MRU_FILE1);
ASSERT(nID < ID_FILE_MRU_FILE1 + (UINT)m_pRecentFileList->GetSize());
int nIndex = nID - ID_FILE_MRU_FILE1;
ASSERT((*m_pRecentFileList)[nIndex].GetLength() != 0);

TRACE2("MRU: open file (%d) '%s'.\n", (nIndex) + 1,
(LPCTSTR)(*m_pRecentFileList)[nIndex]);

if (OpenDocumentFile((*m_pRecentFileList)[nIndex]) == NULL)
m_pRecentFileList->Remove(nIndex);

return TRUE;
}
Messages postés
30
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
7 novembre 2005

Le probleme n'est pas la ...
Le fichier a re-ouvrir est bien re-ouvert le probleme est juste que je voudrais capter son nom et surtout trouver son path.
Je ne veux pas refaire l'ouverture de fichier car ca fonctionne tres bien deja.

Je suis desole mais ces reponses ne repondent pas exactement a ma question.
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
je ne te dis pas de refaire l'ouverture mais de l'intercepter pour récupérer le path (avant ou après le traitement par défaut selon ce que tu veux faire).

en gros dans le .h de ta classe dérivée de CWinApp, tu rajoute :

virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName);

et dans le .cpp :

CDocument* TaClassApp::OpenDocumentFile(LPCTSTR lpszFileName)
{
return CWinApp::OpenDocumentFile(LPCTSTR lpszFileName);
}

A chaque fois qun document est ouvert (par la MRU, par "Fichier->ouvrir ou par les commandes du Shell), cette fonction sera appelée avec le nom complet du fichier. Si toi tu veut simplement le répertoire, il suffit de chercher un peu...
Messages postés
30
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
7 novembre 2005

Merci de ton aide mais je suis passe par un chemin detourne pur trouver le path du fichier ouvert.
Doc->GetPathName() va tres bien.
Il suffit de supprimer le nom du fichier a la fin pour avoir le path.
Solution simple mais pas facile a toruver qd tu ne sais pas qu'elle existe.

encore merci de ton aide.