Dovremmo aggiungere il codice di annullamento della sottoscrizione durante la distruzione della finestra di dialogo?

StackOverflow https://stackoverflow.com/questions/1818106

  •  10-07-2019
  •  | 
  •  

Domanda

Cosa succederà quando si esegue la sottoclasse di una finestra di dialogo e la finestra di dialogo viene chiusa?

Lo scenario è che sto eseguendo la sottoclasse di una finestra di dialogo e l'applicazione può avviare molte istanze di quella finestra di dialogo.

È necessario aggiungere il codice di annullamento della sottoscrizione a tutte le finestre di dialogo nella loro logica di distruzione.

Penso che quando le finestre di dialogo vengono chiuse non è necessario cancellarle perché le finestre di dialogo sono già state distrutte.

È stato utile?

Soluzione

Se stai usando la sottoclasse delle istanze (SetWindowLongPtr), allora da quando la finestra viene abbattuta non importa quale WndProc sta usando - sta per svanire comunque.

Se stai usando la sottoclasse globale (SetClassLongPtr), probabilmente sarebbe una buona idea rimuovere la sottoclasse una volta che ultima finestra della sottoclasse è chiusa (cioè non per finestra) in modo che eventuali finestre future creato con quella classe non viene sottoclassato - a meno che non sia quello che vuoi, ovviamente.

Altri suggerimenti

Supponendo che tu stia parlando direttamente API Win32, quindi sì. Tuttavia, tieni presente che se hai delle risorse che gestisci manualmente, devi averle riordinate nel messaggio WM_CLOSE.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top