summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/mfc30/afxstat_.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/sdk/inc/mfc30/afxstat_.h')
-rw-r--r--public/sdk/inc/mfc30/afxstat_.h537
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__
+
+/////////////////////////////////////////////////////////////////////////////