Newbie braucht Hilfe bei Dialogen und DB

Helpseaker

Grünschnabel
Als absoluter Newbie benötige ich bei zwei Dingen ein wenig Hilfe.

Ich habe zunächst mal die Dialoge konstruiert, d.h. die stehen erstmal.

Wenn ich das Programm starte, möchte ich, dass es mit dem ersten Dialog startet. Dieser ist ein Dialog, indem sich der User anmelden, sein vergessen PW geben oder sich registrieren lassen kann. D.h., dieser Dialog soll zunächst immer bei Programmstart angezeigt werden.

Das nächste Problem ist, dass ich es noch nicht hinbekommen habe, die Dialoge zu verknüpfen, d.h. dass, wenn der User auf Registrieren clickt, auch der entsprechend neue Dialog den Anmeldedialog ersetzt.

Weiter benötige ich hilfe bei dem erstellen der zugehörigen Datenbank, in der zunächst mal die Benutzerdaten gespeichert und ausgelesen werden können. D.h., dass nach der Eingabe von Benutzername und Passwort, das Programm mit dem Hauptdialog startet.

Ich weiß, es sind viele Fragen, aber vielleicht könnt ihr mir weiterhelfen.

Besten Dank im voraus.
 
Welche Art Anwendung hast Du denn? Dialogbasiert, SDI, MDI?
Verwendest Du MFC?
Welche VisualStudio-Version verwendest Du?
 
Welche Art Anwendung hast Du denn? Dialogbasiert, SDI, MDI? SDI
Verwendest Du MFC? Ja
Welche VisualStudio-Version verwendest Du? 6.0
 
Dann solltest Du den Passwort-Dialog in der InitInstance vor der Erzeugung des MainFrame mit DoModal() starten. Dieser Dialog hat ja scheinbar drei Buttons: 'OK', 'Abbrechen' und 'Registrieren'. Für 'Registrieren' solltest du Dir eine Antwort-ID erzeugen (wie IDOK für OK oder IDCANCEL für Abbrechen). Wenn der 'Registrieren'-Button gedrückt wird rufst Du in der Behandlingsroutine dieses Buttons im Dialog die Funktion 'EndDialog(...)' mit der Antwort-ID als Parameter auf. Dadurch wird der Dialog beendet und DoModal gibt die Antwort-ID zurück.
Wenn DoModal IDOK zurückgegeben hat (OK-Button gedrückt), prüfst Du das Passwort und handelst entsprechend (PW ok oder nicht ok).
Wenn DoModal IDCANCEL zurückgegeben hat (Abbrechen gedrückt), verläßt Du InitInstance mit FALSE.
Wenn DoModal die selbstdefinierte Antwort-ID zurückgegeben hat, rufst Du Deinen Registrier-Dialog auf.
 
Danke für die schnelle Hilfe.

Leider hab ich noch nicht alles sofort verstanden. Kannst du das vielleicht ein wenig mit Beispiel-Code erklären?

Habe die Button: Einloggen (entspricht ja dann dem OK), Passwort vergessen (neuer Dialog geht auf) und Registrieren (Registrierungsdialog geht auf).

Ok, man könnte ja einen für Programm beenden erstellen.
 
Ich nehme jetzt mal folgendes an:
- Button 'Einloggen' hat die ID 'IDOK' und die Behandlungsroutine OnOK()
- Button 'Passwort vergessen' hat Die ID 'ID_FORGOT_PW' Und die Behandlungsroutine OnForgotPW()
- Button 'Registrieren' hat die ID 'ID_REGISTER' und die Behandlungsroutine OnRegister
- Deine Passwortdialogklasse heißt CPasswdDlg

CPasswdDlg.cpp:

Code:
 ...
CPasswdDlg::OnForgotPW()
{
  EndDialog(ID_FORGOT_PW);
}

CPasswdDlg::OnRegister()
{
  EndDialog(ID_REGISTER);
}
...
Applikation:
Code:
CMyApp::InitInstance()
{
  ...
  CWinApp::InitInstance();
  ...
  CPasswdDlg dlgPW;
  int iRet = dlgPW.DoModal();
  switch(iRet)
  {
  case ID_REGISTER:
    //hier Registrierungsdialog aufrufen
    break;
  case ID_FORGOT_PW:
    //hier Dialog für vergessenes Passwort aufrufen
    break;
  case IDOK:
    if(!PasswortOK(dlgPW.GetPassword()))
    {
      //Passwort falsch, Anwendung beenden
      return FALSE;
    }
    break;
  case IDCANCEL: //wenn Du noch einen Abbrechen-Button einbaust
  default:
    return FALSE:
    break;
  }
  ....
  CMainFrame* pFrame = new CMainFrame;
  ....
}

Ich hoffe, das hilft Dir etwas weiter.
 
Du hast zwar (löblicherweise) den Thread auf 'erledigt' gesetzt, aber es wäre schon nett, zu wissen, wie Du das jetzt gemacht hast.
 
Also, die Dialoge stehen soweit erstmal.

Wenn ich das Programm ausführe, kommt das Anwendungsfenster. Click ich mit der linken Maustaste hinein öffnet sich der Dialog DIALOG_START.

Dieser besitzt die Buttons:
IDC_BUTTON_START_EINLOGGEN,
IDC_BUTTON_START_PASSWORT VERGESSEN und
IDC_BUTTON_START_REGISTRIEREN.

Nun möchte ich dass beim Click auf den Registrierungsbutton, der entsprechende Dialog DIALOG_REGISTRIEREN sich öffnet und der DIALOG_START geschlossen wird.

Leider habe ich das mit der Hilfe von jokey2 noch nicht hinbekommen.
 
Zurück