Funktion nach Programmstart ausführen?!
-
hi @ all,
das problem hört sich banal an, hab aber trotzem damit zu kämpfen...
ich möchte nach dem programmstart eine funktion automatisch ausführen lassen, ohne das der user eine eingebe tätigen muss. klappt auch soweit, dass problem ist, das meine grafische oberfläche nicht richtig geladen wird. alle steuerelemente fehlen under werden erst nach der ausgeführten funktion geladen...kann mir bitte jemand sagen was ich falsch mache? bzw wo ich die funktion einbinden muss damit alles sauber läuft?
thx
-
im konstruktor kannst du die grundvariablen initialisieren.
oder in der OnInit() Funktion.
Die Funktionen z.b. eine combobox zu füllen musst du sogar in der oninit machen
diese fkt ist wie der name sagt für initialisierungen da, und wird IMMER ausgeführt. Erst dann kann der user die steuerelemente ansprechen
-
ich rufe meine fkt bereits in OnInit() auf und die fkt selbst läuft auch einwandfrei. mein problem ist, das meine grafische oberfläche erst nach ablauf der fkt richtig angezeigt wird, was aber nicht sinn der sache ist.
ich möchte nämlich während der funktion informationen anzeigen lassen.greetz
-
Hast du den Aufruf NACH dem Aufruf der Basisklasse gemacht?
-
ich hab jetzt mal meine fkt gaaaanz am schluss eingefügt... taugt aber trotzdem nix. hier mal die OnInit():
BOOL CCASCON_UpdateManagerDlg::OnInitDialog() { CDialog::OnInitDialog(); ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); m_Progress.SetRange32(0,100); m_Progress.SetPos(0); m_StaticIntro1.SetWindowText("System Update"); //meine FKT Update(); return TRUE; }
was vll ein problem sein könnte, während meiner fkt zeige ich eine progressbar an und lege mit sleep() eine feste zeitspanne fest, in der der user nichts tun kann und gezwungen ist das update durchzuführen.
könnte da eventuell der fehler liegen? ich meine, sollte ich für die progressbar vll einen eigenen threat erstellen?
-
du musst den dialog für eingaben disablen, nicht sleep aufrufen. während sleep kann dein programm auch nichts machen.
-
deflow schrieb:
könnte da eventuell der fehler liegen? ich meine, sollte ich für die progressbar vll einen eigenen threat erstellen?
Ich denke, das ist eine gute Idee.
-
@ ja_dann: wie kann ich dann die progressbar eine bestimmte zeit durchlaufen lassen?
@ estartu_de: kannst du mir vll sagen wie ich das am schnellsten hin bekomme? bitte?!
thx
-
deflow schrieb:
@ estartu_de: kannst du mir vll sagen wie ich das am schnellsten hin bekomme? bitte?!
Nein, ich hab hier auch nun nen Versuch meinerseits rumliegen, der nicht funktioniert.
Kannst du dem Benutzer nicht einfach ne Sanduhr zeigen?
CWaitCursor csr;
an den Anfang der Updatefunktion und dann kann der nix machen und wartet geduldig. Was soll der bei der Sanduhr auch sonst tun?
-
der cursor wär ne idee, möchte ich aber ungerne machen.
ich versuche gerade mit den threads zu experimentieren
wenn ich das problem mit den threads gelöst habe poste ichs.hier der link zu der gui... das ihr euch das mal vorstellen könnt