Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » oninit kennt keine Variable...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.04.2009, 11:38 Uhr
~tomycat
Gast


hallo,
ich habe mit Visual c++ 2003 ein mfc erstellt.

Ein Edit Control mit der Variable m_checkx und CString xxx erstellt.

Wenn ich hinter meinem Knopf....

C++:
if(1) // <-hier steht normalerweise eine auslesefunktion vom registiy
{
xxx = "123"; //<- statt 123 steht normalerwiese mein wert was ich ausgeselen habe.
Update(FASLE);
}



geht das ohne Probleme.
ich will aber dass der Code 1 mal ausgeführt wird bei Programmstart.
ok,
ich stecke den Code von oben in die .... ::OnInitDialog() von der C****dlg.cpp
Der Compilter sagt dann, er eknnt die xxx Vaiable nicht.Warum?
Ich würde mich auch freuen,wenn der Knopf,bei Programmstart einmalgedrückt wird.
Danke im voraus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.04.2009, 12:46 Uhr
~tomycat
Gast


möchte etwas hinzufügen...
ich habe ein Hauptfenster, da geht das mit dem Oninit und Vaiablen.
Im Hauptfenster habe ich einen Knopf der ein neue Fesnter mit Create öffnet.

C++:
    Chochund* pDialog; //Csystemanzeige ist meine Klasse was ich erstellt haeb


   //pDialog initialized to NULL in the constructor of CMyWnd class
   pDialog = new Chochund(); //Csystemanzeige  ist meiner erstellt Klasse.
   //Check if new succeeded and we got a valid pointer to a dialog object
   if(pDialog != NULL)
   {
      BOOL ret = pDialog->Create(IDD_hochund,this); //IDD_SYSTEM ist mein Dialogfenster
      if(!ret)   //Create failed.
         AfxMessageBox("Error creating Dialog");
      pDialog->ShowWindow(SW_SHOW);
   }
   else
      AfxMessageBox("Error Creating Dialog Object");



zu meinem Problem, sobald ich das Fenster Chochund mit dem Button öffne, sollen Werte sofort in der Edit Control von Chochund eingetragen werden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.04.2009, 14:32 Uhr
Bruder Leif
dances with systems
(Operator)



--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.04.2009, 16:40 Uhr
mmc20
puss in boots


hi,
also in der OnInitDlg() sollten eigentlich die membervariablen schon bekannt sein

du kannst sie auch gleich nach dem Create(...) von deinem "hauptfenster" aus setzen

C++:
...
   if ( pDialog != NULL )
   {
      BOOL ret = pDialog->Create( IDD_hochund, this ); //IDD_SYSTEM ist mein Dialogfenster
      if ( !ret )   //Create failed.
         AfxMessageBox( "Error creating Dialog" );
      else {
         pDialog->m_strEditBox = "testtext"; // <--- hier
         pDialog->ShowWindow(SW_SHOW);
      }
   }
...

Dieser Post wurde am 19.04.2009 um 16:42 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.04.2009, 21:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von mmc20:
hi,
also in der OnInitDlg() sollten eigentlich die membervariablen schon bekannt sein

du kannst sie auch gleich nach dem Create(...) von deinem "hauptfenster" aus setzen

C++:
...
   if ( pDialog != NULL )
   {
      BOOL ret = pDialog->Create( IDD_hochund, this ); //IDD_SYSTEM ist mein Dialogfenster
      if ( !ret )   //Create failed.
         AfxMessageBox( "Error creating Dialog" );
      else {
         pDialog->m_strEditBox = "testtext"; // <--- hier
         pDialog->ShowWindow(SW_SHOW);
      }
   }
...


bei nem sauberen design nicht, da darf nicht jeder wildfremde dialog irgendwelche variablen ändern
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.04.2009, 15:15 Uhr
mmc20
puss in boots


trotzdem sollten die "eigenen" member-vars des dialogs in der OnInitDlg() schon bekannt sein.
und wenn er die mit dem klassenassi anlegt dann sind die auch public, und können somit vom Parent aus gelesen/geschrieben werden.

Zitat von FloSoft:
bei nem sauberen design nicht...

äh, das iss MFC
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.04.2009, 16:34 Uhr
~tomycat
Gast


hi,
ok danke, habs hinbekommen...
ich habe einen heisen Tip bekommen, ich erstelle eine oninit in der hochund.cpp und der .h

nächtes Problem...
sobald ich aus dem Hauptfenster den Knopf anklicke mit hilfe create() öffnet sich mein hochund Fenster.Ich will jetzt dass ich mit F5 die Klasse ...

void Chochund::OnBnClickedWerteneu()

... 1 mal ausgeführt wird.

ok,Buch aufgeschlagen nach onkeydown gesucht, wm_onkeydown angeklickt und den Quellcode eingefügt, F5 reagiert nicht, in meinem Hauptfenster geht das, aber nicht im hochund Fenster, warum




C++:
void Chochund::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.
   char cChar;              // Zeichen der gedrückten Taste
   HCURSOR hCursor = NULL;  // Handle zum anzuzeigenden Cursor
   HCURSOR hPrevCursor = NULL; // Handle zum letzten Cursor

   // Code der gedrückten Taste in Zeichen umwandeln
   cChar = char(nChar);

   // Ist Zeichen ein "S"?
  // if (cChar == 'x')
if (cChar == VK_F5)
{
     MessageBox("2");
  OnBnClickedWerteneu(); // <----------------hier !!!!
UpdateData(FALSE);
} // Ist Zeichen ein "B"?
   if (cChar == 'B')
     // Balkencursor laden
     hCursor = AfxGetApp()->LoadStandardCursor(IDC_IBEAM);

   // Ist Zeichen ein "U"?
   if (cChar == 'U')
     // Sanduhrcursor laden
     hCursor = AfxGetApp()->LoadStandardCursor(IDC_WAIT);

     // Ist Zeichen ein "X"?
   if (cChar == 'X')
   {
     // Pfeilcursor laden
     hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
     // Cursorflag setzen
///     m_bCursor = TRUE;
     // Bildschirmcursor setzen
     hPrevCursor = SetCursor(hCursor);
     // Letzten Cursor zerstören, um Ressourcen freizugeben
     if (hPrevCursor)
        DestroyCursor(hPrevCursor);
     // Anwendung beenden
     OnOK();
   }
   else
   {
     // Bildschirmcursor setzen
     if (hCursor)
     {
       hPrevCursor = SetCursor(hCursor);
       // Cursorflag setzen
///       m_bCursor = TRUE;
       // Letzen Cursor zerstören, um Ressourcen freizugeben
       if (hPrevCursor)
         DestroyCursor(hPrevCursor);
     }
   }

    CDialog::OnKeyDown(nChar, nRepCnt, nFlags);

}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.04.2009, 19:24 Uhr
~tomycat
Gast


....ich habe dazu noch ein Problem...

In dem Chochund Fenster habe ich einen Knopf, der soll "qwert" in das Edit Control von Hauptfenster reinschriben.Hat jemnd eine Idee?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: