Symbole anordnen Position



  • Hallo zusammen,
    kann mir jemand sagen, ob man das Symbol eines minimierten Fensters in einer MDI Anwendung auch an eine andere Position als links unten positionieren kann? An der Stelle habe ich nämlich ein verankertes Fenster, das sich in der Größe nicht verändern läßt. Wenn ich nun auf minimieren gehe, setzt er mir mein Symbol hinter das feste Fenster. 😞 In Zukunft möchte ich aber die Symbole rechts von diesem Fenster positionieren! Weiß jemand ob und wie das geht?

    Gruß
    rg_Basser



  • Versuch mal, OnMinimize abzufangen und dort MoveWindow aufzurufen



  • Hallo Renè,
    ist 'ne gute Idee gewesen, aber mit MoveWindow erreiche ich bloß, dass das Fenster beim Wiederherstellen in die Position geht, die ich in MoveWindow angegeben habe. Vorher verschwindet aber das Fenster trotzdem minimiert hinter mein festes Fenster 😞



  • @all,
    gibt es eine Funktion OnMinimize 😕 Ich suche verzweifelt danach, finde aber nichts! Ich habe bisher nur Funktionen vor (DefWindowProc())oder nach der Minimierung (OnSize()) gefunden! Ich brauche aber die Funktion, die für das Minimieren zuständig ist, damit ich evtl. entsprechende Koordinaten angeben kann. Ich habe auch schon in etlichen Foren nach diesem Thema gesucht, leider ohne Erfolg 😡 . Scheint wohl ein unwichtiges Problem zu sein 😞



  • Versteh ich net....

    OnSize wird doch aufgerufen, bevor das Fenster minimiert gezeichnet wird, dort machst Du dann einfach ein MoveWindow, und schon wirds dorthin verschoben, wo du willst



  • @Renè,
    tut so leider nicht (ich hab's jedenfalls mit OnSize und MoveWindow nicht hingekriegt. Aber dafür habe ich eine andere Lösung:

    // Zuständig für die Organisation minimierter Fenster, um eine individuelle Positionierung der 
    // minimierten Fenster zu erreichen.
    LRESULT CChildFrame3::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
        if(message == WM_SYSCOMMAND)
        {
            // Speicherung der aktuellen (nichtminimierten) Fensterdaten.
            WINDOWPLACEMENT wp; 
            GetWindowPlacement(&wp);
    
            // Wird 'Minimiern'-Button gedrückt
            if((wParam & 0xFFF0) == SC_MINIMIZE)
            {           
                CPoint pMin;        
    
                // muß gesetzt werden, um Position manuell eingeben zu können
                wp.flags = WPF_SETMINPOSITION;
    
                // Fenster soll minimiert werden
                wp.showCmd = SW_MINIMIZE;
    
                // Funktion der Applikation, die die Anzahl minimierter Fenster hoch- bzw. Rücksetzt 
                theApp.SetMinimized(1);
    
                // Funktion der Applikation, die die Anzahl minimierter Fenster zählt
                int nMinimized = theApp.GetMinimized();
    
                // Berechnung der Koordinaten
                int nMaxRow = (m_rcMiniArea.bottom + 24 - m_rcMiniArea.top) / 24;
                int nAreaCols = (nMinimized - 1 ) / nMaxRow;
                int nAreaRows = (nMinimized - (nAreaCols * nMaxRow)) - 1;
                pMin.x = m_rcMiniArea.left + (nAreaCols * 160);
                pMin.y = m_rcMiniArea.bottom - (nAreaRows * 24);            
                wp.ptMinPosition = pMin;
    
                // Setzten des minimierten Fensters
                SetWindowPlacement(&wp);            
            }
    

    Natürlich müssen dann noch die minimierten Fenster wieder zurückgesetzt werden, falls eines dieser Fenster wiederhergestellt oder maximiert wird. Doch ansonsten tut`s 😃


Log in to reply