Question con : ouvrir ou fermer une boite de dialogue en mfc ?? - C++ - Programmation
Marsh Posté le 10-04-2003 à 10:02:24
ben tu fais ta dialogue dans l'ed de resources, a cette dialog est associee une classe, tu instance cette classe et tu fais un DoModal() et pis voila
Marsh Posté le 10-04-2003 à 10:06:13
ben, ta boite se ferme toute seule (eg en reponse a un bouton) ca doit etre ExitWindow() (ou CloseWindow ? ca fait trop long que g plus fait d'interface), non ?
Marsh Posté le 10-04-2003 à 10:08:36
quand tu cliques sur un bouton de la fenetre recemment ouverte (dans une methode OnBouton par exemple), tu peux directement faire this.ExitWindow() ? a moins que this ne référence rien du tout ????
Marsh Posté le 10-04-2003 à 10:10:08
backdafuckup a écrit : quand tu cliques sur un bouton de la fenetre recemment ouverte (dans une methode OnBouton par exemple), tu peux directement faire this.ExitWindow() ? a moins que this ne référence rien du tout ???? |
heuh la c'est plus des MFC mais du C++ standart
this->ExitWindow() ou ExitWindow() c pareil
Marsh Posté le 10-04-2003 à 10:12:59
ca marche pas.... exitwindow ne fait pas partie de la classe de ma bd (il doit manquer des include ptet ??), et closewindow ca ferme pas la fenetre, ca la minimise, mais en bas à gauche de l'écran...
Marsh Posté le 10-04-2003 à 10:13:45
ah ouais merde, le closeWindow
bon, la lumiere vient de jaillir, c'est EndDialog(IDOK)
Marsh Posté le 10-04-2003 à 10:16:56
backdafuckup a écrit : IDOK c l'id de mon bouton, ou pas ? |
nan, le code de retour, tu met ce que tu veux
si je puis me permettre, et sans vouloir froisser : msdn.microsoft.com
Marsh Posté le 10-04-2003 à 10:18:58
je sais je sais...
mais chuis un grand flemmard... c tellement plus simple de se faire aider....
Marsh Posté le 10-04-2003 à 10:19:22
backdafuckup a écrit : je sais je sais... |
Marsh Posté le 10-04-2003 à 10:19:33
en tout cas, grand merci à toi...
Vraiment bien la section C++... toujours plein de gens pour m'aider...
Marsh Posté le 10-04-2003 à 11:18:29
si t encore dans les parages (et la g déja cherché sur msdn, mais g pas trouvé...).
J'aimerais déclarer des variables globales (comme en vb) de type int. Mais n'importe ou où je les mets, ca marche pas (pas tres francais tout ca...). Il y a 7 variables, mais je les utilise dans plusieurs boites de dialogue en fait. Meme en incluant le fichier ou elles sont déclarées, il me met une erreur à la compile "undeclared identifier".. (ca c'est un pb purement c++)...
Marsh Posté le 10-04-2003 à 11:19:56
backdafuckup a écrit : |
Personne ne te renseignera : Les variables globales : c'est mal
Marsh Posté le 10-04-2003 à 11:25:44
Tetragrammaton IHVH a écrit : |
ouais taisons nous et lapidons le
bon, effectivement, generalement les globales c'est pas terrible, mais allons y quand meme :
tu te fais un fichier .h contenant tes vars globales, precedees d'un "extern"
genre :
Code :
|
(avec evidemment les includes necessaires)
tu fais un nouveau fichier cpp dans lequel tu mets :
Code :
|
tu inclue le .h dans tous les fichier cpp necessitant les vars globales
Marsh Posté le 10-04-2003 à 11:27:18
chrisbk a écrit : |
Ah ben bravo, surtout ne l'encourage pas à programmer proprement...
Marsh Posté le 10-04-2003 à 11:28:38
fais comme moi. Tu mets ces variables dans le Doc et tu les passes a ta boite modale avant de faire le DoModal()
si tu te trouves dans le Doc
CDlgBte Dlg;
Dlg.variable1 = variable1;
Dlg.DoModal();
sinon t'appeles un pointeur sur ton Doc pour aller rechercher les variables a passer a ta boite.
EDIT : surtout fais tres gaffe si tu joues avec des pointeurs
EDIT : je remercie au passage VisualC pour son aide
Marsh Posté le 10-04-2003 à 11:30:15
Tetragrammaton IHVH a écrit : |
je ne connais pas son pb, je ne sais pas ce qu'il fait, il veut faire des vars globales je lui dit comment faire. Point barre, je suis pas son responsable qualité.
Marsh Posté le 10-04-2003 à 11:31:02
chrisbk a écrit : |
Il n'y a RIEN qui peut justifier l'utilisation de variable globale en POO.
(à part un gros patch pour corriger un bug dans l'urgence)
Marsh Posté le 10-04-2003 à 11:32:25
en quoi c mal les variables globales ???
On m'a juste dit que les label/goto ct mal, et je comprends que ca puisse vite devenir bordélique, mais les variables globales, c plus qu'utile !!
Faut faire comment sinon ?? je veux pas faire de #define, vu que ces valeurs doivent changer, donc je peux faire comment, messieurs les adeptes de la programmation propre !
Marsh Posté le 10-04-2003 à 11:32:35
Tetragrammaton IHVH a écrit : |
ouais
Marsh Posté le 10-04-2003 à 11:33:15
backdafuckup a écrit : en quoi c mal les variables globales ??? |
c'est nul car tu ne peux pas les controler, elles sont modifiable par n'importe qui/n'importe ou. Decrit nous ce que tu veux faire, il y a surement moyen de faire plus propre
Marsh Posté le 10-04-2003 à 11:36:00
backdafuckup a écrit : en quoi c mal les variables globales ??? |
Lire un bouquin sur la méthode objet (sur l'encapsulation et l'héritage, particulièrement). Ta dialogbox est une classe donc tu peux rajouter des méthodes pour mettre à jour tes variables.
Marsh Posté le 10-04-2003 à 11:36:36
ok, j'explique. Mon projet est une application de surveillance d'un matériel électronique (température, tensions, ...).
Seules 7 de ces tensions sont paramétrables (accéssibles en Lecture/Ecriture). J'ai dans mon projet VC++ trois boites de dialogue (la principale, une bd d'identification par passwd et une autre bd servant à paramétrer ces valeurs).
Je dois donc me servir de ces 7 variables dans deux boites de dialogues (et dans trois ou quatre fonctions en tout).
Plus tard, ces valeurs seront sauvegardées ou dans un fichier .ini, ou dans le registre, ca reste à voir.
Ca vous dit quelque chose ?
Marsh Posté le 10-04-2003 à 11:39:17
franchement jette un coup d'oeuil a ce que je t'ai dit. C'est bien pratique surtout si tun'as que quelques boites modale
Marsh Posté le 10-04-2003 à 11:39:55
Tetragrammaton IHVH a écrit : |
Tu vois bien, d'après le sujet de mon post, que mes bases (acquises en iut) en POO sont plus que fragiles. J'essaie donc d'appliquer mes propres connaissances en programmation. En VB j'utilisais des variables globales, et j'en voyais l'utilité, car VB n'est pas principalement objet (meme si on peut faire de l'objet avec). Qu'entends tu par mettre à jour mes variables ??
Je veux dire que je n'y ai pas accès si elles sont en private, et en protected, on ne s'en est servi que tres peu en iut (manque de cours et de tp, au profit de langages comme le cobol...)
Marsh Posté le 10-04-2003 à 11:43:08
encore une question con, elle est déclarée ou cette classe CDocument ? C moi qui doit la créer ? Et dans ce cas, dans quel fichier vaut il mieux la créer ?
Marsh Posté le 10-04-2003 à 11:44:32
backdafuckup a écrit : |
L'encapsulation (ne laisser accessible de l'exterieur que certaines propriétés d'un objet) est le principe de base de la POO. Si tu ne maitrises pas ça, achète urgemment un bouquin. Tu n'arriveras à rien sans ce minimum.
Marsh Posté le 10-04-2003 à 11:47:18
je relis mes cours, mais c'est vrai que j'ai un peu du mal.
C'est pas facile l'objet, donc j'apprends, petit à petit...
Depuis une semaine que j'ai commencé mon stage, ca commence à revenir, mais difficilement. Le pb, c'est que je bosse sur un projet mfc en ce moment, donc beaucoup de méthodes sont générées automatiquement par vc++.
Marsh Posté le 10-04-2003 à 11:48:06
backdafuckup a écrit : encore une question con, elle est déclarée ou cette classe CDocument ? C moi qui doit la créer ? Et dans ce cas, dans quel fichier vaut il mieux la créer ? |
C'est ta classe CxxxDoc et xxx = nom de ton projet
Marsh Posté le 10-04-2003 à 11:51:28
Solution propre :
Code :
|
et tu t'en sert pour la passer ds tes CDialog (genre tu surcharges le constructeur par defaut pour avoir une methode avec un CVariableElc dedans en param)
C bcp plus interessant, et tu as qu'un objet a passer et pour les chargement et sauvegarde de la bdr ou .ini ban tu peux rajourter des methodes etc ...
Edit: fuck manquait ~ pour le destructeur lol
Marsh Posté le 10-04-2003 à 11:51:29
polo021 a écrit : |
Le pb, c'est qu'il n'y a pas de document dans une appli "dialogbox based"
Marsh Posté le 10-04-2003 à 11:53:58
Tetragrammaton IHVH a écrit : |
tu me l'apprends
Marsh Posté le 10-04-2003 à 11:55:22
polo021 a écrit : |
bah oui, c'est pour ça que je ne fais jamais d'appli basée sur une dialogbox, ça sux.
Marsh Posté le 10-04-2003 à 10:00:59
Comment, à partir d'un autre boite de dialogue, peut on ouvrir ou fermer une boite de dialogue ?
OpenWindow() ? CloseWindow ? Certes, mais sur quoi applique t on ces fonctions ?
Merci