Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Note
Microsoft Foundation Sınıfları (MFC) kitaplığına destek verilmeye devam ediliyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
Bir uygulama yazdığınızda, tek CWinApptüretilmiş bir nesne oluşturursunuz. Bazen, türetilmiş nesnenin dışından CWinAppbu nesne hakkında bilgi almak isteyebilirsiniz. Veya diğer genel "yönetici" nesnelerine erişmeniz gerekebilir.
Microsoft Foundation Sınıf Kitaplığı, bu görevleri gerçekleştirmenize yardımcı olmak için aşağıdaki genel işlevleri sağlar:
Uygulama Bilgileri ve Yönetim İşlevleri
| Name | Description |
|---|---|
AfxBeginThread |
Yeni bir iş parçacığı oluşturur. |
AfxContextMenuManager |
Genel bağlam menüsü yöneticisi işaretçisi. |
AfxEndThread |
Geçerli iş parçacığını sonlandırır. |
AfxFindResourceHandle |
Kaynak zincirini gösterir ve kaynak kimliğine ve kaynak türüne göre belirli bir kaynağı bulur. |
AfxFreeLibrary |
Yüklenen dinamik bağlantı kitaplığı (DLL) modülünün başvuru sayısını kısaltıyor. Başvuru sayısı sıfıra ulaştığında modül eşlenmemiştir. |
AfxGetApp |
Uygulamanın tek CWinApp nesnesine bir işaretçi döndürür. |
AfxGetAppName |
Uygulamanın adını içeren bir dize döndürür. |
AfxGetInstanceHandle |
Uygulamanın bu örneğini temsil eden bir HINSTANCE döndürür. |
AfxGetMainWnd |
OLE olmayan bir uygulamanın geçerli "ana" penceresine veya sunucu uygulamasının yerinde çerçeve penceresine bir işaretçi döndürür. |
AfxGetPerUserRegistration |
Uygulamanın kayıt defteri erişimini (HKEY_CURRENT_USER) düğümüne yeniden yönlendirip yönlendirmediğini belirlemek için HKCU bu işlevi kullanın. |
AfxGetResourceHandle |
Uygulamanın varsayılan kaynaklarının kaynağına bir HINSTANCE döndürür. Uygulamanın kaynaklarına doğrudan erişmek için kullanın. |
AfxGetThread |
Geçerli CWinThread nesnesine bir işaretçi alır. |
AfxInitRichEdit |
Uygulama için sürüm 1.0 zengin düzenleme denetimini başlatır. |
AfxInitRichEdit2 |
Uygulama için sürüm 2.0 ve üzeri zengin düzenleme denetimini başlatır. |
AfxIsExtendedFrameClass |
Verilen pencerenin genişletilmiş çerçeve nesnesi olup olmadığını belirler. |
AfxIsMFCToolBar |
Verilen pencerenin bir araç çubuğu nesnesi olup olmadığını belirler. |
AfxKeyboardManager |
Genel klavye yöneticisi işaretçisi. |
AfxLoadLibrary |
DLL modülünü eşler ve DLL işlevinin adresini almak için kullanılabilecek bir tanıtıcı döndürür. |
AfxLoadLibraryEx |
Belirtilen seçenekleri kullanarak bir DLL modülünü eşler ve DLL işlevinin adresini almak için kullanılabilecek bir tanıtıcı döndürür. |
AfxMenuTearOffManager |
Genel yırtılma menü yöneticisinin işaretçisi. |
AfxMouseManager |
Genel fare yöneticisi işaretçisi. |
AfxRegisterClass |
MFC kullanan bir DLL'de pencere sınıfı kaydeder. |
AfxRegisterWndClass |
MFC tarafından otomatik olarak kaydedilenleri desteklemek için bir Windows pencere sınıfı kaydeder. |
AfxSetPerUserRegistration |
Uygulamanın kayıt defteri erişimini (HKEY_CURRENT_USER) düğümüne HKCU yeniden yönlendirip yönlendirmeyeceğini ayarlar. |
AfxSetResourceHandle |
Uygulamanın varsayılan kaynaklarının yüklendiği HINSTANCE tutamacını ayarlar. |
AfxShellManager |
Genel kabuk yöneticisi işaretçisi. |
AfxSocketInit |
Windows Yuvalarını başlatmak için geçersiz CWinApp::InitInstance kılmada çağrılır. |
AfxUserToolsManager |
Genel kullanıcı araçları yöneticisinin işaretçisi. |
AfxWinInit |
MFC'yi başlatmak için GUI tabanlı bir uygulamanın başlatılmasının WinMain bir parçası olarak MFC tarafından sağlanan CWinApp işlev tarafından çağrılır. MFC kullanan konsol uygulamaları için doğrudan çağrılmalıdır. |
AfxBeginThread
Yeni bir iş parçacığı oluşturmak için bu işlevi çağır.
CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
CWinThread* AfxBeginThread(
CRuntimeClass* pThreadClass,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
Parameters
pfnThreadProc
Çalışan iş parçacığı için denetim işlevine işaret ediyor. İşaretçi olamaz NULL. Bu işlev aşağıdaki gibi bildirilmelidir:
UINT __cdecl MyControllingFunction( LPVOID pParam );
pThreadClass
RUNTIME_CLASS öğesinden CWinThreadtüretilen bir nesnenin .
pParam
Denetim işlevine geçirmek için parametre.
nPriority
İş parçacığı için ayarlanacağı öncelik. Kullanılabilir önceliklerin tam listesi ve açıklaması için Bkz SetThreadPriority . Windows SDK'sı.
nStackSize
Yeni iş parçacığı için yığının bayt cinsinden boyutunu belirtir. 0 ise, yığın boyutu varsayılan olarak oluşturma iş parçacığıyla aynı boyut yığınına sahip olur.
dwCreateFlags
İş parçacığının oluşturulmasını denetleen ek bir bayrak belirtir. Bu bayrak iki değerden birini içerebilir:
CREATE_SUSPENDEDbir askıya alma sayısı ile iş parçacığını başlatın. İş parçacığı çalışmaya başlamadan önce nesneninCREATE_SUSPENDEDveya türetilmiş sınıfınızın herhangi bir üyesi gibiCWinThreadherhangi bir üye verilerini başlatmak istiyorsanız kullanınm_bAutoDelete. Başlatma işleminiz tamamlandıktan sonra, iş parçacığını çalıştırmak için komutunu kullanınCWinThread::ResumeThread. İş parçacığı çağrılana kadarCWinThread::ResumeThreadyürütülmeyecek.0 Oluşturma işleminden hemen sonra iş parçacığını başlatın.
lpSecurityAttrs
İş parçacığının güvenlik özniteliklerini belirten bir SECURITY_ATTRIBUTES yapıya işaret eder. ise NULL, oluşturma iş parçacığıyla aynı güvenlik öznitelikleri kullanılır. Bu yapı hakkında daha fazla bilgi için bkz. Windows SDK'sı.
Dönüş Değeri
Yeni oluşturulan iş parçacığı nesnesinin işaretçisi veya NULL bir hata oluşursa.
Remarks
İlk biçimi AfxBeginThread bir çalışan iş parçacığı oluşturur. İkinci form, kullanıcı arabirimi iş parçacığı veya çalışan iş parçacığı olarak hizmet veren bir iş parçacığı oluşturur.
AfxBeginThread yeni CWinThread bir nesne oluşturur, iş parçacığını CreateThread yürütmeye başlamak için işlevini çağırır ve iş parçacığına bir işaretçi döndürür. Oluşturma işleminin herhangi bir bölümü başarısız olursa tüm nesnelerin serbest bırakıldığından emin olmak için yordam boyunca denetimler yapılır. İş parçacığını sonlandırmak için, iş parçacığının içinden çağırın AfxEndThread veya çalışan iş parçacığının denetim işlevinden dönün.
Çoklu iş parçacığı kullanımı uygulama tarafından etkinleştirilmelidir; aksi takdirde, bu işlev başarısız olur. Çoklu iş parçacığı kullanımını etkinleştirme hakkında daha fazla bilgi için bkz /MD. , /MT, /LD (Çalışma zamanı kitaplığını kullanma).
hakkında AfxBeginThreaddaha fazla bilgi için Multithreading: Creating Worker Threads and Multithreading: Creating User-Interface Threads makalelerine bakın.
Example
örneğine CSocket::Attachbakın.
Requirements
Üstbilgiafxwin.h
AfxContextMenuManager
Genel bağlam menüsü yöneticisi işaretçisi.
Syntax
CContextMenuManager* afxContextMenuManager;
Requirements
Üstbilgi:afxcontextmenumanager.h
AfxEndThread
Şu anda yürütülen iş parçacığını sonlandırmak için bu işlevi çağırın.
void AFXAPI AfxEndThread(
UINT nExitCode,
BOOL bDelete = TRUE);
Parameters
nExitCode
İş parçacığının çıkış kodunu belirtir.
bDelete
İş parçacığı nesnesini bellekten siler.
Remarks
Sonlandırılabilmesi için iş parçacığının içinden çağrılmalıdır.
hakkında AfxEndThreaddaha fazla bilgi için Çoklu İş Parçacığı Kullanımı: İş Parçacıklarını Sonlandırma makalesine bakın.
Requirements
Üstbilgiafxwin.h
AfxFindResourceHandle
Kaynak zincirinde gezinmek ve kaynak kimliğine ve kaynak türüne göre belirli bir kaynağı bulmak için kullanın AfxFindResourceHandle .
Syntax
HINSTANCE AFXAPI AfxFindResourceHandle( LPCTSTR lpszName, LPCTSTR lpszType );
Parameters
lpszName
Kaynak kimliğini içeren bir dize işaretçisi.
lpszType
Kaynak türüne ilişkin bir işaretçi. Kaynak türlerinin listesi için Bkz FindResource . Windows SDK'sı.
Dönüş Değeri
Kaynağı içeren modülün tanıtıcısı.
Remarks
AfxFindResourceHandle belirli bir kaynağı bulur ve kaynağı içeren modüle bir tanıtıcı döndürür. Kaynak, yüklenen herhangi bir MFC uzantısı DLL'sinde olabilir.
AfxFindResourceHandle kaynağın hangisinde olduğunu bildirir.
Modüller şu sırayla aranıyor:
MFC uzantı DLL'si ise ana modül.
Sistem dışı modüller.
Dile özgü modüller.
Sistem DLL'si ise ana modül.
Sistem modülleri.
Requirements
Üstbilgi:afxwin.h
AfxFreeLibrary
AfxFreeLibrary Hem hem de AfxLoadLibrary yüklenen her kitaplık modülü için bir başvuru sayısı sağlayın.
BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);
Parameters
hInstLib
Yüklenen kitaplık modülünün tanıtıcısı.
AfxLoadLibrary bu tutamacı döndürür.
Dönüş Değeri
TRUE işlevi başarılı olursa; aksi takdirde , FALSE.
Remarks
AfxFreeLibrary yüklenen dinamik bağlantı kitaplığı (DLL) modülünün başvuru sayısını azaltma. Başvuru sayısı sıfıra ulaştığında, modülün eşlemesi çağrı işleminin adres alanından kaldırılır ve tanıtıcı artık geçerli olmaz. Bu başvuru sayısı her AfxLoadLibrary çağrıldığında artırılır.
Sistem, bir kitaplık modülünün eşlemesini kaldırmadan önce DLL'nin bunu kullanarak işlemlerden ayrılmasını sağlar. Bunu yapmak DLL'ye geçerli işlem için ayrılan kaynakları temizleme fırsatı verir. Giriş noktası işlevi döndürdüğünde kitaplık modülü geçerli işlemin adres alanından kaldırılır.
DLL modülünü eşlemek için kullanın AfxLoadLibrary .
Uygulamanız birden çok iş parçacığı kullanıyorsa ve AfxFreeLibrary (Win32 işlevleri AfxLoadLibrary ve FreeLibraryyerine) kullandığınızdan LoadLibrary emin olun. ve AfxLoadLibrary kullanıldığında, AfxFreeLibrary MFC uzantısı DLL yüklendiğinde ve kaldırıldığında yürütülen başlatma ve kapatma kodunun genel MFC durumunu bozmamasını sağlar.
Example
örneğine AfxLoadLibrarybakın.
Requirements
Üstbilgiafxdll_.h
AfxGetApp
Bu işlev tarafından döndürülen işaretçi, ana ileti gönderme kodu veya en üstteki pencere gibi uygulama bilgilerine erişmek için kullanılabilir.
CWinApp* AFXAPI AfxGetApp();
Dönüş Değeri
Uygulama için tek CWinApp nesneye yönelik bir işaretçi.
Remarks
Bu yöntem döndürürse NULL, uygulama ana penceresinin henüz tam olarak başlatılmadığını gösterebilir. Ayrıca bir sorun olduğunu da gösterebilir.
Example
// Print the application's executable filename.
TRACE(_T("Executable filename = %s\n"), AfxGetApp()->m_pszExeName);
Requirements
Üstbilgiafxwin.h
AfxGetAppName
Döndürülen dize tanılama iletileri için veya geçici dize adları için kök olarak kullanılabilir.
LPCTSTR AFXAPI AfxGetAppName();
Dönüş Değeri
Uygulamanın adını içeren null olarak sonlandırılan bir dize.
Example
// Print the application name to the debugger output window.
TRACE(_T("Application name is %s\n"), AfxGetAppName());
Requirements
Üstbilgiafxwin.h
AfxGetInstanceHandle
Bu işlev, geçerli uygulamanın örnek tutamacını almanıza olanak tanır.
HINSTANCE AFXAPI AfxGetInstanceHandle();
Dönüş Değeri
Uygulamanın geçerli örneğine yönelik bir HINSTANCE . MFC'nin USRDLL sürümüyle bağlantılı bir DLL'nin içinden çağrılırsa, DLL'ye bir HINSTANCE döndürülür.
Remarks
AfxGetInstanceHandle MFC'nin HINSTANCE USRDLL sürümüyle bağlantılı bir DLL'nin içinden çağrılmadığı sürece yürütülebilir dosyanızın (.EXE) her zaman değerini döndürür. Bu durumda DLL'ye bir HINSTANCE döndürür.
Example
// Print the application instance handle to the debugger output window.
TRACE(_T("Application instance handle is 0x%0X\n"), AfxGetInstanceHandle());
Requirements
Üstbilgiafxwin.h
AfxGetMainWnd
Uygulamanız bir OLE sunucusuysa, uygulamanın etkin ana penceresine bir işaretçi almak için bu işlevi çağırın. Uygulama nesnesinin üyesine doğrudan başvurmak m_pMainWnd yerine bu sonucu kullanın.
CWnd* AFXAPI AfxGetMainWnd();
Dönüş Değeri
Sunucuda etkin bir kapsayıcı içinde etkin olan bir nesne varsa, yerinde etkin belgeyi içeren çerçeve penceresi nesnesine bir işaretçi döndürür.
Kapsayıcı içinde etkin olan bir nesne yoksa veya uygulamanız bir OLE sunucusu değilse, bu işlev uygulama nesnenizin değerini m_pMainWnd döndürür.
Uygulamanın birincil iş parçacığından çağrılırsa AfxGetMainWnd , yukarıdaki kurallara göre uygulamanın ana penceresini döndürür. İşlev, uygulamadaki ikincil bir iş parçacığından çağrılırsa, işlev çağrıyı yapan iş parçacığıyla ilişkili ana pencereyi döndürür.
Remarks
Uygulamanız bir OLE sunucusu değilse, bu işlevi çağırmak doğrudan uygulama nesnenizin üyesine m_pMainWnd başvurmaya eşdeğerdir.
Example
//The following line send a WM_CLOSE message
// to the Application's main window. This will cause the
// Application to exit.
AfxGetMainWnd()->PostMessage(WM_CLOSE, 0, 0);
Requirements
Üstbilgiafxwin.h
AfxGetPerUserRegistration
Uygulamanın kayıt defteri erişimini (HKEY_CURRENT_USER) düğümüne yeniden yönlendirip yönlendirmediğini belirlemek için HKCU bu işlevi kullanın.
BOOL AFXAPI AfxGetPerUserRegistration();
Dönüş Değeri
TRUE kayıt defteri bilgilerinin düğüme yönlendirildiğinden HKCU emin olun.
FALSE uygulamanın kayıt defteri bilgilerini varsayılan düğüme yazacak şekilde gösterir. Varsayılan düğüm : HKEY_CLASSES_ROOT (HKCR).
Remarks
Kayıt defteri yeniden yönlendirmesini etkinleştirirseniz, çerçeve erişimini öğesine HKCRHKEY_CURRENT_USER\Software\Classesyönlendirir. Yeniden yönlendirmeden yalnızca MFC ve ATL çerçeveleri etkilenir.
Uygulamanın kayıt defteri erişimini yeniden yönlendirip yönlendirmediğini değiştirmek için kullanın AfxSetPerUserRegistration.
Requirements
Üstbilgiafxstat_.h
AfxGetResourceHandle
Uygulamanın kaynaklarına HINSTANCE , örneğin Windows işlevine yapılan çağrılarda erişmek için bu işlev FindResourcetarafından döndürülen tanıtıcıyı kullanın.
extern HINSTANCE AfxGetResourceHandle();
Dönüş Değeri
HINSTANCE Uygulamanın varsayılan kaynaklarının yüklendiği tanıtıcı.
Example
//Load the menu specifying the module handle where resource is to be
//found & resource ID
HMENU hMenu = ::LoadMenu(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
Requirements
Üstbilgiafxwin.h
AfxGetThread
Şu anda yürütülen iş parçacığını temsil eden nesneye CWinThread bir işaretçi almak için bu işlevi çağırın.
CWinThread* AfxGetThread();
Dönüş Değeri
Şu anda yürütülmekte olan iş parçacığının işaretçisi; aksi takdirde NULL.
Remarks
İş parçacığının içinden çağrılmalıdır.
Note
Visual C++ sürüm 4.2, 5.0 veya 6.0'dan çağrı yapan bir MFC projesini AfxGetThread taşımaya devam ediyorsanız, AfxGetThread iş parçacığı bulunamazsa çağırır AfxGetApp . Derleyicinin daha yeni sürümlerinde, AfxGetThread iş parçacığı bulunamazsa döndürür NULL . Uygulama iş parçacığını istiyorsanız çağrısı yapmalısınız AfxGetApp.
Example
//Print the current thread ID in the Debug Window
TRACE(_T("Current Thread ID = 0x%X\n"), AfxGetThread()->m_nThreadID);
Requirements
Üstbilgiafxwin.h
AfxInitRichEdit
Uygulamanın zengin düzenleme denetimini (sürüm 1.0) başlatmak için bu işlevi çağırın.
BOOL AFXAPI AfxInitRichEdit();
Remarks
Bu işlev geriye dönük uyumluluk için sağlanır. Yeni uygulamalar kullanmalıdır AfxInitRichEdit2.
AfxInitRichEdit zengin düzenleme denetiminin 1.0 sürümünü başlatmak için yükler RICHED32.DLL . Zengin düzenleme denetiminin RICHED20.DLL 2.0 ve 3.0 sürümlerini kullanmak için yüklenmesi gerekir. çağrısı yapılarak AfxInitRichEdit2yüklenir.
Mevcut Visual Studio uygulamalarındaki zengin düzenleme denetimlerini sürüm 2.0'a güncelleştirmek için dosyasını açın. RC dosyasını metin olarak yazın, her zengin düzenleme denetiminin sınıf adını "RICHEDIT" yerine "RichEdit20a" olarak değiştirin. Ardından çağrısı AfxInitRichEdit değerini ile AfxInitRichEdit2değiştirin.
Bu işlev, kitaplık işlem için henüz başlatılmamışsa ortak denetim kitaplığını da başlatır. Zengin düzenleme denetimini doğrudan MFC uygulamanızdan kullanıyorsanız, MFC'nin zengin düzenleme denetimi çalışma zamanını düzgün bir şekilde başlatmış olduğundan emin olmak için bu işlevi çağırın. , Createveya CRichEditCtrlyöntemini CRichEditViewçağırırsanız CRichEditDoc genellikle bu işlevi çağırmanız gerekmez, ancak bazı durumlarda gerekli olabilir.
Requirements
Üstbilgiafxwin.h
AfxInitRichEdit2
Uygulamanın zengin düzenleme denetimini (sürüm 2.0 ve üzeri) başlatmak için bu işlevi çağırın.
BOOL AFXAPI AfxInitRichEdit2();
Remarks
Zengin düzenleme denetiminin RICHED20.DLL 2.0 sürümünü yüklemek ve başlatmak için bu işlevi çağırın. , Createveya CRichEditCtrlyöntemini CRichEditViewçağırırsanız CRichEditDoc genellikle bu işlevi çağırmanız gerekmez, ancak bazı durumlarda gerekli olabilir.
Requirements
Üstbilgiafxwin.h
AfxIsExtendedFrameClass
Verilen pencerenin genişletilmiş çerçeve nesnesi olup olmadığını belirler.
Syntax
BOOL AFXAPI AfxIsExtendedFrameClass( CWnd* pWnd );
Parameters
pWnd
[in] öğesinden CWndtüretilen bir nesnenin işaretçisi.
Dönüş Değeri
TRUE sağlanan pencere genişletilmiş çerçeve nesnesiyse; aksi takdirde FALSE.
Remarks
Bu yöntem, aşağıdaki sınıflardan birinden türetilirse TRUE döndürürpWnd:
CFrameWndExCMDIFrameWndExCOleIPFrameWndExCOleDocIPFrameWndExCMDIChildWndEx
Bu yöntem, bir işlevin veya yöntem parametresinin genişletilmiş bir çerçeve penceresi olduğunu doğrulamanız gerektiğinde kullanışlıdır.
Requirements
Üstbilgi:afxpriv.h
AfxIsMFCToolBar
Verilen pencerenin bir araç çubuğu nesnesi olup olmadığını belirler.
Syntax
BOOL AFXAPI AfxIsMFCToolBar(CWnd* pWnd);
Parameters
pWnd
[in] öğesinden CWndtüretilen bir nesnenin işaretçisi.
Dönüş Değeri
TRUE sağlanan pencere bir araç çubuğu nesnesiyse; aksi takdirde FALSE.
Remarks
Bu yöntem, 'den TRUEtüretilirse pWnd döndürürCMFCToolBar. Bu yöntem, bir işlev veya yöntem parametresinin bir CMFCToolBar nesne olduğunu doğrulamanız gerektiğinde kullanışlıdır.
Requirements
Üstbilgi:afxpriv.h
AfxKeyboardManager
Genel klavye yöneticisi işaretçisi.
Syntax
CKeyboardManager* afxKeyboardManager;
Requirements
Üstbilgi:afxkeyboardmanager.h
AfxLoadLibrary
DLL modülünü eşlemek için kullanın AfxLoadLibrary .
HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);
Parameters
lpszModuleName
Modülün adını (.DLL veya .EXE dosyası) içeren null olarak sonlandırılan bir dizeyi gösterir. Belirtilen ad, modülün dosya adıdır.
Dize bir yol belirtiyorsa ancak dosya belirtilen dizinde yoksa işlev başarısız olur.
Yol belirtilmezse ve dosya adı uzantısı atlanırsa, varsayılan uzantı .DLL eklenir. Ancak, dosya adı dizesi, modül adının uzantısı olmadığını belirtmek için sondaki bir nokta karakteri (.) içerebilir. Hiçbir yol belirtilmediğinde, işlev Masaüstü Uygulamaları için Arama Sırası'nı kullanır.
Dönüş Değeri
İşlev başarılı olursa, dönüş değeri modülün tanıtıcısı olur. Hata durumunda dönüş değeri olur NULL.
Remarks
DLL işlevinin adresini almak için içinde kullanılabilecek GetProcAddress bir tanıtıcı döndürür.
AfxLoadLibrary diğer yürütülebilir modülleri eşlemek için de kullanılabilir.
Her işlem, yüklenen her kitaplık modülü için bir başvuru sayısı tutar. Bu başvuru sayısı her AfxLoadLibrary çağrıldığında artırılır ve her çağrılışında AfxFreeLibrary azalmış olur. Başvuru sayısı sıfıra ulaştığında, modülün eşlemesi çağrı işleminin adres alanından kaldırılır ve tanıtıcı artık geçerli olmaz.
Uygulamanız birden çok iş parçacığı kullanıyorsa ve AfxLoadLibraryAfxFreeLibrarydinamik olarak bir MFC uzantı DLL'sini yüklüyse ve (Win32 işlevleri LoadLibrary ve yerine) kullandığınızdan FreeLibrary emin olun.
AfxLoadLibrary MFC uzantısı DLL yüklendiğinde ve kaldırıldığında yürütülen başlatma ve kapatma kodunun kullanılması AfxFreeLibrary ve kullanılması genel MFC durumunu bozmaz.
AfxLoadLibrary Bir uygulamada kullanmak için MFC'nin DLL sürümüne dinamik olarak bağlanmanız gerekir. , AfxLoadLibraryiçin Afxdll_.hüst bilgi dosyası yalnızca MFC uygulamaya DLL olarak bağlıysa eklenir. MFC uzantısı DLL'lerini kullanmak veya oluşturmak için MFC'nin DLL sürümüne bağlanmanız gerektiğinden, bu gereksinim tasarım gereğidir.
Example
// The following shows how to create a MDI based application
// using a generic CView derived class that is implemented in
// a dynamically loaded MFC Extension DLL.
typedef CRuntimeClass *(*GETDLLVIEW)();
BOOL CUserApp::InitInstance()
{
// Standard Application Wizard generated initialization excluded.
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views
//Load MFC Extension DLL based view class.
m_hViewDll = AfxLoadLibrary(szMyViewDllPath);
if (!m_hViewDll)
{
CString str;
str.Format(_T("Error: Cannot find component %s"), szMyViewDllPath);
AfxMessageBox(str);
return FALSE;
}
GETDLLVIEW GetMyView = (GETDLLVIEW)GetProcAddress(m_hViewDll, "GetMyView");
ASSERT(GetMyView != NULL);
CMultiDocTemplate *pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_NVC_MFC_DLLUserTYPE,
RUNTIME_CLASS(CUserDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
GetMyView());
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// Standard Application Wizard generated initialization excluded.
return TRUE;
}
int CUserApp::ExitInstance()
{
if (NULL != m_hViewDll)
{
AfxFreeLibrary(m_hViewDll);
m_hViewDll = NULL;
}
return CWinApp::ExitInstance();
}
Requirements
Üstbilgiafxdll_.h
AfxLoadLibraryEx
DLL modülünü eşlemek için kullanın AfxLoadLibraryEx .
HINSTANCE AFXAPI AfxLoadLibraryEx(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags);
Parameters
lpFileName
Modülün adını (.DLL veya .EXE dosyası) içeren null olarak sonlandırılan bir dizeyi gösterir. Belirtilen ad, modülün dosya adıdır.
Dize bir yol belirtiyorsa ancak dosya belirtilen dizinde yoksa işlev başarısız olur.
Yol belirtilmezse ve dosya adı uzantısı atlanırsa, varsayılan uzantı .DLL eklenir. Ancak, dosya adı dizesi, modül adının uzantısı olmadığını belirtmek için sondaki bir nokta karakteri (.) içerebilir. Hiçbir yol belirtilmediğinde, işlev Masaüstü Uygulamaları için Arama Sırası'nı kullanır.
hFile
Bu parametre gelecekte kullanılmak üzere ayrılmıştır.
NULLOlmalı.
dwFlags
Modülü yüklerken gerçekleştirilecek eylem. Hiçbir bayrak belirtilmezse, bu işlevin davranışı işlevle AfxLoadLibrary aynıdır. Bu parametrenin olası değerleri belgelerde LoadLibraryEx açıklanmıştır.
Dönüş Değeri
İşlev başarılı olursa, dönüş değeri modülün tanıtıcısı olur. Hata durumunda dönüş değeri olur NULL.
Remarks
AfxLoadLibraryEx bir DLL işlevinin adresini almak için içinde GetProcAddress kullanılabilecek bir tanıtıcı döndürür.
AfxLoadLibraryEx diğer yürütülebilir modülleri eşlemek için de kullanılabilir.
Her işlem, yüklenen her kitaplık modülü için bir başvuru sayısı tutar. Bu başvuru sayısı her AfxLoadLibraryEx çağrıldığında artırılır ve her çağrılışında AfxFreeLibrary azalmış olur. Başvuru sayısı sıfıra ulaştığında, modülün eşlemesi çağrı işleminin adres alanından kaldırılır ve tanıtıcı artık geçerli olmaz.
Uygulamanız birden çok iş parçacığı kullanıyorsa ve (Win32 işlevleri AfxLoadLibraryEx yerine ve AfxFreeLibrary) ve LoadLibraryExFreeLibrary bir MFC uzantısı DLL'sini dinamik olarak yüklüp yüklemediğinden emin olun. ve AfxLoadLibraryEx kullanıldığında, AfxFreeLibrary MFC uzantısı DLL yüklendiğinde ve kaldırıldığında yürütülen başlatma ve kapatma kodunun genel MFC durumunu bozmamasını sağlar.
AfxLoadLibraryEx Bir uygulamada kullanmak için MFC'nin DLL sürümüne dinamik olarak bağlanmanız gerekir. , AfxLoadLibraryExiçin Afxdll_.hüst bilgi dosyası yalnızca MFC uygulamaya DLL olarak bağlıysa eklenir. MFC uzantısı DLL'lerini kullanmak veya oluşturmak için MFC'nin DLL sürümüne bağlanmanız gerektiğinden, bu gereksinim tasarım gereğidir.
Requirements
Üstbilgiafxdll_.h
AfxMenuTearOffManager
Genel yırtılma menü yöneticisinin işaretçisi.
Syntax
CMenuTearOffManager* g_pTearOffMenuManager;
Requirements
Üstbilgi:afxmenutearoffmanager.h
AfxMouseManager
Genel fare yöneticisi işaretçisi.
Syntax
CMouseManager* afxMouseManager;
Requirements
Üstbilgi:afxmousemanager.h
AfxRegisterClass
Pencere sınıflarını MFC kullanan bir DLL'ye kaydetmek için bu işlevi kullanın.
BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
Parameters
lpWndClass
Kaydedilecek pencere sınıfı hakkında bilgi içeren bir WNDCLASS yapı işaretçisi. Bu yapı hakkında daha fazla bilgi için bkz. Windows SDK'sı.
Dönüş Değeri
TRUE sınıfı başarıyla kaydedildiyse; aksi takdirde FALSE.
Remarks
Bu işlevi kullanırsanız, DLL kaldırıldığında sınıfın kaydı otomatik olarak kaldırılır.
DLL olmayan derlemelerde, AfxRegisterClass bir uygulamada kayıtlı sınıflar otomatik olarak kaydı kaldırıldığından, tanımlayıcı Windows işleviyle RegisterClasseşlenen bir makro olarak tanımlanır. yerine AfxRegisterClasskullanırsanız RegisterClass kodunuz hem uygulamada hem de DLL'de değiştirilmeden kullanılabilir.
Example
// Register your unique class name that you wish to use
WNDCLASS wndcls;
memset(&wndcls, 0, sizeof(WNDCLASS)); // start with NULL defaults
wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
//you can specify your own window procedure
wndcls.lpfnWndProc = ::DefWindowProc;
wndcls.hInstance = AfxGetInstanceHandle();
wndcls.hIcon = LoadIcon(wndcls.hInstance, MAKEINTRESOURCE(IDI_MYICON));
wndcls.hCursor = LoadCursor(wndcls.hInstance, MAKEINTRESOURCE(IDC_ARROW));
wndcls.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndcls.lpszMenuName = NULL;
// Specify your own class name for using FindWindow later
wndcls.lpszClassName = _T("MyNewClass");
// Register the new class and trace if it fails
if(!AfxRegisterClass(&wndcls))
{
TRACE("Class Registration Failed\n");
}
Requirements
Üstbilgiafxwin.h
AfxRegisterWndClass
Kendi pencere sınıflarınızı kaydetmenize olanak tanır.
LPCTSTR AFXAPI AfxRegisterWndClass(
UINT nClassStyle,
HCURSOR hCursor = 0,
HBRUSH hbrBackground = 0,
HICON hIcon = 0);
Parameters
nClassStyle
Windows sınıf stilini veya pencere sınıfı için bit düzeyinde OR (|) işleci kullanılarak oluşturulan stillerin birleşimini belirtir. Sınıf stillerinin listesi için Windows SDK'daki yapıya bakın WNDCLASS . ise NULL, varsayılanlar aşağıdaki gibi ayarlanır:
Kullanıcı fareye
CS_DBLCLKSçift tıkladığında pencere yordamına çift tıklama iletileri gönderen fare stilini olarak ayarlar.Ok imleci stilini Windows standardına
IDC_ARROWayarlar.Arka plan fırçasını olarak
NULLayarlar, böylece pencere arka planını silmez.Simgeyi standart, dalgalı bayraklı Windows logosu simgesine ayarlar.
hCursor
Pencere sınıfından oluşturulan her pencereye yüklenecek imleç kaynağının tutamacını belirtir. Varsayılan 0'ı kullanırsanız standart IDC_ARROW imleci alırsınız.
hbrBackground
Pencere sınıfından oluşturulan her pencereye yüklenecek fırça kaynağının tutamacını belirtir. Varsayılan olarak 0 kullanırsanız, bir NULL arka plan fırçanız olur ve varsayılan olarak, pencereniz işlenirken WM_ERASEBKGNDarka planını silmez.
hIcon
Pencere sınıfından oluşturulan her pencereye yüklenecek simge kaynağının tanıtıcısını belirtir. Varsayılan olarak 0 kullanırsanız standart, dalgalı bayraklı Windows logo simgesini alırsınız.
Dönüş Değeri
Sınıf adını içeren null olarak sonlandırılan bir dize. Bir pencere oluşturmak için Create bu sınıf adını içindeki üye işlevine CWnd veya diğer **CWnd-**türetilmiş sınıflara geçirebilirsiniz. Ad, Microsoft Foundation Sınıf Kitaplığı tarafından oluşturulur.
Note
Dönüş değeri, statik arabelleğe işaret eden bir işaretçidir. Bu dizeyi kaydetmek için bir CString değişkene atayın.
Remarks
Microsoft Foundation Sınıf Kitaplığı sizin için birkaç standart pencere sınıfını otomatik olarak kaydeder. Kendi pencere sınıflarınızı kaydetmek istiyorsanız bu işlevi çağırabilirsiniz.
tarafından AfxRegisterWndClass bir sınıf için kaydedilen ad yalnızca parametrelere bağlıdır. Aynı parametrelerle birden çok kez çağırırsanız AfxRegisterWndClass , yalnızca ilk çağrıda bir sınıf kaydeder. Daha sonra aynı parametrelere sahip olan öğesine AfxRegisterWndClass yapılan çağrılar zaten kayıtlı sınıf adını döndürür.
Her sınıf için ayrı bir pencere sınıfı almak yerine, aynı parametrelere sahip birden çok AfxRegisterWndClasstüretilmiş sınıf çağırırsanızCWnd, her sınıf aynı pencere sınıfını paylaşır. Sınıf stili kullanılırsa CS_CLASSDC bu paylaşım sorunlara neden olabilir. Birden çok CS_CLASSDC pencere sınıfı yerine yalnızca bir CS_CLASSDC pencere sınıfına sahip olursunuz. Bu sınıfı kullanan tüm C++ pencereleri aynı DC'yi paylaşır. Bu sorundan kaçınmak için sınıfını kaydetmek için çağrısında AfxRegisterClass bulunur.
Pencere sınıfı kaydı ve işlevi hakkında daha fazla bilgi için Teknik Not TN001: Pencere Sınıfı Kaydı'naAfxRegisterWndClass bakın.
Example
CString strMyClass;
// load stock cursor, brush, and icon for
// my own window class
try
{
strMyClass = AfxRegisterWndClass(
CS_VREDRAW | CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW),
(HBRUSH)::GetStockObject(WHITE_BRUSH),
::LoadIcon(NULL, IDI_APPLICATION));
}
catch (CResourceException *pEx)
{
AfxMessageBox(_T("Couldn't register class! (Already registered?)"));
pEx->Delete();
}
Requirements
Üstbilgiafxwin.h
AfxSetPerUserRegistration
Uygulamanın kayıt defteri erişimini (HKEY_CURRENT_USER) düğümüne HKCU yeniden yönlendirip yönlendirmeyeceğini ayarlar.
void AFXAPI AfxSetPerUserRegistration(BOOL bEnable);
Parameters
bEnable
[in] TRUE kayıt defteri bilgilerinin düğüme yönlendirildiğinden HKCU emin olun.
FALSE uygulamanın kayıt defteri bilgilerini varsayılan düğüme yazacak şekilde gösterir. Varsayılan düğüm : HKEY_CLASSES_ROOT (HKCR).
Remarks
Windows Vista'nın öncesinde, kayıt defterine erişen uygulamalar genellikle düğümü kullanırdı HKEY_CLASSES_ROOT . Bununla birlikte, Windows Vista veya sonraki işletim sistemlerinde, uygulamasına HKCRyazmak için yükseltilmiş modda bir uygulama çalıştırmanız gerekir.
Bu yöntem, uygulamanızın yükseltilmiş modda çalışmadan kayıt defterini okumasını ve yazmasını sağlar. kayıt defteri erişimini öğesine HKCRHKCUyeniden yönlendirerek çalışır. Daha fazla bilgi için bkz . Bağlayıcı Özellik Sayfaları.
Kayıt defteri yeniden yönlendirmesini etkinleştirirseniz, çerçeve erişimini öğesine HKCRHKEY_CURRENT_USER\Software\Classesyönlendirir. Yeniden yönlendirmeden yalnızca MFC ve ATL çerçeveleri etkilenir.
Varsayılan uygulama altında HKCRkayıt defterine erişir.
Requirements
Üstbilgiafxstat_.h
AfxSetResourceHandle
Uygulamanın varsayılan kaynaklarının HINSTANCE yüklendiği yeri belirleyen tanıtıcıyı ayarlamak için bu işlevi kullanın.
void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
Parameters
hInstResource
Örnek veya modül, uygulamanın kaynaklarının yüklendiği bir .EXE veya DLL dosyasının tanıtıcısıdır.
Example
// This code is taken from CMyApp::InitInstance
HINSTANCE hRes = NULL;
hRes = LoadLibrary(_T("Resource.dll"));
if (hRes)
AfxSetResourceHandle(hRes);
Requirements
Üstbilgiafxwin.h
AfxShellManager
Genel kabuk yöneticisi işaretçisi.
Syntax
CShellManager* afxShellManager;
Requirements
Üstbilgi:afxshellmanager.h
AfxSocketInit
Windows Yuvalarını başlatmak için geçersiz kılmanızda CWinApp::InitInstance bu işlevi çağır.
BOOL AfxSocketInit(WSADATA* lpwsaData = NULL);
Parameters
lpwsaData
Bir yapıya işaretçi WSADATA . değerine eşit lpwsaDatadeğilseNULL, yapısının WSADATA adresi çağrısıyla WSAStartupdoldurulur. Bu işlev, uygulama sonlandırilmeden önce sizin için çağrılmasını da sağlar WSACleanup .
Dönüş Değeri
İşlev başarılı olursa sıfır dışında bir değer, aksi durumda 0.
Remarks
Statik olarak bağlı bir MFC uygulamasında ikincil iş parçacıklarında MFC yuvalarını kullanırken, yuva kitaplıklarını başlatmak için yuvaları kullanan her iş parçacığını çağırmanız AfxSocketInit gerekir. Varsayılan olarak, AfxSocketInit yalnızca birincil iş parçacığında çağrılır.
Requirements
Üstbilgiafxsock.h
AfxUserToolsManager
Genel kullanıcı araçları yöneticisinin işaretçisi.
Syntax
CUserToolsManager* afxUserToolsManager;
Requirements
Üstbilgi:afxusertoolsmanager.h
AfxWinInit
Bu işlev, MFC'yi başlatmak için GUI tabanlı bir uygulamanın başlatılmasının WinMain bir parçası olarak MFC tarafından sağlanan CWinApp işlev tarafından çağrılır.
BOOL AFXAPI AfxWinInit(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow);
Parameters
hInstance
Çalışmakta olan modülün tanıtıcısı.
hPrevInstance
Uygulamanın önceki bir örneğine ait tanıtıcı. Win32 tabanlı bir uygulama için bu parametre her zaman NULLşeklindedir.
lpCmdLine
Uygulama için komut satırını belirten null ile sonlandırılan bir dizeyi gösterir.
nCmdShow
Gui uygulamasının ana penceresinin nasıl gösterileceğini belirtir.
Remarks
MFC tarafından sağlanan WinMain işlevi kullanmayan bir konsol uygulaması için, MFC'yi başlatmak için doğrudan aramanız AfxWinInit gerekir.
Kendinizi çağırırsanız AfxWinInit , bir CWinApp sınıfın örneğini bildirmeniz gerekir. Konsol uygulaması için kendi sınıfınızı CWinApp türetmemeyi ve bunun yerine doğrudan bir örneğini CWinApp kullanmayı seçebilirsiniz. Uygulamanız için tüm işlevleri uygulamanızda mainbırakmaya karar verirseniz bu teknik uygundur.
Note
MFC, bir derleme için etkinleştirme bağlamı oluşturduğunda, kullanıcı modülü tarafından sağlanan bir bildirim kaynağını kullanır. Etkinleştirme bağlamı içinde AfxWinInitoluşturulur. Daha fazla bilgi için bkz . MFC Modülü Durumunda Etkinleştirme Bağlamları Desteği.
Example
#include <afx.h>
#include <afxdb.h>
int _tmain(int /*argc*/, TCHAR * /*argv[]*/, TCHAR * /*envp[]*/)
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
// try to connect to an ODBC database that doesn't exist
// (this wouldn't work at all without initializing MFC)
CDatabase db;
try
{
db.Open(_T("This Databsae Doesn't Exist"));
// we shouldn't realistically get here
_tprintf_s(_T("Successful!\n")
_T("Closing ...\n"));
db.Close();
_tprintf_s(_T("Closed!"));
}
catch (CDBException *pEx)
{
// we got an exception! print an error message
// (this wouldn't work without initializing MFC)
TCHAR sz[1024];
_tprintf_s(_T("Error: "));
if (pEx->GetErrorMessage(sz, 1024))
_tprintf_s(sz);
else
_tprintf_s(_T("No error message was available"));
_tprintf_s(_T("\n"));
pEx->Delete();
nRetCode = 1;
}
}
return nRetCode;
}
Requirements
Üstbilgiafxwin.h
Ayrıca bakınız
Makrolar ve Genel Ayarlar
CWinApp Sınıf
CContextMenuManager Sınıf
CWnd Sınıf
CFrameWndEx Sınıf
CMFCToolBar Sınıf
CKeyboardManager Sınıf
CMenuTearOffManager Sınıf
CMouseManager Sınıf
CShellManager Sınıf
CUserToolsManager Sınıf