diff options
Diffstat (limited to 'public/sdk/inc/mfc30/afxstat_.h')
-rw-r--r-- | public/sdk/inc/mfc30/afxstat_.h | 537 |
1 files changed, 537 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc30/afxstat_.h b/public/sdk/inc/mfc30/afxstat_.h new file mode 100644 index 000000000..abee25a2d --- /dev/null +++ b/public/sdk/inc/mfc30/afxstat_.h @@ -0,0 +1,537 @@ +// This is a part of the 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. + +#ifndef __AFXSTATE_H__ +#define __AFXSTATE_H__ + +#ifdef _AFX_PACKING +#pragma pack(push, _AFX_PACKING) +#endif + +#undef AFX_DATA +#define AFX_DATA AFX_CORE_DATA + +///////////////////////////////////////////////////////////////////////////// +// Application global state + +class CWinApp; +class COleObjectFactory; +class CDynLinkLibrary; + +struct AFX_CORE_STATE +{ +// Implementation +public: + CWinApp* m_pCurrentWinApp; + HINSTANCE m_hCurrentInstanceHandle; + HINSTANCE m_hCurrentResourceHandle; + LPCTSTR m_lpszCurrentAppName; + + // instance specific lists + CRuntimeClass* m_pFirstClass; + + // exceptions + AFX_TERM_PROC m_pfnTerminate; + +#ifdef _AFXDLL + CDynLinkLibrary* m_pFirstDLL; // start of DLL list + HINSTANCE m_appLangDLL; +#endif + +public: + AFX_CORE_STATE(); +}; + +#if defined(_AFXDLL) || defined(_AFXCTL) + #define AfxGetCoreState() (&AfxGetAppState()->m_coreState) +#else + extern AFX_DATA AFX_CORE_STATE _afxCoreState; + #define AfxGetCoreState() (&_afxCoreState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_WIN_STATE + +class CView; +class CFrameWnd; + +struct AFX_WIN_STATE +{ +// Implementation +public: + // custom colors are held here and saved between calls + COLORREF m_crSavedCustom[16]; + + // gray dialog support + HBRUSH m_hDlgBkBrush; // dialog and message box background brush + COLORREF m_crDlgTextClr; +#ifdef _MAC + COLORREF m_crDlgBkClr; +#endif + +#if !defined(_MAC) && !defined(_USRDLL) && !defined(_AFXCTL) + // 3d controls support + BOOL m_bCtl3dInited; + HINSTANCE m_hCtl3dLib; + BOOL (WINAPI* m_pfnRegister)(HINSTANCE); + BOOL (WINAPI* m_pfnUnregister)(HINSTANCE); + BOOL (WINAPI* m_pfnAutoSubclass)(HINSTANCE); + BOOL (WINAPI* m_pfnUnAutoSubclass)(); + BOOL (WINAPI* m_pfnColorChange)(); + BOOL (WINAPI* m_pfnSubclassDlgEx)(HWND, DWORD); + void (WINAPI* m_pfnWinIniChange)(); + BOOL (WINAPI* m_pfnSubclassCtl)(HWND); + BOOL (WINAPI* m_pfnSubclassCtlEx)(HWND, int); +#endif + + // printing abort + BOOL m_bUserAbort; + + // pen support + void (CALLBACK* m_pfnRegisterPenAppProc)(UINT, BOOL); + + // application shutdown behavior + DWORD m_nObjectCount; + BOOL m_bUserCtrl; + +#if defined(_USRDLL) || defined(_AFXCTL) + TCHAR m_szUnregisterList[4096]; // per-process AfxRegisterClass data +#endif + +public: + AFX_WIN_STATE(); + ~AFX_WIN_STATE(); +}; + +#if defined(_AFXDLL) || defined(_AFXCTL) + #define AfxGetWinState() (&AfxGetAppState()->m_winState) +#else + extern AFX_DATA AFX_WIN_STATE _afxWinState; + #define AfxGetWinState() (&_afxWinState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_EDIT_STATE : last find/replace state + +class CFindReplaceDialog; + +struct AFX_EDIT_STATE +{ + CFindReplaceDialog* pFindReplaceDlg; // find or replace dialog + BOOL bFindOnly; // Is pFindReplace the find or replace? + CString strFind; // last find string + CString strReplace; // last replace string + BOOL bCase; // TRUE==case sensitive, FALSE==not + int bNext; // TRUE==search down, FALSE== search up + + AFX_EDIT_STATE(); + ~AFX_EDIT_STATE(); +}; + + +#if defined(_WINDLL) || defined(_AFXDLL) + #define AfxGetEditState() (&AfxGetAppState()->m_editState) +#else + extern AFX_DATA AFX_EDIT_STATE _afxEditState; + #define AfxGetEditState() (&_afxEditState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_OLE_STATE + +#undef AFX_DATA +#define AFX_DATA AFX_OLE_DATA + +class COleDataSource; + +struct AFX_OLE_STATE +{ +// Implementation +public: + COleObjectFactory* m_pFirstFactory; + + BOOL m_bNeedTerm; + BOOL m_bNeedTermCOM; + + CView* m_pActivateView; // activation view + COleDataSource* m_pClipboardSource; + +public: + AFX_OLE_STATE(); +}; + +#if defined(_AFXDLL) || defined(_AFXCTL) + #define AfxGetOleState() (&AfxGetAppState()->m_oleState) +#else + extern AFX_DATA AFX_OLE_STATE _afxOleState; + #define AfxGetOleState() (&_afxOleState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_DB_STATE + +#undef AFX_DATA +#define AFX_DATA AFX_DB_DATA + +typedef void* HENV; // must match SQL.H + +struct AFX_DB_STATE +{ +// Implementation +public: + // MFC/DB global data + HENV m_henvAllConnections; // per-app HENV (CDatabase) + int m_nAllocatedConnections; // per-app reference to HENV above + +public: + AFX_DB_STATE(); +}; + +#if defined(_WINDLL) || defined(_AFXDLL) + #define AfxGetDbState() (&AfxGetAppState()->m_dbState) +#else + extern AFX_DATA AFX_DB_STATE _afxDbState; + #define AfxGetDbState() (&_afxDbState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_MAIL_STATE + +struct AFX_MAIL_STATE +{ +// Implementation +public: + HINSTANCE m_hInstMail; // handle to MAPI32.DLL + +public: + ~AFX_MAIL_STATE(); +}; + +#if defined(_WINDLL) || defined(_AFXDLL) + #define AfxGetMailState() (&AfxGetAppState()->m_mailState) +#else + extern AFX_DATA AFX_MAIL_STATE _afxMailState; + #define AfxGetMailState() (&_afxMailState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_SOCK_STATE + +struct AFX_SOCK_STATE +{ +// Implementation +public: + void (*m_lpfnCleanup)(); + +public: + ~AFX_SOCK_STATE(); +}; + +#if defined(_WINDLL) || defined(_AFXDLL) + #define AfxGetSockState() (&AfxGetAppState()->m_sockState) +#else + extern AFX_DATA AFX_SOCK_STATE _afxSockState; + #define AfxGetSockState() (&_afxSockState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_ALLOC_STATE + +struct IMalloc; // must match OBJBASE.H +typedef IMalloc* LPMALLOC; + +struct AFX_ALLOC_STATE +{ +// Implementation +public: + LPMALLOC m_lpTaskMalloc; // OLE task allocator. + +#ifdef _DEBUG + // options for tuning the allocation diagnostics + CDumpContext m_afxDump; + BOOL m_bTraceEnabled; + int m_nTraceFlags; +#if defined(_USRDLL) || defined(_AFXDLL) + int m_nMemDF; // a global variable with static linking +#endif + + // memory diagnostics state + LONG m_lTotalAlloc; // total bytes of memory allocated + LONG m_lCurAlloc; // current bytes of memory allocated + LONG m_lMaxAlloc; // maximum bytes of memory allocated at any one time + + CBlockHeader* m_pFirstBlock; // add in reverse order + BOOL (AFXAPI *m_lpfnAssertFailedLine)(LPCSTR, int); +#endif + +public: + AFX_ALLOC_STATE(); +}; + +#if defined(_WINDLL) || defined(_AFXDLL) + #define AfxGetAllocState() (&AfxGetAppState()->m_allocState) +#else + extern AFX_DATA AFX_ALLOC_STATE _afxAllocState; + #define AfxGetAllocState() (&_afxAllocState) +#endif + +///////////////////////////////////////////////////////////////////////////// +// AFX_APP_STATE (only used for DLL versions) + +#undef AFX_DATA +#define AFX_DATA AFX_CORE_DATA + +#if defined(_WINDLL) || defined(_AFXDLL) + +struct AFX_MODULE_STATE +{ +// Implementation +public: +#ifdef _AFXCTL + AFX_MODULE_STATE* m_pID; // Uniquely identify where this data came from. +#endif +#if defined(_AFXDLL) || defined(_AFXCTL) + AFX_CORE_STATE m_coreState; + AFX_WIN_STATE m_winState; + AFX_OLE_STATE m_oleState; + +public: + AFX_MODULE_STATE(); + ~AFX_MODULE_STATE(); +#endif + +#ifdef _AFXCTL +public: + void* operator new(size_t nSize); + void operator delete(void* p); +#endif +}; + +struct AFX_APP_STATE : AFX_MODULE_STATE +{ +// Implementation +public: + AFX_DB_STATE m_dbState; + AFX_ALLOC_STATE m_allocState; + AFX_EDIT_STATE m_editState; + AFX_MAIL_STATE m_mailState; + AFX_SOCK_STATE m_sockState; + +#ifdef _AFXCTL + CMapPtrToPtr m_mapExtraData; // Extra data for OLE controls. +#endif + + void* AFX_CDECL operator new(size_t nSize); + void AFX_CDECL operator delete(void* p); + +public: + AFX_APP_STATE(); + ~AFX_APP_STATE(); +}; + +AFX_APP_STATE* AFXAPI AfxGetAppState(); + +#ifdef _AFXCTL +#define AfxGetExtraDataMap() (&AfxGetAppState()->m_mapExtraData) + +AFX_MODULE_STATE* AFXAPI AfxGetBaseModuleContext(); +AFX_MODULE_STATE* AFXAPI AfxGetCurrentModuleContext(); + +#define _afxModuleAddrCurrent AfxGetCurrentModuleContext() + +#define AFX_MANAGE_STATE(pData) AFX_MAINTAIN_STATE _ctlState(pData); + +#define METHOD_MANAGE_STATE(theClass, localClass) \ + METHOD_PROLOGUE_EX(theClass, localClass) \ + AFX_MANAGE_STATE(pThis->m_pModuleState) + +extern AFX_MODULE_STATE* AFXAPI AfxPushModuleContext(AFX_MODULE_STATE* psIn); +extern void AFXAPI AfxPopModuleContext(AFX_MODULE_STATE* psIn, + BOOL bCopy = FALSE); + +// When using this object, or the macros above that use this object +// it is necessary to insure that the object's destructor cannot be +// thrown past, by an unexpected exception. + +class AFX_MAINTAIN_STATE +{ +private: + AFX_MODULE_STATE* m_psPrevious; + +public: + AFX_MAINTAIN_STATE(AFX_MODULE_STATE* psData); + ~AFX_MAINTAIN_STATE(); +}; +#endif //_AFXCTL + +#endif //_WINDLL || _AFXDLL + +// Stub special OLE Control macros +#ifndef _AFXCTL +#define AFX_MANAGE_CTL_STATE() +#define METHOD_MANAGE_STATE(theClass, localClass) \ + METHOD_PROLOGUE_EX(theClass, localClass) +#endif + +///////////////////////////////////////////////////////////////////////////// +// CHandleMap (needed for AFX_THREAD_STATE) + +// Note: Do not access the members of this class directly. +// Use CWnd::FromHandle, CDC::FromHandle, etc. +// The actual definition is only included because it is +// necessary for the definition of CWinThread. +// +// Most Windows objects are represented with a HANDLE, including +// the most important ones, HWND, HDC, HPEN, HFONT etc. +// We want C++ objects to wrap these handle based objects whenever we can. +// Since Windows objects can be created outside of C++ (eg: calling +// ::CreateWindow will return an HWND with no C++ wrapper) we must +// support a reasonably uniform mapping from permanent handles +// (i.e. the ones allocated in C++) and temporary handles (i.e. +// the ones allocated in C, but passed through a C++ interface. +// We keep two dictionaries for this purpose. The permanent dictionary +// stores those C++ objects that have been explicitly created by +// the developer. The C++ constructor for the wrapper class will +// insert the mapping into the permanent dictionary and the C++ +// destructor will remove it and possibly free up the associated +// Windows object. +// When a handle passes through a C++ interface that doesn't exist in +// the permanent dictionary, we allocate a temporary wrapping object +// and store that mapping into the temporary dictionary. +// At idle time the temporary wrapping objects are flushed (since you better +// not be holding onto something you didn't create). +// + +class CWinThread; // forward reference for friend declaration + +class CHandleMap +{ +private: // implementation + CMapPtrToPtr m_permanentMap; + CMapPtrToPtr m_temporaryMap; + CRuntimeClass* m_pClass; + size_t m_nOffset; // offset of handles in the object + int m_nHandles; // 1 or 2 (for CDC) + +// Constructors +public: + CHandleMap(CRuntimeClass* pClass, size_t nOffset, int nHandles = 1); + +// Operations +public: + CObject* FromHandle(HANDLE h); + void DeleteTemp(); + + void SetPermanent(HANDLE h, CObject* permOb); + void RemoveHandle(HANDLE h); + + BOOL LookupPermanent(HANDLE h, CObject*& pObject); + BOOL LookupTemporary(HANDLE h, CObject*& pObject); + + friend class CWinThread; +}; + +// Note: out-of-line _DEBUG version is in winhand.cpp +#ifndef _DEBUG +inline void CHandleMap::SetPermanent(HANDLE h, CObject* permOb) + { m_permanentMap[(LPVOID)h] = permOb; } +#endif + +///////////////////////////////////////////////////////////////////////////// +// Thread global state + +class CWinThread; // forward reference (see afxwin.h) +class CWnd; // forward reference (see afxwin.h) + +struct AFX_THREAD_STATE +{ +// Implementation +public: + // current CWinThread pointer + CWinThread* m_pCurrentWinThread; + BOOL m_bInMsgFilter; + + // list of CFrameWnds for thread + CFrameWnd* m_pFirstFrameWnd; + + // memory safety pool for temp maps + void* m_pSafetyPoolBuffer; // current buffer + + // thread local exception context + AFX_EXCEPTION_CONTEXT m_exceptionContext; + + // temp map state + DWORD m_nTempMapLock; // if not 0, temp maps locked + CHandleMap* m_pmapHWND; + CHandleMap* m_pmapHMENU; + CHandleMap* m_pmapHDC; + CHandleMap* m_pmapHGDIOBJ; + + // CWnd create and gray dialog hook + CWnd* m_pWndInit; + HWND m_hWndInit; + BOOL m_bDlgCreate; + HHOOK m_hHookOldSendMsg; + HHOOK m_hHookOldCbtFilter; + + // other CWnd modal data + MSG m_lastSentMsg; // see CWnd::WindowProc + HWND m_hTrackingWindow; // see CWnd::TrackPopupMenu + HMENU m_hTrackingMenu; + TCHAR m_szTempClassName[64]; // see AfxRegisterWndClass + HWND m_hLockoutNotifyWindow; // see CWnd::OnCommand + + // other framework modal data + CView* m_pRoutingView; // see CCmdTarget::GetRoutingView + + // MFC/DB thread-local data + BOOL m_bWaitForDataSource; + +#ifndef _AFXCTL +#ifndef _USRDLL + HHOOK m_hHookOldMsgFilter; +#endif +#endif + + // WinSock specific thread state + HWND m_hSocketWindow; + CMapPtrToPtr m_mapSocketHandle; + CMapPtrToPtr m_mapDeadSockets; + CPtrList m_listSocketNotifications; + + // common controls thread state + CHandleMap* m_pmapHIMAGELIST; + + void* AFX_CDECL operator new(size_t nSize); +#ifdef _DEBUG + void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine); +#endif + + void AFX_CDECL operator delete(void* p); + +public: + AFX_THREAD_STATE(); + ~AFX_THREAD_STATE(); +}; + +AFX_THREAD_STATE* AFXAPI AfxGetThreadState(); + +///////////////////////////////////////////////////////////////////////////// + +#ifdef _AFX_PACKING +#pragma pack(pop) +#endif + +#undef AFX_DATA +#define AFX_DATA + +#endif //__AFXSTATE_H__ + +///////////////////////////////////////////////////////////////////////////// |