Créer une application MDI

cs_sylvain16 Messages postés 14 Date d'inscription vendredi 15 juillet 2005 Statut Membre Dernière intervention 9 août 2005 - 8 août 2005 à 19:49
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 17 août 2005 à 09:30
Voillà, je voudrait créer une application MDI, seulement l'exemple de MASM n'est pas très concluante. Je m'explique:



Lorsque j'ouvre un programme MDI, Adobe Acrobat pour n'en citer qu'un,
je le lance, je le minimize et je double-clic de nouveau sur le
raccourci du bureau, çà agrandit la fenêtre de Acrobat déjà ouverte,
mais l'exemple de masm, lui, il m'ouvre une deuxième instance de
l'application.



Est-ce que quelqu'un sait d'où vient le problème?

12 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2005 à 21:48
C'est seulement que l'exemple ne gère pas l'unicité d'instance, à toi de l'ajouter.
Exemple en C ici par 2 méthodes, te restera plus qu'à traduire c'est simple:
UNIQUE INSTANCE PROG (WIN32)
http://www.cppfrance.com/code.aspx?ID=25238

ciao...
BruNews, MVP VC++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 août 2005 à 11:00
salut,

regarde du coté de la fonction CreateMutex

@++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2005 à 11:10
Avec un mutex on va savoir si prog a déjà une instance mais ce n'est pas cela qui ramènera l'ancienne instance au 1er plan et c'est bien ce qu'un utilisateur attend s'il clic sur son raccourci.

ciao...
BruNews, MVP VC++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 août 2005 à 11:19
re,

oui mais une fois que l'on connait l'instance un SetForegroundWindow fonctionne non ?

@++
0

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

Posez votre question
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 août 2005 à 11:21
re,

CreateMutex
Si Premiere Instance appeler InitAppl
sinon
rechercher la fenetre
mettre la fenetre au premier plan
quitter

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 août 2005 à 11:29
re,

la difficulté n'est pas dans la mise en premier plan de la fenetre mais pour savoir si l'application à déjà été ouverte.

de plus, je te cite:
C'est seulement que l'exemple ne gère pas l'unicité d'instance, à toi de l'ajouter.

@++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2005 à 11:29
Une dialog qui modifie son titre, on fera comment pour la rechercher ?
Les 2 seules méthodes assurées sont une section Shared pour un même exe au même endroit ou un filemapping pour une seule instance d'un même prog qui pourrait être dupliqué.
Voir exemple dont j'ai donné le lien.

ciao...
BruNews, MVP VC++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 août 2005 à 11:56
re,

une boite de dialogue MDI ???

@++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2005 à 12:02
allez tu chipotes... je parlais de méthodes génériques.

ciao...
BruNews, MVP VC++
0
cs_sylvain16 Messages postés 14 Date d'inscription vendredi 15 juillet 2005 Statut Membre Dernière intervention 9 août 2005
9 août 2005 à 16:52
Ok je vais étudier les sources de BruNews, mais l'exemple "CreateMutex - Si Premiere Instance appeler InitAppl - sinon rechercher la fenetre - mettre la fenetre au premier plan - quitter" à l'air sympa également.

En tout cas merci les gars
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
17 août 2005 à 02:58
salut,

Brunews,
pris sur www.cppfrance.com ;-)
UINT GetWindowModuleFileName(
HWND hwnd,
LPTSTR lpszFileName,
UINT cchFileNameMax
);
devrait permettre de retrouver notre application.

@++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2005 à 09:30
c'est une func qui sert de wrapper à GetModuleFileNameEx en recherchant en interne son hprocess.
Ne résoudra pas la question de ce post, l'unique instance.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous