mfc cdialog

mfc cdialog - C++ - Programmation

Marsh Posté le 25-03-2006 à 15:40:59    

comment recuperer le dernier etat des bouttons apres la reouverture d'1 boite de dialogue(je ferme 1 boite de dialog (retour a la page precedente Onok() )donts les statuts de ses boutton ont changés et quand je l'appelle a nouveau (domodal())elle s'affiche avec le statut initial (les modification des boutton n'est pris en charge) que puis-je faire?

Reply

Marsh Posté le 25-03-2006 à 15:40:59   

Reply

Marsh Posté le 26-03-2006 à 17:48:19    

Mémoriser/restaurer le contexte du dialogue à chaque fermeture/ouverture? Qu'est-ce que tu entends par récupérer l'état des boutons ?

Reply

Marsh Posté le 27-03-2006 à 00:11:27    

memoriser

Reply

Marsh Posté le 27-03-2006 à 09:18:53    

Gérer une structure ou un objet dans le dialogue. Ajouter une méthode d'initialisation et de récupération de la structure. Installer les valeurs initiales dans le dialogue avant l'ouverture de celui-ci et récupérer les nouvelles valeurs sur OK.
 

Code :
  1. // Déclaration
  2. class DialogData{
  3. public:
  4. DialogData();
  5. private:
  6. CString m_strData1;
  7. ...
  8. friend class ContextDialog; // ContextDialog peut accéder aux membres protégés
  9. };
  10. class ContextDialog : public CDialog
  11. {
  12. public:
  13.    ContextDialog(const DialogData& );
  14.    virtual ~ContextDialog();
  15. private:
  16.    enum { IDD = IDD_CONTEXTDIALOG };
  17.    DialogData m_data; // données du dialogue échangeables par copie
  18. protected:
  19.    void DoDataExchange(CDataExchange* pDX);
  20. public:
  21.    void GetDialogData(DialogData& ) const;
  22. };
  23. // Implementation
  24. ContextDialog::ContextDialog(DialogData& dd)
  25. :m_data(dd), //copie de l'argument
  26. CDialog(IDD)
  27. {
  28. }
  29. ...
  30. void ContextDialog::DoDataExchange(CDataExchange* pDX)
  31. {
  32.    // Echange de données en direct sur les variables facilité par le friend ContextDialog dans DialogData.
  33.    DDX_Text(pDX, IDC_VAR1, m_data.m_strVar1);
  34.    // autres variables à traiter...
  35. }
  36. void ContextDialog::GetDialogData(DialogData& dd) const
  37. {
  38.    // copie des données non réflexive
  39.    if (&this->m_data != &dd)
  40.       dd = m_data;
  41. }
  42. // Code client
  43. DialogData dlgData;
  44. // TODO: initialiser dlgData
  45. ContextDialog dialog (dlgData);
  46. if (dialog.DoModal() == IDOK)
  47. {
  48.    // écrase dlgData avec les nouvelles valeurs modifiées dans le dialogue
  49.    dialog.GetDialogData(dlgData);
  50. }


Message édité par slash33 le 27-03-2006 à 09:32:28
Reply

Sujets relatifs:

Leave a Replay

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