Instance unique d'une application

gadafla Messages postés 33 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 16 février 2011 - 9 avril 2004 à 02:05
G0ss3Yn Messages postés 65 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 5 novembre 2010 - 3 mai 2004 à 15:57
J'aimerais qu'en ouvrant autant de documents que je veux, ils aillent tous s'ouvrir sur une seule instance de mon programme, qui lui est multi-fenetres.

- je suis avec les MFC
- ma classe principale est derivee de CWinApp

Comment dois-je gerer cela ?

Merci d'avance.

3 réponses

G0ss3Yn Messages postés 65 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 5 novembre 2010
9 avril 2004 à 08:39
Salut !
Je ne sais pas trop comment tu pourrais gérer celà mais j'ai une petite idée :
Lorsque tu ouvre un document, sensé s'ouvrir avec ton application, une instance de celle ci est lancé. Or ci au début de ton app tu vérifie si il y a une autre instance déjà lancée ( Avec FindWindow par exemple ), ensuite tu peux envoyer un message ( SendMessage ) à ton app déjà lancé, contenant le chemin d'accés du fichier à ouvrir....
Tu peux enregistrer un message perso avec RegisterMessage....

Voilà, le problème c'est que je ne sais pas si ça fonctionne correctement avec les MFCs .....
J'espère t'avoir aidé ! @+

G0ss3Yn... ( Bon coding a tous !)
0
gadafla Messages postés 33 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 16 février 2011
16 avril 2004 à 11:01
Merci pour le tuyau, je pensais que cela fonctionnerait, mais en MFC, impossible de specifier notre propre type de classes, pour la chercher apres avec FindWindow.

Mais jaimerai savoir, comment faire pour parcourir TOUTES les fenetres presentes dans windows ? Avec ceci, je pourrai trouver celle ki a un certain titre et lui envoyer un message.
0
G0ss3Yn Messages postés 65 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 5 novembre 2010
3 mai 2004 à 15:57
Ok, y'a un moyen de récupérer le nom de la classe quand même si t'as coché l'architecture document/view :

Dans CxxxDoc tu rajoute une fonction :

void CTest2Doc::AfficheClassName(HWND hWnd)
{
char ClassName[ 256 ] ;
GetClassName( hWnd, ClassName, 256 ) ;

MessageBox( NULL, ClassName, "Nom de la classe", MB_OK ) ;
}

Et dans CxxxView :

void CTest2View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default

GetDocument()->AfficheClassName( m_hWnd ) ;
CView::OnLButtonUp(nFlags, point);
}

Comme ça tu click et tu récupère le nom de la classe de la fenêtre...
Voilà !
Par contre je ne sais pas comment parcourir toutes les fenêtre actives... :(

G0ss3Yn... ( Bon coding a tous !)
0
Rejoignez-nous