Ich brauche einen Login-Fenster(Dialog)
-
Danke estartu_de,
PS: Ich hatte deine Frage auch falsch verstanden...
Werde es versuchen in Zukunft besser zu beschreiben !
Danke Nochmal!
-
Tut mir Leid aber ich habs durchgelesen und so verstanden dass du eine fertige Klasse suchst die du einfach einsetzen kannst und da ich gerade davor eine Wo-gibt-es-was-fertiges-frage gelesen hab, hab ich mich gefragt ob es auch Leute gibt die selber denken wollen. Sorry.
Deine Frage wurde ja schon beantwortet. Grundsätzlich würd ich alle Funktionen und Methoden die was mit dem Programmstart zu tun haben in das OnInitDialog packen...
-
ins OnInitDialog??? ich würds ins InitInstance geben !!!
-
Spielt das ne grosse Rolle ob er den Logindialog beim Initalisieren der Instanz aufruft oder beim initialisieren des eigentlichen Dialogs? Die Anwendung (das sichtbare) startet ja sowieso erst nach dem Abarbeiten der beiden...
-
mir ist das egal wie du das dann machst, es war ja nur ein vorschlag.
hast du nun noch irgendwelche schwierigkeiten, diesen dialog zu erstellen ??ein vorschlag:
für die passwort eingabe nimm bitte kein textfeld mit der option "passwort", weil über ein cwnd-attach drauf kann man diese option relativ einfach deaktivieren und das passwort ist daraufhin sichtbar !!
-
nonamebody schrieb:
ein vorschlag:
für die passwort eingabe nimm bitte kein textfeld mit der option "passwort", weil über ein cwnd-attach drauf kann man diese option relativ einfach deaktivieren und das passwort ist daraufhin sichtbar !!
Wie macht man es besser?
InitInstance gilt übrigens für ALLE Anwendungen, OnInitDialog nur für dialogbasierende.
Außerdem handelt es sich ja sowieso um eine FormView Anwendung (also SDI oder MDI).Wieso wird hier immer von Dialogen ausgegangen?
-
Ich hoffe mal das du weißt wie man nen Dialog aufruft. Hier der Code:
1.if (m_dDEINEDIALOGKLASSE.DoModal () == IDOK) { StayOnTop(); // Dialogfeld aktualisieren UpdateData(FALSE); }
2. Deine Dialog Klasse includieren.
3. Dann bei deiner Hauptklasse im Header unter Private:
private: DEINEDIALOGKLASSE m_dDEINEDIALOGKLASSE;
Damit sollte der deinen Passwortabfrage Dialog aufrufen und dann wenn das ganze mit einem Richtigen Passwort dann geschloßen wird den Hauptdialog aufrufen.
Das müsste sein was du suchst. Nur das der Halt wartet bis dein Passwortabfrage Dialog beendet wurde und nicht bis das richitge Passwort eingegeben ist.
-
Danke Leute
füt Eure Mühe!
Schönen Abend noch!
-
estartu_zu_hause schrieb:
nonamebody schrieb:
ein vorschlag:
für die passwort eingabe nimm bitte kein textfeld mit der option "passwort", weil über ein cwnd-attach drauf kann man diese option relativ einfach deaktivieren und das passwort ist daraufhin sichtbar !!
Wie macht man es besser?
Das gewöhnliche MFC-Passwortfeld ist nur ein gewöhnliches "verstecken der Buchstaben". Wenn du nun mit einem externen Programm ein Handle auf dieses Editfeld holst, kannst du ganz einfach sein Password-Flag bei den Eigenschaften entfernen da du vollen Zugriff darauf hast. Wenn das weg ist ist natürlich sofort das eigentliche Passwort sichtbar.
Beim modifizierten hingegen wird es etwas anders gehandhabt: Dass es eine von CEdit abgeleite Klasse benötigt sollte wohl klar sein da man Modifikationen dran vornehmen muss. Der eigentliche "Trick" dabei ist, die Anzeige (das was man auf dem Control sieht) und das eigentliche Passwort zu trennen, sozusagen 2 getrennte Variablen zu erstellen. Das drücken einer Taste wird in der EN_UPDATE-Klasse abgefangen und beide werden auf den neusten Stand gebracht. Mit einem Unterschied: Das angezeigte ist nur eine Anreihung von Zeichen wie '*' oder 'x' mit der korrekten Länge die man eingegeben hat. Hier muss man also immer nur darauf reagieren ob der User ein Zeichen hinzugefügt hat oder gelöscht oder gar das ganze Control geleert etc. Beim zweiten fängt man dann die genaue Eingabe ab und editiert die Variable dementsprechend. So nützt es nichts wenn du dir ein Handle auf das CEdit holst, du siehst wieder nur lauter Sternchen...
-
Ahhhh, coole Idee.
Merk ich mir, danke!
-
korrekt !
-
Falst de das noch nicht gelöst hast, http://www.functionx.com/visualc/applications/login.htm Glaube aber das de das schon fertig hast
-
Wenn du nun mit einem externen Programm ein Handle auf dieses Editfeld holst, kannst du ganz einfach sein Password-Flag bei den Eigenschaften entfernen da du vollen Zugriff darauf hast. Wenn das weg ist ist natürlich sofort das eigentliche Passwort sichtbar.
Wie kann man man ein Handle auf ein externes Programm machen? Habe dazu kein Lösungsansatz! jemand hat hier zwar auch schon eine solche Frage gestellt, doch die wurde leider nicht beantwortet
-
Hier kannst du dir den Quelltext runterladen und anschauen wie man ein Handle holt...
-
Pulse schrieb:
Hier kannst du dir den Quelltext runterladen und anschauen wie man ein Handle holt...
exactly what I need - thanks a million
aja, hier hab ich vollständigkeithalber auch noch ein codeschnipsel:
void CGetExternalHandleDlg::OnButtonProccess(){ CString sProgNameToClose = "MyProgram": CWnd* pWnd = NULL; pWnd = CWnd::FindWindow(NULL, sProgNameToClose); if(pWnd!=NULL){ pWnd->PostMessage(WM_CLOSE, NULL, NULL); } else{ AfxMessageBox("Program not found"); } }
Bei der Ausführung der Methode wird eine Applikation mit dem Fensternamen sProgNameToClose gesucht unf falls vorhanden dann geschlossen.
-
MAcht alles nur Sinn wenn man das Passwort speichern kann und bei Programmstart dann wieder in das Edit schreibt.(Vorstellbar bei eingabe des Nutzernamens so wie bei den Browsern. Sollte man aber nie machen) Bei einer Eingabe ist das alles nicht notwendig. Der Nutzer weiß ja was er eingibt. MS hat es so gedacht wie bei allen maskierten Eingaben. Ein anderer der über die Schulter sieht kann nicht sehen was eingegeben wurde.