begin process at 2010 02 10 00:16:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > UTILISER L'INTERFACE D'UNE DLL DANS UNE MDI[SANS MFC][DEV-C++][RÉPONSE FORUM]

UTILISER L'INTERFACE D'UNE DLL DANS UNE MDI[SANS MFC][DEV-C++][RÉPONSE FORUM]


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :mdi, interface, dll, dialog, windows Niveau :Expert Date de création :09/06/2005 Date de mise à jour :01/12/2005 21:12:29 Vu / téléchargé :6 992 / 625

Auteur : Pamaury

Ecrire un message privé
Site perso
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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 .


 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 .

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

10 juin 2005 23:51:58 :
Mise à jour du code source: celui-ci est désormais commenté(en anglais mais tout le monde sait lire l'anglais non......non bah tant pis !) et la source a été mise en niveau expert .
11 juin 2005 13:40:43 :
Bon dans ma grande gentillesse j'ai commenté la source en anglais ET français et corrigé quelques commentaires foireux(fautes de frappes)
01 décembre 2005 21:12:29 :
ajout des mots-clés

 Sources du même auteur

Source avec Zip SAUVEGARDER/RESTAURER DES CLASSES
Source avec Zip Source avec une capture CHANGER L'ICÔNE D'UN EXÉCUTABLE[C++/DEV-CPP]
Source avec Zip HÉRITAGE,MÉTHODES VIRTUELLES ET CLASSES ABSTRAITES
Source avec Zip Source avec une capture REPRÉSENTATION 3D QU'UNE FONCTION A DEUX INCONNUES
Source avec Zip DESSINER UNE MAISON SANS JAMAIS REPASSER PAR LE MÊME SEGMENT

 Sources de la même categorie

SMART POINTEUR À COMPTEUR DE RÉFÉRENCE par nirgal76
POINTEUR INTELLIGENT par snpier wolf
ALIGNER TEXTE CONSOLE par CptPingu
QWERTY - AZERTY AVEC SDL, UNE ALTERNATIVE par Scheb
Source avec Zip Source avec une capture INSERER UNE ANIMATION FLASH (WIN32-DEVCPP) par gagah1

 Sources en rapport avec celle ci

EXPLORATEUR DE FICHIERS WINDOWS EN C par wildhawk
Source avec Zip Source avec une capture CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS W... par Pistol_Pete
Source avec Zip Source avec une capture DIALOG HTML, CONSTRUIRE ET DIALOGUER AVEC UN DIALOG HTML/JSC... par yann_lo_san
Source avec Zip DIALOG DEPUIS DLL (WIN32) par BruNews
Source avec Zip [GCC][WIN32][DEV-C++] COMMANDE LDD SOUS WIN32/PE - VERSION 0... par meech

Commentaires et avis

Commentaire de vecchio56 le 09/06/2005 17:48:47 administrateur CS

une boite de dialogue est une fenêtre popup
Je ne crois pas, une boite de dialog peut aussi avoir le style WS_CHILD au lieu de WS_POPUP, c'est d'ailleurs la seule chose qui change (quelle est la transfomation dont tu parles?)

Commentaire de Pamaury le 09/06/2005 18:08:12

oui d'accord une boite de dialogue peut ne pas être popup(même si dans les 95% des cas çà l'es) mais ici c'est justement pour mettre uen boite de dialogue popup dans un fenêtre MDI . D'ailleurs rajouter WS_CHILD et enlever WS_POPUP ne suffit pas il y a d'autres styles a enlever et a rajouter . La fonction pour le faire n'est pas très longue mais par exemple si on se contente de faire ce que tu dis(+ajout/rejet de style) tu vas obtenir une fenêtre(pas à la bonne taille) avec un méchant espace entre le bord et les contrôles qui n'est pas redessiné(essaye tu as juste a enlever Showwindow(hwnd,SW_SHOWMAXIMIZED) . Et puis bien sûr il faut remettre le nom de la fenêtre ainsi que les options minimiser, maximiser, changer la taille .

au fait dernière précisions: ce programme serait 100x plus facile si justement il ne fallait pas le mettre dans une fenêtre MDI(puisque on ne l'a crée pas avec CreateWindowEx) ou alors donne moi la solution miracle ?

Commentaire de vecchio56 le 09/06/2005 19:36:34 administrateur CS

J'ai compilé sous Visual studio, il y a bien le menu parcourir
Par contre un petit problème d'affichage (sans doute du au fait que je n'active pas les styles XP):
http://vecchio56.free.fr/MDI.JPG

Commentaire de Pamaury le 09/06/2005 20:09:09

c'(est ce que je craignait . Je me suis battu pourtant pour que çà le fasse plus mais apparemment çà suffit pas :) Je pense que maximiser le dialogue dans la fenêtre MDI l'éviterait mais je voit pas comment faire . Cela vient du fait qu'une partie de la fnêtre dialogue n'est pas rafraichit mais je ne sais pas pourquoi . si quelqu'un a une idée ? En tout cas sur mon ordi çà le fait plus(avant le ShowWindow(hwnd,SW_SHOWMAXIMIZED) çà le faisait) . Essayer avec les thèmes XP pour voir .

Commentaire de neria le 09/06/2005 21:28:57

Salut !

   il y a du niveau dans les sources proposées (enfin !). Dailleurs je trouve que initié est un peu fait vu la complexité du code (manque de commentaires au passage). Enfin on en apprend un peu plus sur la prog windows !!! Continue comme ça.

@+ Neria

Commentaire de Pamaury le 09/06/2005 21:43:49

merci j'ai hésité pour le niveau mais n'y a en réalité que une fonction assez dure je trouve mais d'un côté je prog très souvent avec windows donc peut-être que je me rend pas compte . sinon j'essayerais de commenter plus demain(après le BAC de fr :) )

Commentaire de Taranael le 09/06/2005 21:44:30

Hey Neria c'est pas ton coin ici retournes sur VBFrance :p
Sinon ouai bonne source bien que manque de commentaire comme le dit le p'tit gars au dessus de moi ! On est un peu changé du morpion en console Win32 et de la gestion d'étudiants :p

Commentaire de Pamaury le 09/06/2005 22:06:35

lol c'est sûr(en plus je trovue que des morprion il y en a trop :)) . Comme je l'ai dit plus haut demain je recoommenterais la source(c'est vrai que à part la fonction supra importante LaunchDialog) il n'y a aucun commentaire et si on connais pas la programmation MDI sous windows on pige rien .

Commentaire de Joky le 10/06/2005 21:16:50

Moi il veut déjà pas le compiler avec DevC++ 4.9.9.0
Soi disant que IS_INTRESOURCE( )
n'existe pas, fin bref, en plus il me supprime le exe, ça me lourde ça lol
Mais sinon c'est le même genre que ResHack ???

Commentaire de vecchio56 le 10/06/2005 21:17:57 administrateur CS

rien a voir

Commentaire de Joky le 10/06/2005 21:20:22

Rien à voir ???
Euh, j'attend le prog pour voir lol... J'peux trop rien dire la :p

Commentaire de BruNews le 10/06/2005 21:27:45 administrateur CS

#define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0)

Commentaire de Joky le 10/06/2005 21:32:21

Mon dieu qu'il est fort lol,
C'est de tête que tu fais tout ça ???

Donc j'ai pu tester le prog, et en effet c'est pas comme ResHack,
Il ne donne pas le code des dialogs :p
Mais c'est déja très bien :o
Mainant jvé tenter de lire le code
Non Vecchio ne me dit pas que je n'ai aucune chance !!!

Commentaire de Pamaury le 10/06/2005 23:14:06

#define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0)
c'est bizarre qu'il ne soit pas défini avec Dev-Cpp: je l'ai programmer avec et il est parfaitement défini puisque'il appartient à l'API Windows normalement . Enfin c'est pas bien grave . Sinon pour le code des dialogues, c'est pas trop dur à générer à partir des ressources mais c'est un peu chiant lol .

Commentaire de Joky le 11/06/2005 10:56:49

Et pk du commentaire en anglais ???
J'pige pas trop l'intérêt lol

Commentaire de Pamaury le 11/06/2005 12:58:39

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 .

Commentaire de Joky le 11/06/2005 13:16:02

Lol non moi j'comprend l'anglais c'est juste que le Francais c'est quand même notre langue lol

Commentaire de NeoUmbrella le 02/05/2006 17:15:50

Très interessant, merci.

Commentaire de samiramiss le 01/04/2008 21:34:58 7/10

avec MFC le projet devient plus interessant, en tous les cas l'essai est tres bien

Commentaire de BruNews le 01/04/2008 21:44:35 administrateur CS

Faut expliquer ce que gagnerait ce projet à cacher les appels API derrière une dll MFC.
Selon moi rien du tout.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

utiliser l'interface d'une dll dans une MDI [ par julienbad ] Bonjour à tous! j'aurais voulu savoir si quelqu'un savait comment utiliser une dll possèdant une interface graphique (CDialog) pour l'affich API Windows - Problème Dialog [ par banane_rose ] salut, dans mon template de ma dialog quand je rajoute la ligne pour les styles STYLE DS_MODALFRAME | WS_POPUP ça me met [Res interface pour modeleur 3d [ par vladisback ] bonjour, j'aimerai me lancer dans la creation d'un logiciel de modelisation 3D, qui soit portable (au moins linux et windows). j'ai l'habitude de fair DLL : interface IUnknown en C [ par Mastersam ] Bonjour, je créé actuellement en driver ASIO sous forme de DLL, j'ai eu un exemple général de création d'un driver dans la SDK ASIO 2.2, mais tout est Détourner la copie de windows par un hook [ par alphaone ] Bonjour, je sais qu'il est possible de détourner la copie de windows pour copier avec sont logiciel et non pas avec la copie de windows, mais je suis Interface Excel + Dll C++ [ par GRACCAH ] Bonjour à tous, J'ai programmé un outil, organisé autour d'une interface Excel faisant appel à une dll (release) developpée en C++ dans laquelle se tr Dll sous Linux et Windows [ par alexatique ] Bonjour,Voilà, j'arrive à réaliser des dlls sous windows à l'aide de visual studio.J'arrive également à faire un programme qui appelle cette dll.Mais Dll g++ sous VS [ par greenzephyr ] Salut à tous, Je dois faire une appli Windows Form qui utilise une dll compilée sous Linux avec g++. Je dispose des sources de cette dll. Pour vous cree boite dialog dans DLL [ par bonjour__ ] salut tous le monde.j'ai cherche comment cree les boite de dialog avec leur fonction procedure ( modale ou non )dans les fichier executable DLL .voici API Windows - Problème ChooseColor [ par banane_rose ] salut voilà j'ai une dialog et dans ma dialog j'ai un bouton censé faire apparaitre la dialog commune "choosecolor" , mais dans la structur


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales