memberVariablen aus vorher gehendem Dialog verwenden
-
Ich will aus einem vorher gehendem Dialog die inhalte meiner member-Variablen verwenden um sie auszuwerten und um die ergebnisse in ner liste darzustellen.
wenn ich einfach z.B. m_Tag benutze kommt nichtdeklarierter bezeichner.Wie kann ich diese mit einbeziehen und auswerten?
gruß wolfie
-
Also dein Dialog ist meist eine eigene Klasse die du wahrscheinlich nur
ein und ausblendest das heißt du mußt die Variable aus deiner Klasse holen.CDialogName.m_Tag;
[ Dieser Beitrag wurde am 03.07.2003 um 14:06 Uhr von SaM editiert. ]
-
ich hab das mal so probiert:
char* tag[]={CErste_Abfrage.m_Monat};
weil ich den inhalt ja in meiner liste ausgeben möchte.
und dann kommt der Fehler:
"CErste_Abfrage" : Ungültige Verwendung dieses Typs als Ausdruckhab ich da irgend was nich berücksichtigt?
gruß wolfie
-
Hi,
nicht
char* tag[]={CErste_Abfrage.m_Monat};sondern
CErste_Abfrage Abfrage; char* tag[]={Abfrage.m_Monat};Da bekannt sein muss von welchen Objekt du die Werte auslesen willst.
MFG
Kai
-
hi kai
das funktioniert trozdem noch nich
es kommt noch dieselbe fehlermeldung.hast du vielleicht noch ne idee wie es klappt oder was ich falsch gemacht hab?
gruß wolfie
-
Hi,
zeig doch mal ein wenig Quellcode, wo du es versuchst.
-
gedanklich mal so
//dateiname CDialogBase.h class CDialogBase: public CDialog { public: //... char* GetData() { return m_sStr; } private: char* m_sStr; }; // datei CDialogOver.h #include "CDialogBase.h" class CDialogOver: public CDialog { public: //... private: void HoleDaten() { // unter der annahme das CDialogOver ein kind von CDialogBase sein wird !!! CDialogBase* pWnd=(CDialogBase*)this->GetParent(); char xx=pWnd->GetData(); } };volker
[ Dieser Beitrag wurde am 04.07.2003 um 08:56 Uhr von vdittrich editiert. ]
-
Also mit diesem Quelltext da oben kann ich erst mal nichts anfangen.
naja bei mir siehts so aus:in meiner OnInitDialog der liste zum auswerten der memberV:
char string[8];
CErste_Abfrage Abfrage;
strcpy(string,Abfrage.m_Monat);
char* tag[]={string};
und in dem eingabefeld wessen memberV-inhalt ich in der liste ausgeben möchte:CRichEditCtrl* a=0;
a->SetEventMask(a->GetEventMask()|ENM_CHANGE);
das programm stürtzt aber immer ab.was mache ich falsch?
gruß wolfie
-
Was du mal zeigen musst wie und wo du den ersten Dlg aufrufst.
Ist der vorangegangene der ParentDlg ?
Rufst du beide Dlg aus dem ParentDlg auf ?
Dann können wir weiter machen.CErste_Abfrage Abfrage;erstellt eine Instanz der Klasse.
Wenn du bereits eine Instanz der DLG-Klasse hast dann brauchst du einen Zeiger darauf.
-
mein eingabe feld mit der member m_Monat:
void CErste_Abfrage::OnMonat()
{CRichEditCtrl* a;
a->SetEventMask(a->GetEventMask()|ENM_CHANGE);
}und meine OnInitDialog des dialogs mit dem listenfeld:
BOOL CAusgabe::OnInitDialog()
{
CDialog::OnInitDialog();char string[8];
CErste_Abfrage Abfrage;
strcpy(string,Abfrage.m_Monat);
char* tag[]={string};
char* fahrt[]={"Naundorf - Freiberg"};
char* anfang[]={"15356"};
char* strecke[]={"9,3"};
char* end[]={"15364,3"};LV_ITEM item;
m_AusLis.InsertColumn(0,"Tag",LVCFMT_LEFT,50,0);
m_AusLis.InsertColumn(1,"Fahrt",LVCFMT_RIGHT,150,1);
m_AusLis.InsertColumn(2,"Anfangs-Km",LVCFMT_RIGHT,100,2);
m_AusLis.InsertColumn(3,"Strecke",LVCFMT_RIGHT,100,3);
m_AusLis.InsertColumn(4,"End-Km",LVCFMT_RIGHT,100,4);
item.mask=LVIF_TEXT;for(int j=0; j<1; j++)
{
item.iItem=0;
item.pszText=tag[j];
item.iSubItem=0;
int itemNr=m_AusLis.InsertItem(&item);
item.iItem=itemNr;
item.iSubItem=1;
item.pszText=fahrt[j];
m_AusLis.SetItem(&item);item.iSubItem=2;
item.pszText=anfang[j];
m_AusLis.SetItem(&item);
item.iSubItem=3;
item.pszText=strecke[j];
m_AusLis.SetItem(&item);
item.iSubItem=4;
item.pszText=end[j];
m_AusLis.SetItem(&item);
}return TRUE; }
ja so siehts aus bei mir. was müsste ich denn ändern?
gruß wolfie
-
Wenn du schon MFC programmierst dann tue es auch.
Ein strcpy hat in MFC nicht verloren.char string[8]; sowieso nicht.
string ist eine Klasse der STLdie ganzen chars kannst du dir sparen. Nimm CString oder ein CStringArray.
Was du nicht gepostet hast ist der Aufruf der Dialoge und wo sie aufgerufen werden.
Benutze bitte die Codetags.
-
void CDritte_Abfrage::OnOK() { UpdateData(TRUE); CAusgabe dlg; dlg.DoModal(); UpdateData(FALSE); //CDialog::OnOK(); } void CErste_Abfrage::OnOK() { UpdateData(TRUE); switch(m_Rja) { case 0 : { CZweite_Abfrage dlg; dlg.DoModal(); }break; case 1 : { CDritte_Abfrage dlg; dlg.DoModal(); }break; UpdateData(FALSE); //CDialog::OnOK(); }so siehts aus.
gruß wolfie