Utiliser l'interface d'une dll dans une mdi[sans mfc][dev-c++][réponse forum]

Soyez le premier à donner votre avis sur cette source.

Vue 9 857 fois - Téléchargée 779 fois

Description

Voilà ce code permet d'utiliser une boite de dialogue sauvegardée sous forme de ressource dans n'importe quel .dll ou .exe dans une fenêtre MDI . Ce n'est pas si facile que çà car je rappel qu'une boite de dialogue est une fenêtre popup et faire la transformation nécessaire m'a pris 2 jours a être trouvée donc s'il vous plait éviter les truc du genre "c'est bidon j'aurais fais çà moi même" et lsiait le code pour vous en rendre compte .

Source / Exemple :


voir zip

Conclusion :


Voilà le fonctionnement(en gros)
->mon programme(pour ne pas se limiter à la réponse du forum) affiche une Frame avec un menu . Le choix Fichier->Ouvrir permet de sélectionenr le .exe ou .dll a scanner . Toutes les boites de dialogues trouvées son listées dans une TreeView d'une fenêtre MDI dans cet ordre là:
+Root
+Dialogues
+Nom(id ou string)
+Lang(en anglais: Windows oblige)

en double cliquant sur le language de la boite de dialogue voulue(i.e: +Lang(en anglais: Windows oblige)" la boite de dialogue est chargée et mise dans une autre fenêtre MDI(elle prend le nom de la boite de dialogue mais pas l'icône) .

NOTE: dans le menu fenêtre se trouve un choix "Parcourir": chez moi il affiche la liste des fenêtre MDI mais je l'ai trouvée par pur hasard te je voudrais juste savoir s'il marche chez vous ?! Les autre choix sont eux plus standard .

Quelques détails:
A cause de la méthode utilisée pour faire une telle transformation, il se peut que certains styles de la fenêtre ne soit pas conservés car il sont incompatible avec ce type de transformatiosn donc ne rallez pas pour çà . De plus si la boite de dialogues possède une icône, celle-ci n'est pas affichée dans la fenêtre MDI(mais ce n'est pas non plus très dur à changer) .

Détail de fonctionnement:
J'utilise une méthode que je pensait jusque là impossible à savoir que la boite de dialogue devient(après quelques changement de style très précis) un fils d'une fenêtre MDI que l'on met à la bonne taille . La boite de dialogue réagit normalement et conserve sont DialogProc(évidemment il faut l'implémenter) sauf pour les messages de fenêtre(i.e: WM_SIZE, WM_CLOSE, WM_PAINT...) puisque c'est la fenêtre MDI qui les reçoit . Enfin on maximise la boite de dialogue pour que celle-ci prenne exactement la taille de la fenêtre MDI(si on se contente de la mettre à la bonne taille, même exactement çà marche pas(ou plutôt mal) ) .

NOTE: j'ai mis dans mon programme quelques boite de dialogue(et les icônes) en ressource pour l'exemple:
CELLES-CI NE SONT PAS DE MOI, elle provienne de source sur ce (magnifique) site qu'est cppfrance car non seulement je n'est pas d'éditeur de ressources et en plus j'ai pas que çà à faire) .

Voilà j'ai fini mon exposé, si ce programme ne marche sur votre ordi dites exactement de qui ne va pas . Je l'ai testé uniquement sur mon Windows XP Familly .

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16 -
Faut expliquer ce que gagnerait ce projet à cacher les appels API derrière une dll MFC.
Selon moi rien du tout.
cs_samiramiss
Messages postés
2
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
13 février 2010
-
avec MFC le projet devient plus interessant, en tous les cas l'essai est tres bien
cs_NeoUmbrella
Messages postés
104
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
11 septembre 2008
-
Très interessant, merci.
cs_Joky
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2 -
Lol non moi j'comprend l'anglais c'est juste que le Francais c'est quand même notre langue lol
Pamaury
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2 -
parce que je commente toujours en anglais mais si çà te gène je réécrirai en français en dessous ! Je ferais çà dans l'aprem .

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.