cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 2006
-
11 sept. 2005 à 02:59
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDerniè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
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 :
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ï
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 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.
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 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;