Besoin de méthode pour les classes !!!

Résolu
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 11 sept. 2005 à 02:59
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 11 sept. 2005 à 14:54
Boinsoir,

Comme expliqué sur un autre post (pas trés clair il est vrai), j' ai un soucis avec l' utilisation de 2 classes.

Mon programme se constitue com' ca :

1 classe wxFrame qui est la classe principale de mon programme, avec des objets;
+1 classe wxDialog qui est une classe pour un dialog qui s' affiche sur clik dans le menu;

Mon soucis, c' est que quand j' ai construit mon wxDialog a partir de ma frame, il faut que je fasse marcher le bouton "envoyer" que contient ce dialog; vous suivez toujours???

Ce bouton doit appeller une fonction construite dans ma classe frame, mais je n' arrive pas a utiliser les fonctions de wxFrame à parir de wxDialog car c' est wxDialog qui est l' amie de wxFrame, donc je peut utiliser les fonctions membres de wxDialog à partir de wxFrame (construction) mais pas l' inverse;
moi je veux pouvoir utiliser une fonction de wxFrame dans wxDialog ET l' inverse.........
Hum, je pense que je n'emploi pas la bonne méthode car apparrament ceci n' est pas possible(erf, j' en sais rien en fait)

voila mes classes :

class FTPclientFrm : public wxFrame
{
private:

DECLARE_EVENT_TABLE()

public: FTPclientFrm( wxWindow *parent, wxWindowID id 1, const wxString &title _T("FTPclient"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = THIS_DIALOG_STYLE);
~FTPclientFrm();
friend class CommandDialog; //déclare comme amie la classe wxDialog !
////GUI Control Declaration Start
wxFTP *ftp;
public :
enum
{
////GUI Enum Control ID Start
ID_COMDIALOG = 1030 ,
////GUI Enum Control ID End


ID_DUMMY_VALUE_ //Dont Delete this DummyValue
}; //End of Enum;
void FTPclientFrmClose(wxCloseEvent &event);
void CreateGUIControls();


void connect();
void result();
void EnvoyerCommande();
};
/*
classe de Dialogue envoi de commandes
*/
class CommandDialog : public wxDialog
{
public: CommandDialog( wxWindow *parent, wxWindowID id 1, const wxString &title wxT("CommandDialog"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = CommandDialog_STYLE);
~CommandDialog();
wxButton *envoyer;
wxTextCtrl *EditCommand;
wxStaticText *StaticTextCommand;
private:
DECLARE_EVENT_TABLE()


public:
enum
{
////GUI Enum Control ID Start
ID_BUTTONENVOYER = 2003,
ID_EDITCOMMAND = 2002,
////GUI Enum Control ID End
ID_DUMMY_VALUE_ //Dont Delete this DummyValue
}; //End of Enum


void CommandDialogClose(wxCloseEvent& event);
void CreateGUIControls(void);
void envoyerClick(wxCommandEvent &event);
wxString command();
};

donc, avec ca je construit mon CommandDialog dans FTPclientFrm :

m_comDialog = new CommandDialog(this, ID_COMDIALOG,
"Envoi de commande",
wxDefaultPosition, wxDefaultSize,
wxDEFAULT_DIALOG_STYLE);

m_comDialog->SetSize(195,118);
m_comDialog->Center();
m_comDialog->Show(true);

jusque la pas de soucis........
Je suis dans le dialog, dans ce dialog il y a un bouton et 1 champs de texte, je voudrai que lors du clik sur le bouton, on envoi la fonction membre de FTPclientFrm
void EnvoyerCommande(); par exemple ,et puis result(); aussi tant qu' on y est.

code :
void FTPclientFrm::EnvoyerCommande()
{
if(ftp->IsConnected() == true)
{
wxString com = m_comDialog->command();
ftp->SendCommand(com);
result();
}
return;
}
wxString com = m_comDialog->command();
est une fonction membre de CommandDialog implémentée com' suit :

wxString CommandDialog::command()
{
wxString cmd = EditCommand->GetValue();
return cmd;
}


Bon, alors ces classes on été réduites pour le post (y a pas tous les objets et fonctions)mais y a l'essentiel que je veux faire interagir;


Est-ce que je m'y prends bien pour utiliser les classes???


Comment récupérer des fonctions de 2 classes dans les deux sens?
PS = Je me rends dingue depuis 3 jours pour envoyer une fonction de FTPclientFrm dans CommandDialog tout en envoyant des fonctions de CommandDialog dans FTPclientFrm;
aïaÏaï


event.Merci();
@+;
ROOT_DIEU Alias satellite34

2 réponses

cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
11 sept. 2005 à 10:56
Et pourquoi pas un pointeur CommandDialog dans FTPclientFrm et inversément ?

Exemple:

class CommandDialog
{
public:
FTPclientFrm * m_ftp;
}

class FTPclientFrm
{
public:
CommandDialog * m_cmdDialog;
}

après avoir initialisé les deux instances, tu n'as plus qu'à les affecter aux deux membres des classes.
Après tu auras un accès aux fonctions/membres public.

http://www.poppyto.net LE site pour les bassistes
3
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
11 sept. 2005 à 14:54
bonjour,

je viens d'essayer ca maiss il faut absolument que je construise un FPclientFrm à partier de CommandDialog, ce qui revient a lancer une 2e fois mon programme, moi je veux utiliser par exemple l' objet ftp qui est construit dans FTPclientFrm, a partir de CommandDialog, mais le meme ,pas un new!

car quand je fais, dans CommandDialog
FTPclientFrm *myFrame = new FTPclientFrm(NULL);
myFrame->send(event);

ca envoi bien la fonction send mais d' une autre instance de FTPclientFrm vu kia new;

La, franchement, je nage.
http://www.cppfrance.com/forum.v2.aspx?ID=557054, je comprends pas vraiment ce qu' il veut dir par la.

event.Merci();
@+;
ROOT_DIEU Alias satellite34
0
Rejoignez-nous