Question con : ouvrir ou fermer une boite de dialogue en mfc ??

Question con : ouvrir ou fermer une boite de dialogue en mfc ?? - C++ - Programmation

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 :jap:

Reply

Marsh Posté le 10-04-2003 à 10:00:59   

Reply

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

Reply

Marsh Posté le 10-04-2003 à 10:04:22    

ca c'est pour ouvrir... mais pour fermer ?

Reply

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 ?

Reply

Marsh Posté le 10-04-2003 à 10:07:08    

je c pas, je teste, deja domodal ca marche merci...

Reply

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 ????

Reply

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 ????  


 
[:mlc]
 
heuh la c'est plus des MFC mais du C++ standart
this->ExitWindow() ou ExitWindow() c pareil

Reply

Marsh Posté le 10-04-2003 à 10:10:37    

:pfff:

Reply

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... :/

Reply

Marsh Posté le 10-04-2003 à 10:13:45    

ah ouais merde, le closeWindow :D
 
bon, la lumiere vient de jaillir, c'est EndDialog(IDOK) :O

Reply

Marsh Posté le 10-04-2003 à 10:13:45   

Reply

Marsh Posté le 10-04-2003 à 10:15:44    

IDOK c l'id de mon bouton, ou pas ?  :heink:

Reply

Marsh Posté le 10-04-2003 à 10:16:19    

g rien dit

Reply

Marsh Posté le 10-04-2003 à 10:16:56    

backdafuckup a écrit :

IDOK c l'id de mon bouton, ou pas ?  :heink:  


 
nan, le code de retour, tu met ce que tu veux
si je puis me permettre, et sans vouloir froisser : msdn.microsoft.com

Reply

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....

Reply

Marsh Posté le 10-04-2003 à 10:19:22    

backdafuckup a écrit :

je sais je sais...  
mais chuis un grand flemmard... c tellement plus simple de se faire aider....


 
:/

Reply

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...  [:twark]

Reply

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++)...

Reply

Marsh Posté le 10-04-2003 à 11:19:56    

backdafuckup a écrit :


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.


 
Personne ne te renseignera : Les variables globales : c'est mal :pfff:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 10-04-2003 à 11:25:44    

Tetragrammaton IHVH a écrit :


 
Personne ne te renseignera : Les variables globales : c'est mal :pfff:  


 
ouais taisons nous et lapidons le [:dawa]
 
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 :
  1. extern int toto;
  2. extern float roger;


(avec evidemment les includes necessaires)
 
tu fais un nouveau fichier cpp dans lequel tu mets :

Code :
  1. int toto;
  2. float roger;


 
tu inclue le .h dans tous les fichier cpp necessitant les vars globales


Message édité par chrisbk le 10-04-2003 à 11:26:17
Reply

Marsh Posté le 10-04-2003 à 11:27:18    

chrisbk a écrit :


 
ouais taisons nous et lapidons le [:dawa]
 
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"


 
 :pfff:  :pfff:  :pfff:  
Ah ben bravo, surtout ne l'encourage pas à programmer proprement...  :sarcastic:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

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


Message édité par polo021 le 10-04-2003 à 11:40:21
Reply

Marsh Posté le 10-04-2003 à 11:30:15    

Tetragrammaton IHVH a écrit :


 
 :pfff:  :pfff:  :pfff:  
Ah ben bravo, surtout ne l'encourage pas à programmer proprement...  :sarcastic:  


 
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é.

Reply

Marsh Posté le 10-04-2003 à 11:31:02    

chrisbk 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é.


 
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)


Message édité par Tetragrammaton IHVH le 10-04-2003 à 11:31:55

---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

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 !

Reply

Marsh Posté le 10-04-2003 à 11:32:35    

Tetragrammaton IHVH 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)


 
ouais

Reply

Marsh Posté le 10-04-2003 à 11:33:15    

backdafuckup a écrit :

:??: 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 !


 
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

Reply

Marsh Posté le 10-04-2003 à 11:36:00    

backdafuckup a écrit :

:??: 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 !


 
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.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

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 ?

Reply

Marsh Posté le 10-04-2003 à 11:38:12    

cf methode polo, penche toi sur la classe CDocument

Reply

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

Reply

Marsh Posté le 10-04-2003 à 11:39:55    

Tetragrammaton IHVH a écrit :


 
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.


 
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...)

Reply

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 ?

Reply

Marsh Posté le 10-04-2003 à 11:44:32    

backdafuckup a écrit :


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...)


 
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.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

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++.

Reply

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 ?

:ouch:  
 
C'est ta classe CxxxDoc et xxx = nom de ton projet

Reply

Marsh Posté le 10-04-2003 à 11:51:28    

Solution propre :
 

Code :
  1. class CVariableElc {
  2. public:
  3.             CVariableElc();
  4.     virtual ~CVariableElc();
  5.     void    m_fnvSetVar1(type var1) { m_var1 = var1; }
  6.     void    .......
  7.     type    m_fnGetVar1() { return var1; }
  8.     type    .......
  9. private:
  10.     type    var1;
  11.     ......
  12. };


 
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


Message édité par VisualC++ le 10-04-2003 à 11:58:59
Reply

Marsh Posté le 10-04-2003 à 11:51:29    

polo021 a écrit :

:ouch:  
 
C'est ta classe CxxxDoc et xxx = nom de ton projet
 


 
Le pb, c'est qu'il n'y a pas de document dans une appli "dialogbox based" :D


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 10-04-2003 à 11:52:54    

Tu chipottes :o

Reply

Marsh Posté le 10-04-2003 à 11:53:58    

Tetragrammaton IHVH a écrit :


 
Le pb, c'est qu'il n'y a pas de document dans une appli "dialogbox based" :D


 :heink:  
tu me l'apprends

Reply

Marsh Posté le 10-04-2003 à 11:55:22    

polo021 a écrit :


 :heink:  
tu me l'apprends


 
bah oui, c'est pour ça que je ne fais jamais d'appli basée sur une dialogbox, ça sux.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed