MFC sınıf sistemi içerisinde yüzden fazla sınıf ve binlerce üye fonksiyon vardır. Sınıf sisteminin en tepesinde CObject denilen bir sınıf bulunur. Bu CObject sınıfı polymorphic uygulamalar için diğer sınıflara taban sınıflık yapmaktadır. MFC sınıflarının çok büyük çoğunluğu CObject sınıfından türetilmiştir. MFC sınıf isimleri geleneksel olarak C harfi ile başlatılarak isimlendirilmiştir. MFC sınıfları kullanım alanlarına göre çeşitli gruplara ayrılabilir. Temel pencere işlemlerinin yapılmasını sağlayan sınıf topluluğu şunlardır:
Bazı MFC sınıfları doğrudan Windows programlamayla ilgisi olmayan sınıflardır. Örneğin CString ve CFile gibi sınıfların doğrudan Windows programlamayla bir ilgisi yoktur. MFC STL sınıflarına gereksinim duymadan bir çalışmayı sağlamak amacıyla düşünülmüştür. Bu yüzden kütüphane sistemi içerisinde çeşitli nesne tutan sınıflar (container class) vardır. Ayrıca MFC’de az miktarda küçük template sınıflar da bulunmaktadır. MFC çoklu türetmenin tercih edilmediği bir sınıf sistemidir. Çünkü çoklu türetmenin hızı azaltacağı ve karmaşıklığı artıracağı düşünülmüştür. MFC’de polymorphism yani sanal fonksiyon mekanizması orta düzeyde kullanılmıştır. Çünkü sanal fonksiyon mekanizmasının aşırı derecede kullanılmasının hızı yavaşlatacağı düşünülmüştür. MFC sınıflarının büyük çoğunluğu AFXWIN.H dosyasında bildirilmiştir (Tabii AFXWIN.H dosyası pek çok dosyası include etmektedir). AFXWIN.H dosyası ayrıca kendi içerisinde WINDOWS.H dosyasını da include etmektedir. MFC sınıflarına ilişkin fonksiyon kodları hem statik kütüphanelere hem de dinamik kütüphanelere yerleştirilmiştir. Yani programcı isteğine göre statik ya da dinamik link işlemi yapabilir. Statik kütüphane kullanımı .EXE dosyaları büyütmektedir. Ancak dinamik link tercih edilirse ilgili DLL dosyalarının program çalıştırılırken bulundurulması gerekir (MFC sınıflarının hemen hepsi MFC42.DLL denilen bir DLL dosyası içindedir). Normal koşullarda dinamik link tercih edilmelidir.