NT4/public/sdk/inc/mfc30/afxdll_.h
2020-09-30 17:12:29 +02:00

91 lines
2.5 KiB
C++

// Microsoft Foundation Classes C++ library.
// Copyright (C) 1992 Microsoft Corporation,
// All rights reserved.
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and Microsoft
// QuickHelp and/or WinHelp documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
// afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version
// This file contains MFC library implementation details as well
// as APIs for writing MFC Extension DLLs.
// Please refer to Technical Note 033 (TN033) for more details.
/////////////////////////////////////////////////////////////////////////////
#ifndef _AFXDLL
#error file must be compiled with _AFXDLL
#endif
#ifdef _AFX_PACKING
#pragma pack(push, _AFX_PACKING)
#endif
#undef AFX_DATA
#define AFX_DATA AFX_CORE_DATA
/////////////////////////////////////////////////////////////////////////////
// AFX_EXTENSION_MODULE - special struct used during DLL initialization
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
/////////////////////////////////////////////////////////////////////////////
// CDynLinkLibrary - for implementation of MFC Extension DLLs
class COleObjectFactory;
class CDynLinkLibrary : public CCmdTarget
{
DECLARE_DYNAMIC(CDynLinkLibrary)
public:
// Constructor
CDynLinkLibrary(AFX_EXTENSION_MODULE& state);
// Attributes
HMODULE m_hModule;
HMODULE m_hResource; // for shared resources
CRuntimeClass* m_pFirstSharedClass;
COleObjectFactory* m_pFirstSharedFactory;
BOOL m_bSystem; // TRUE only for MFC DLLs
// Implementation
public:
CDynLinkLibrary* m_pNextDLL; // simple singly linked list
virtual ~CDynLinkLibrary();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif //_DEBUG
};
// get best fitting resource
HINSTANCE AFXAPI AfxFindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType);
// Call in DLL's LibMain
BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE& state, HMODULE hMod);
// Optional: call on final process detach in your DLL
// (not necessary unless clients can dynamically load/unload your DLL)
void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE& state);
#undef AFX_DATA
#define AFX_DATA
#ifdef _AFX_PACKING
#pragma pack(pop)
#endif
/////////////////////////////////////////////////////////////////////////////