Wenn das Dialog minimiert ist?
-
Hallo Forum,
wie kann ich das abfangen wenn das Dialog minimiert ist, ich möchte dann das die der Text in der Taskleiste anderst ist?lg
pixel
-
Über den OnSysCommand-Handler: nId == SC_MINIMIZE
-
hi connan,
hab nur das in OnSysCommand()void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }und das funktioniert auch nicht!

-
WM_SIZE abfangen und auf SIZE_MINIMIZED und SIZE_RESTORED prüfen. Evtl. geht das.
-
Sehr eigenartig
die AboutBox sollte eigentlich funktionieren. Was sagt denn der Debugger? Wird der Handler aufgerufen?
-
hi,
nein, keine fehler, nichts!
auser ich hab etwas gelöscht ohne es zu merken, aber würde der compiler da nicht meckern wenn er etwas nicht finden kann???

-
Wenn dann hast Du wahrscheinlich was bei den MessageMaps vermehrt. Aber versuch doch mal den Cursor in OnSysCommand zu platzieren und dann STRG+F10 zu drücken. Sobald die Codestelle erreicht wird sollte der Debugger das merken. Versuch mal jetzt die Aboutbox aufzurufen und sag mal ob der Debugger sich gemeldet hat.
-
Hi,
möchte jetzt weiter hier machen da ich das noch nicht erledigt habe,
ich habe die ON_WM_SYSCOMMAND() aus mir unbekannten grund gelöscht, k.a. warum!Jetzt springt der Debugger auch in die OnSysCommand() rein!
Jetzt ist fertig:
So hab ichs gemacht:void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else if(nID == SC_MINIMIZE) { // hier Funktion aufrufen die die Titelleiste neu Beschriftet usw. ShowWindow(SW_MINIMIZE); SetAppText(); } else if(nID == SC_RESTORE) { ShowWindow(SW_NORMAL); SetWindowText(L""); } else { CDialog::OnSysCommand(nID, lParam); } }Grüsse
pixel
-
Hallo Forum,
muß den Thread nochmal aufgreifen, wie bekomme ich es hin das der Text in der Taskleiste ständig aktuallisiert wird solange das Dialog minimiert ist,
hat jemand eine Idee?
Mit der Schleife war keine gute Idee, die war endlos!
lg
pixel
-
SetTimer
-
Danke ......,
erledigt!
mfg
pixel
-
So hab ich das gemacht:
// in die MessageMap eintragen: ON_WM_TIMER() // weiter... CMyDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else if(nID == SC_MINIMIZE) { // hier Funktion aufrufen die die Titelleiste neu Beschriftet usw. ShowWindow(SW_MINIMIZE); OnStartTimer(); // Initialisiert den Timer } else if(nID == SC_RESTORE) { ShowWindow(SW_NORMAL); SetWindowText(L""); OnStopTimer(); //hält den Timer an } else { CDialog::OnSysCommand(nID, lParam); } } // die Funktion OnStartTimer(); void CMyDlg::OnStartTimer() { nIDEvent = SetTimer(1, 1000,0); // jede secunde den Windowtext aktuallisieren... } void CMyDlg::OnStopTimer() { KillTimer(nIDEvent); } afx_msg void CMyDlg::OnTimer(UINT nIDEvent) { CString csWindowText = L"Der Text"; // irgend ein neuer Windowtext... SetWindowText(csWindowText); CDialog::OnTimer(nIDEvent); } // diese Funktionen sind natürlich auch in der header drin..es funktioniert...
pixel