Attach ve Detach fonksiyonları statik fonksiyonlar değildir. Attach başka bir biçimde elde edilmiş olan bir hWnd handle değerini sınıfın m_hWnd veri elemanına yazar ve fonksiyonun çağrıldığı nesnenin adresiyle de kalıcı handle tablosunda bir giriş oluşturur. Attach fonksiyonundan sonra artık handle bir pencereyle ilişkilendirilmiş olur ve MFC mesaj mekanizmasına katılır. Tipik olarak Attach fonksiyonu şu durumda kullanılmaktadır: “Elimizde CreateWindow API fonksiyonuyla elde edilmiş olan bir hWnd handle değeri olsun. Biz bu handle değerini CWnd’den türetilmiş bir sınıf ile ilişkilendirmek isteyelim. Yani sanki bu sınıf ile Create fonksiyonu çağrılarak pencere fonksiyonu yaratılmış olsun.

Aslında CWnd::Create fonksiyonu CreateWindow API fonksiyonuyla handle’ı elde ettikten sonra burada olduğu gibi Attach fonksiyonuyla tabloya yazmaktadır.
Benzer biçimde CWnd::Detach CWnd sınıf nesnesine ilişkin girişi handle tablosundan siler. Normal olarak bir pencere CWnd::DestroyWindow fonksiyonuyla yok edilir (CWnd sınıfının bitiş fonksiyonu bu fonksiyonu çağırmaktadır). CWnd::DestroyWindow API fonksiyonunu çağırdıktan sonra Detach fonksiyonuyla tablodan girişi silmektedir. Programcı istediği zaman Detach fonksiyonuyla bir CWnd nesnesini mesaj mekanizmasından çıkarabilir (Detach fonksiyonu ilgili girişi tablodan sildikten sonra sınıfın m_hWnd elemanına NULL yerleştirmektedir). Böylece iki kere Detach yapılamaz.