Aracılığıyla paylaş


MFC kaynak dosyalarını kullanma

Microsoft Foundation Sınıfı (MFC) Kitaplığı tam kaynak kodu sağlar. Üst bilgi dosyaları (.h), \atlmfc\include dizinindedir. Uygulama dosyaları (.cpp), \atlmfc\src\mfc dizinindedir.

Bu makalede, MFC'nin her sınıfın çeşitli bölümlerine yorum yapmak için kullandığı kurallar, bu açıklamaların anlamı ve her bölümde ne bulmayı beklemeniz gerektiği açıklanmaktadır. Visual Studio sihirbazları, sizin için oluşturdukları sınıflar için benzer kuralları kullanır ve bu kuralları büyük olasılıkla kendi kodunuz için yararlı bulursunuz.

, , protectedve private C++ anahtar sözcüklerini biliyor publicolabilirsiniz. MFC üst bilgi dosyalarında, her sınıfın birkaç tane olabileceğini göreceksiniz. Örneğin, ortak üye değişkenleri ve işlevleri birden public fazla anahtar sözcüğün altında olabilir. Bunun nedeni MFC'nin üye değişkenlerini ve işlevlerini izin verilen erişim türüne göre değil, kullanımlarına göre ayırmasıdır. MFC, tedbirli bir şekilde kullanır private . Uygulama ayrıntıları olarak kabul edilen öğeler bile genellikle protectedve çoğu zaman olur public. Uygulama ayrıntılarına erişim önerilmez, ancak MFC kararı size bırakır.

Hem MFC kaynak dosyalarında hem de MFC Uygulama Sihirbazı'nın oluşturduğu üst bilgi dosyalarında, sınıf bildirimlerinde (genellikle şu sırada) aşağıdakiler gibi açıklamalar bulabilirsiniz:

// Constructors

// Attributes

// Operations

// Overridables

// Implementation

Açıklamalara Bir Örnek

Sınıfın CStdioFile aşağıdaki kısmi listesi, MFC'nin sınıf üyelerini kullanıldıkları yöntemlere bölmek için sınıflarında kullandığı standart açıklamaların çoğunu kullanır:

/*============================================================================*/
// STDIO file implementation

class CStdioFile : public CFile
{
    DECLARE_DYNAMIC(CStdioFile)

public:
// Constructors
    CStdioFile();

    // . . .

// Attributes
    FILE* m_pStream;    // stdio FILE
                        // m_hFile from base class is _fileno(m_pStream)

// Operations
    // reading and writing strings
    virtual void WriteString(LPCTSTR lpsz);
    virtual LPTSTR ReadString(_Out_writes_z_(nMax) LPTSTR lpsz, _In_ UINT nMax);
    virtual BOOL ReadString(CString& rString);

// Implementation
public:
    virtual ~CStdioFile();
#ifdef _DEBUG
    void Dump(CDumpContext& dc) const;
#endif
    virtual ULONGLONG GetPosition() const;
    virtual ULONGLONG GetLength() const;
    virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);

    // . . .

protected:
    void CommonBaseInit(FILE* pOpenStream, CAtlTransactionManager* pTM);
    void CommonInit(LPCTSTR lpszFileName, UINT nOpenFlags, CAtlTransactionManager* pTM);
};

Bu açıklamalar, sınıf bildiriminin benzer türde sınıf üyeleri içeren bölümlerini tutarlı bir şekilde işaretler. Bunların kural ayarlama değil MFC kuralları olduğunu unutmayın.

Oluşturucular açıklaması

// Constructors MFC sınıf bildiriminin bölümü oluşturucuları (C++ anlamda) ve nesneyi gerçekten kullanmak için gereken başlatma işlevlerini bildirir. Örneğin, CWnd::Create oluşturucular bölümündedir, çünkü nesneyi kullanmadan CWnd önce C++ oluşturucuyu çağırıp işlevi çağırarak Create "tamamen oluşturulmalıdır". Genellikle, bu üyeler geneldir.

Örneğin, sınıfın CStdioFile beş oluşturucuları vardır ve bunlardan biri Açıklama örneği altında listede gösterilir.

Öznitelikler açıklaması

// Attributes MFC sınıf bildiriminin bölümü, nesnesinin ortak özniteliklerini (veya özelliklerini) içerir. Öznitelikler genellikle üye değişkenleri veya Get/Set işlevleridir. "Get" ve "Set" işlevleri sanal olabilir veya olmayabilir. "Get" işlevleri genellikle const'tir çünkü çoğu durumda yan etkileri yoktur. Bu üyeler normalde geneldir. Korumalı ve özel öznitelikler genellikle uygulama bölümünde bulunur.

sınıfından CStdioFileörnek listesinde, Açıklamaların bir örneği altında, liste m_pStream bir üye değişkeni içerir. Sınıfı CDC , bu açıklamanın altında yaklaşık 20 üyeyi listeler.

Dekont

ve CWndgibi CDC büyük sınıflar, tek bir gruptaki tüm özniteliklerin listelenmesi netliğe çok fazla şey katmayacak kadar çok üyeye sahip olabilir. Bu gibi durumlarda, sınıf kitaplığı üyeleri daha fazla çizgili yapmak için başlık olarak diğer açıklamaları kullanır. Örneğin, CDC , // Drawing Tool Functions, // Drawing Attribute Functionsve daha fazlasını kullanır// Device-Context Functions. Öznitelikleri temsil eden gruplar, yukarıda açıklanan normal söz dizimini izler. Birçok OLE sınıfında adlı // Interface Mapsbir uygulama bölümü vardır.

İşlem açıklaması

// Operations MFC sınıf bildiriminin bölümü, nesne üzerinde bir şeyler yapmasını veya eylem gerçekleştirmesini (işlemleri gerçekleştirme) için çağırabileceğiniz üye işlevlerini içerir. Genellikle yan etkileri olduğu için bu işlevler genellikle non-const şeklindedir. Sınıfın gereksinimlerine bağlı olarak sanal veya sanal olmayabilirler. Genellikle, bu üyeler geneldir.

sınıfından CStdioFileörnek listesinde, Açıklamaların bir örneğinde, liste bu açıklamanın altında üç üye işlevi içerir: WriteString ve iki aşırı yüklemesiReadString.

Özniteliklerde olduğu gibi işlemler de alt bölümlere bölünebilir.

Geçersiz kılınabilir açıklama

// Overridables MFC sınıf bildiriminin bölümü, temel sınıf davranışını değiştirmeniz gerektiğinde türetilmiş bir sınıfta geçersiz kılabileceğiniz sanal işlevler içerir. Bunlar genellikle "Açık" ile başlayarak adlandırılır, ancak kesinlikle gerekli değildir. Buradaki işlevler geçersiz kılınacak şekilde tasarlanmıştır ve genellikle bir tür "geri çağırma" veya "kanca" uygular veya sağlar. Genellikle, bu üyeler korunur.

MFC'nin kendisinde saf sanal işlevler her zaman bu bölüme yerleştirilir. C++ dilinde saf bir sanal işlev şu biçimi alır:

virtual void OnDraw( ) = 0;

sınıfından CStdioFileörnek listesinde, Açıklamaların bir örneğinde, listede geçersiz kılınabilir öğeler yok bölümü yer alır. Sınıfı CDocumentise yaklaşık 10 geçersiz kılınabilir üye işlevini listeler.

Bazı sınıflarda açıklamasını // Advanced Overridablesda görebilirsiniz. Bu işlevler, yalnızca gelişmiş programcıların geçersiz kılmayı denemesi gereken işlevlerdir. Muhtemelen onları geçersiz kılmanız gerekmeyecek.

Dekont

Bu makalede açıklanan kurallar, genel olarak Otomasyon (eski adı OLE Otomasyonu) yöntemleri ve özellikleri için de iyi çalışır. Otomasyon yöntemleri MFC işlemlerine benzer. Otomasyon özellikleri MFC özniteliklerine benzer. Otomasyon olayları (eski adı OLE denetimleri olan ActiveX denetimleri için desteklenir), MFC geçersiz kılınabilir üye işlevlerine benzer.

Uygulama açıklaması

// Implementation bölümü, herhangi bir MFC sınıf bildiriminin en önemli bölümüdür.

Bu bölüm tüm uygulama ayrıntılarını barındırıyor. Bu bölümde hem üye değişkenleri hem de üye işlevleri görünebilir. MFC'nin gelecek bir sürümünde bu satırın altındaki her şey değişebilir. Bundan kaçınamıyorsanız, satırın altındaki ayrıntılara // Implementation güvenmemelisiniz. Ayrıca, bazı uygulamalar teknik notlarda ele alınsa da, uygulama satırının altında bildirilen üyeler belgelenmemiştir. Temel sınıf işlevinin tanımlandığı bölümden bağımsız olarak, temel sınıftaki sanal işlevlerin geçersiz kılmaları bu bölümde yer alır. Bir işlev temel sınıf uygulamasını geçersiz kıldığında, uygulama ayrıntısı olarak kabul edilir. Bu üyeler genellikle korunur ancak her zaman korunmaz.

Açıklamaların CStdioFile bir örneği altındaki listede, açıklamanın// Implementation altında bildirilen üyeler , protectedveya privateolarak publicbildirilebilir. Gelecekte değişebilecekleri için bu üyeleri yalnızca dikkatli kullanın. Sınıf kitaplığı uygulamasının düzgün çalışması için bir grup üyenin public bildirilmesi gerekebilir. Ancak bu, üyeleri güvenli bir şekilde bu şekilde bildirdiğiniz şekilde kullanabileceğiniz anlamına gelmez.

Dekont

Kalan türlerin açıklamalarını açıklamanın üstünde veya altında // Implementation bulabilirsiniz. Her iki durumda da, aşağıda bildirilen üye türlerini açıklar. Bunlar açıklamanın // Implementation altında oluşursa, üyelerin MFC'nin gelecek sürümlerinde değişebileceğini varsaymalısınız.

Ayrıca bkz.

Genel MFC Konuları