Wenn das Dialog minimiert ist?



  • 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! 😞


  • Mod

    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


Anmelden zum Antworten