ID_FILE_MRU_FILE1

cs_xakal Messages postés 30 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 7 novembre 2005 - 10 sept. 2004 à 14:45
cs_xakal Messages postés 30 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 7 novembre 2005 - 20 sept. 2004 à 12:28
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 sept. 2004 à 16:25
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];
0
cs_xakal Messages postés 30 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 7 novembre 2005
10 sept. 2004 à 16:48
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 ?
0
cs_xakal Messages postés 30 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 7 novembre 2005
10 sept. 2004 à 17:47
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.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 sept. 2004 à 21:23
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;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_xakal Messages postés 30 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 7 novembre 2005
13 sept. 2004 à 14:58
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.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
20 sept. 2004 à 12:16
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...
0
cs_xakal Messages postés 30 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 7 novembre 2005
20 sept. 2004 à 12:28
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.
0
Rejoignez-nous