Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782

    [C] win32: individuare la fine del ridimensionamento di una finestra

    Spero che il titolo sia sufficientemente chiaro.

    Creo e gestisco una finestra attraverso le API win32. Il contenuto della finestra necessita di notevoli quantità di calcoli per essere visualizzato. Una funzione apposita esegue unicamente i calcoli. Nella gestione del messaggio WM_PAINT gestisco invece la sola visualizzazione dei dati precedentemente calcolati.

    Quando la finestra viene ridimensionata è necessario richiamare la funzione di calcolo per aggiornare i dati. Avevo pensato di richiamare tale funzione nella gestione di WM_SIZE. Tutto funziona correttamente ma la cosa non è molto comoda. WM_SIZE viene infatti inviato per ogni spostamento del mouse durante il drag del bordo finestra e ciò provoca una invocazione a ripetizione della pesante funzione di calcolo. A me servirebbe poter rilevare la fine del ridimensionamento, ovvero l'istante in cui l'utente rilascia il tasto del mouse, in modo da richiamare la funzione una sola volta.

    Qualche idea?
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  2. #2
    Non conosco bene le api cmq, puoi provare a richiamare la funzione ogni volta che il tasto del mouse viene rilasciato, controllando, con un'apposita variabile di controllo, se l'utente ha ridimensionato la finestra...

    ES:
    bool controllo; //globale
    //...
    Evento ridimensiona
    {
    controllo = true
    }

    Evento rilascio tasto mouse
    {
    if (controllo)
    funzione ();
    controllo = false;
    }
    Experience is what you get when you don’t get what you want

  3. #3
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Ho trovato la soluzione basandomi sui messaggi WM_ENTERSIZEMOVE e WM_EXITSIZEMOVE. Ora non ho tempo ma per chi fosse interessato domani posto la soluzione completa.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.