Annotation of parser3/src/sql/odbc/MFCpatches/AFXIMPL.H, revision 1.1
1.1 ! parser 1: // This is a part of the Microsoft Foundation Classes C++ library.
! 2: // Copyright (C) 1992-1998 Microsoft Corporation
! 3: // All rights reserved.
! 4: //
! 5: // This source code is only intended as a supplement to the
! 6: // Microsoft Foundation Classes Reference and related
! 7: // electronic documentation provided with the library.
! 8: // See these sources for detailed information regarding the
! 9: // Microsoft Foundation Classes product.
! 10:
! 11: #undef AFX_DATA
! 12: #define AFX_DATA AFX_CORE_DATA
! 13:
! 14: /////////////////////////////////////////////////////////////////////////////
! 15: // Auxiliary System/Screen metrics
! 16:
! 17: struct AUX_DATA
! 18: {
! 19: // system metrics
! 20: int cxVScroll, cyHScroll;
! 21: int cxIcon, cyIcon;
! 22:
! 23: int cxBorder2, cyBorder2;
! 24:
! 25: // device metrics for screen
! 26: int cxPixelsPerInch, cyPixelsPerInch;
! 27:
! 28: // convenient system color
! 29: HBRUSH hbrWindowFrame;
! 30: HBRUSH hbrBtnFace;
! 31:
! 32: // color values of system colors used for CToolBar
! 33: COLORREF clrBtnFace, clrBtnShadow, clrBtnHilite;
! 34: COLORREF clrBtnText, clrWindowFrame;
! 35:
! 36: // standard cursors
! 37: HCURSOR hcurWait;
! 38: HCURSOR hcurArrow;
! 39: HCURSOR hcurHelp; // cursor used in Shift+F1 help
! 40:
! 41: // special GDI objects allocated on demand
! 42: HFONT hStatusFont;
! 43: HFONT hToolTipsFont;
! 44: HBITMAP hbmMenuDot;
! 45:
! 46: // other system information
! 47: UINT nWinVer; // Major.Minor version numbers
! 48: BOOL bWin95; // TRUE if Windows 95 (not NT)
! 49: BOOL bWin4; // TRUE if Windows 4.0
! 50: BOOL bNotWin4; // TRUE if not Windows 4.0
! 51: BOOL bSmCaption; // TRUE if WS_EX_SMCAPTION is supported
! 52: BOOL bMarked4; // TRUE if marked as 4.0
! 53:
! 54: // Implementation
! 55: AUX_DATA();
! 56: ~AUX_DATA();
! 57: void UpdateSysColors();
! 58: void UpdateSysMetrics();
! 59: };
! 60:
! 61: extern AFX_DATA AUX_DATA afxData;
! 62:
! 63: /////////////////////////////////////////////////////////////////////////////
! 64: // _AFX_CTL3D_STATE
! 65:
! 66: #ifndef _AFX_NO_CTL3D_SUPPORT
! 67:
! 68: #undef AFX_DATA
! 69: #define AFX_DATA
! 70:
! 71: class _AFX_CTL3D_STATE : public CNoTrackObject
! 72: {
! 73: public:
! 74: virtual ~_AFX_CTL3D_STATE();
! 75:
! 76: // setup during initialization
! 77: BOOL m_bCtl3dInited;
! 78: HINSTANCE m_hCtl3dLib;
! 79:
! 80: // CTL3D32 entry points
! 81: BOOL (WINAPI* m_pfnRegister)(HINSTANCE);
! 82: BOOL (WINAPI* m_pfnUnregister)(HINSTANCE);
! 83: BOOL (WINAPI* m_pfnAutoSubclass)(HINSTANCE);
! 84: BOOL (WINAPI* m_pfnUnAutoSubclass)();
! 85: BOOL (WINAPI* m_pfnColorChange)();
! 86: BOOL (WINAPI* m_pfnSubclassDlgEx)(HWND, DWORD);
! 87: void (WINAPI* m_pfnWinIniChange)();
! 88: BOOL (WINAPI* m_pfnSubclassCtl)(HWND);
! 89: BOOL (WINAPI* m_pfnSubclassCtlEx)(HWND, int);
! 90: };
! 91:
! 92: EXTERN_PROCESS_LOCAL(_AFX_CTL3D_STATE, _afxCtl3dState)
! 93:
! 94: class _AFX_CTL3D_THREAD : public CNoTrackObject
! 95: {
! 96: public:
! 97: virtual ~_AFX_CTL3D_THREAD();
! 98: };
! 99:
! 100: EXTERN_THREAD_LOCAL(_AFX_CTL3D_THREAD, _afxCtl3dThread)
! 101:
! 102: _AFX_CTL3D_STATE* AFXAPI AfxGetCtl3dState();
! 103:
! 104: #endif //!_AFX_NO_CTL3D_SUPPORT
! 105:
! 106: /////////////////////////////////////////////////////////////////////////////
! 107: // _AFX_EDIT_STATE
! 108:
! 109: class _AFX_EDIT_STATE : public CNoTrackObject
! 110: {
! 111: public:
! 112: _AFX_EDIT_STATE();
! 113: virtual ~_AFX_EDIT_STATE();
! 114:
! 115: CFindReplaceDialog* pFindReplaceDlg; // find or replace dialog
! 116: BOOL bFindOnly; // Is pFindReplace the find or replace?
! 117: CString strFind; // last find string
! 118: CString strReplace; // last replace string
! 119: BOOL bCase; // TRUE==case sensitive, FALSE==not
! 120: int bNext; // TRUE==search down, FALSE== search up
! 121: BOOL bWord; // TRUE==match whole word, FALSE==not
! 122: };
! 123:
! 124: #undef AFX_DATA
! 125: #define AFX_DATA AFX_CORE_DATA
! 126:
! 127: class _AFX_RICHEDIT_STATE : public _AFX_EDIT_STATE
! 128: {
! 129: public:
! 130: HINSTANCE m_hInstRichEdit; // handle to RICHED32.DLL
! 131: virtual ~_AFX_RICHEDIT_STATE();
! 132: };
! 133:
! 134: EXTERN_PROCESS_LOCAL(_AFX_RICHEDIT_STATE, _afxRichEditState)
! 135:
! 136: _AFX_RICHEDIT_STATE* AFX_CDECL AfxGetRichEditState();
! 137:
! 138: #undef AFX_DATA
! 139: #define AFX_DATA
! 140:
! 141: ////////////////////////////////////////////////////////////////////////////
! 142: // other global state
! 143:
! 144: class CPushRoutingFrame
! 145: {
! 146: protected:
! 147: CFrameWnd* pOldRoutingFrame;
! 148: _AFX_THREAD_STATE* pThreadState;
! 149:
! 150: public:
! 151: CPushRoutingFrame(CFrameWnd* pNewRoutingFrame)
! 152: {
! 153: pThreadState = AfxGetThreadState();
! 154: pOldRoutingFrame = pThreadState->m_pRoutingFrame;
! 155: pThreadState->m_pRoutingFrame = pNewRoutingFrame;
! 156: }
! 157: ~CPushRoutingFrame()
! 158: { pThreadState->m_pRoutingFrame = pOldRoutingFrame; }
! 159: };
! 160:
! 161: class CPushRoutingView
! 162: {
! 163: protected:
! 164: CView* pOldRoutingView;
! 165: _AFX_THREAD_STATE* pThreadState;
! 166:
! 167: public:
! 168: CPushRoutingView(CView* pNewRoutingView)
! 169: {
! 170: pThreadState = AfxGetThreadState();
! 171: pOldRoutingView = pThreadState->m_pRoutingView;
! 172: pThreadState->m_pRoutingView = pNewRoutingView;
! 173: }
! 174: ~CPushRoutingView()
! 175: { pThreadState->m_pRoutingView = pOldRoutingView; }
! 176: };
! 177:
! 178: // Note: afxData.cxBorder and afxData.cyBorder aren't used anymore
! 179: #define CX_BORDER 1
! 180: #define CY_BORDER 1
! 181:
! 182: // states for Shift+F1 hep mode
! 183: #define HELP_INACTIVE 0 // not in Shift+F1 help mode (must be 0)
! 184: #define HELP_ACTIVE 1 // in Shift+F1 help mode (non-zero)
! 185: #define HELP_ENTERING 2 // entering Shift+F1 help mode (non-zero)
! 186:
! 187: /////////////////////////////////////////////////////////////////////////////
! 188: // Window class names and other window creation support
! 189:
! 190: // from wincore.cpp
! 191: extern const TCHAR _afxWnd[]; // simple child windows/controls
! 192: extern const TCHAR _afxWndControlBar[]; // controls with gray backgrounds
! 193: extern const TCHAR _afxWndMDIFrame[];
! 194: extern const TCHAR _afxWndFrameOrView[];
! 195: extern const TCHAR _afxWndOleControl[];
! 196:
! 197: #define AFX_WND_REG 0x00001
! 198: #define AFX_WNDCONTROLBAR_REG 0x00002
! 199: #define AFX_WNDMDIFRAME_REG 0x00004
! 200: #define AFX_WNDFRAMEORVIEW_REG 0x00008
! 201: #define AFX_WNDCOMMCTLS_REG 0x00010 // means all original Win95
! 202: #define AFX_WNDOLECONTROL_REG 0x00020
! 203: #define AFX_WNDCOMMCTL_UPDOWN_REG 0x00040 // these are original Win95
! 204: #define AFX_WNDCOMMCTL_TREEVIEW_REG 0x00080
! 205: #define AFX_WNDCOMMCTL_TAB_REG 0x00100
! 206: #define AFX_WNDCOMMCTL_PROGRESS_REG 0x00200
! 207: #define AFX_WNDCOMMCTL_LISTVIEW_REG 0x00400
! 208: #define AFX_WNDCOMMCTL_HOTKEY_REG 0x00800
! 209: #define AFX_WNDCOMMCTL_BAR_REG 0x01000
! 210: #define AFX_WNDCOMMCTL_ANIMATE_REG 0x02000
! 211: #define AFX_WNDCOMMCTL_INTERNET_REG 0x04000 // these are new in IE4
! 212: #define AFX_WNDCOMMCTL_COOL_REG 0x08000
! 213: #define AFX_WNDCOMMCTL_USEREX_REG 0x10000
! 214: #define AFX_WNDCOMMCTL_DATE_REG 0x20000
! 215:
! 216: #define AFX_WIN95CTLS_MASK 0x03FC0 // UPDOWN -> ANIMATE
! 217: #define AFX_WNDCOMMCTLSALL_REG 0x3C010 // COMMCTLS|INTERNET|COOL|USEREX|DATE
! 218: #define AFX_WNDCOMMCTLSNEW_REG 0x3C000 // INTERNET|COOL|USEREX|DATE
! 219:
! 220: #define AfxDeferRegisterClass(fClass) AfxEndDeferRegisterClass(fClass)
! 221:
! 222: BOOL AFXAPI AfxEndDeferRegisterClass(LONG fToRegister);
! 223:
! 224: // MFC has its own version of the TOOLINFO structure containing the
! 225: // the Win95 base version of the structure. Since MFC targets Win95 base,
! 226: // we need this structure so calls into that old library don't fail.
! 227:
! 228: typedef struct tagAFX_OLDTOOLINFO {
! 229: UINT cbSize;
! 230: UINT uFlags;
! 231: HWND hwnd;
! 232: UINT uId;
! 233: RECT rect;
! 234: HINSTANCE hinst;
! 235: LPTSTR lpszText;
! 236: } AFX_OLDTOOLINFO;
! 237:
! 238: // special AFX window class name mangling
! 239:
! 240: #ifndef _UNICODE
! 241: #define _UNICODE_SUFFIX
! 242: #else
! 243: #define _UNICODE_SUFFIX _T("u")
! 244: #endif
! 245:
! 246: #ifndef _DEBUG
! 247: #define _DEBUG_SUFFIX
! 248: #else
! 249: #define _DEBUG_SUFFIX _T("d")
! 250: #endif
! 251:
! 252: #ifdef _AFXDLL
! 253: #define _STATIC_SUFFIX
! 254: #else
! 255: #define _STATIC_SUFFIX _T("s")
! 256: #endif
! 257:
! 258: #define AFX_WNDCLASS(s) \
! 259: _T("Afx") _T(s) _T("42") _STATIC_SUFFIX _UNICODE_SUFFIX _DEBUG_SUFFIX
! 260:
! 261: #define AFX_WND AFX_WNDCLASS("Wnd")
! 262: #define AFX_WNDCONTROLBAR AFX_WNDCLASS("ControlBar")
! 263: #define AFX_WNDMDIFRAME AFX_WNDCLASS("MDIFrame")
! 264: #define AFX_WNDFRAMEORVIEW AFX_WNDCLASS("FrameOrView")
! 265: #define AFX_WNDOLECONTROL AFX_WNDCLASS("OleControl")
! 266:
! 267: // dialog/commdlg hook procs
! 268: BOOL CALLBACK AfxDlgProc(HWND, UINT, WPARAM, LPARAM);
! 269: UINT CALLBACK _AfxCommDlgProc(HWND hWnd, UINT, WPARAM, LPARAM);
! 270:
! 271: // support for standard dialogs
! 272: extern UINT _afxMsgSETRGB;
! 273: typedef UINT (CALLBACK* COMMDLGPROC)(HWND, UINT, UINT, LONG);
! 274:
! 275: /////////////////////////////////////////////////////////////////////////////
! 276: // Extended dialog templates (new in Win95)
! 277:
! 278: #pragma pack(push, 1)
! 279:
! 280: typedef struct
! 281: {
! 282: WORD dlgVer;
! 283: WORD signature;
! 284: DWORD helpID;
! 285: DWORD exStyle;
! 286: DWORD style;
! 287: WORD cDlgItems;
! 288: short x;
! 289: short y;
! 290: short cx;
! 291: short cy;
! 292: } DLGTEMPLATEEX;
! 293:
! 294: typedef struct
! 295: {
! 296: DWORD helpID;
! 297: DWORD exStyle;
! 298: DWORD style;
! 299: short x;
! 300: short y;
! 301: short cx;
! 302: short cy;
! 303: DWORD id;
! 304: } DLGITEMTEMPLATEEX;
! 305:
! 306: #pragma pack(pop)
! 307:
! 308: /////////////////////////////////////////////////////////////////////////////
! 309: // Special helpers
! 310:
! 311: void AFXAPI AfxCancelModes(HWND hWndRcvr);
! 312: HWND AFXAPI AfxGetParentOwner(HWND hWnd);
! 313: BOOL AFXAPI AfxIsDescendant(HWND hWndParent, HWND hWndChild);
! 314: BOOL AFXAPI AfxHelpEnabled(); // determine if ID_HELP handler exists
! 315: void AFXAPI AfxDeleteObject(HGDIOBJ* pObject);
! 316: BOOL AFXAPI AfxCustomLogFont(UINT nIDS, LOGFONT* pLogFont);
! 317: BOOL AFXAPI AfxGetPropSheetFont(CString& strFace, WORD& wSize, BOOL bWizard);
! 318:
! 319: BOOL AFXAPI _AfxIsComboBoxControl(HWND hWnd, UINT nStyle);
! 320: BOOL AFXAPI _AfxCheckCenterDialog(LPCTSTR lpszResource);
! 321: BOOL AFXAPI _AfxCompareClassName(HWND hWnd, LPCTSTR lpszClassName);
! 322: HWND AFXAPI _AfxChildWindowFromPoint(HWND, POINT);
! 323:
! 324: // for determining version of COMCTL32.DLL
! 325: #define VERSION_WIN4 MAKELONG(0, 4)
! 326: #define VERSION_IE3 MAKELONG(70, 4)
! 327: #define VERSION_IE4 MAKELONG(71, 4)
! 328: #define VERSION_IE401 MAKELONG(72, 4)
! 329: extern int _afxComCtlVersion;
! 330: DWORD AFXAPI _AfxGetComCtlVersion();
! 331:
! 332: #undef AFX_DATA
! 333: #define AFX_DATA AFX_CORE_DATA
! 334:
! 335: // UNICODE/MBCS abstractions
! 336: #ifdef _MBCS
! 337: extern AFX_DATA const BOOL _afxDBCS;
! 338: #else
! 339: #define _afxDBCS FALSE
! 340: #endif
! 341:
! 342: #undef AFX_DATA
! 343: #define AFX_DATA
! 344:
! 345: // determine number of elements in an array (not bytes)
! 346: #define _countof(array) (sizeof(array)/sizeof(array[0]))
! 347:
! 348: #ifndef _AFX_PORTABLE
! 349: int AFX_CDECL AfxCriticalNewHandler(size_t nSize);
! 350: #endif
! 351:
! 352: void AFXAPI AfxGlobalFree(HGLOBAL hGlobal);
! 353:
! 354: /////////////////////////////////////////////////////////////////////////////
! 355: // static exceptions
! 356:
! 357: extern CNotSupportedException _simpleNotSupportedException;
! 358: extern CMemoryException _simpleMemoryException;
! 359: extern CUserException _simpleUserException;
! 360: extern CResourceException _simpleResourceException;
! 361:
! 362: /////////////////////////////////////////////////////////////////////////////
! 363: // useful message ranges
! 364:
! 365: #define WM_SYSKEYFIRST WM_SYSKEYDOWN
! 366: #define WM_SYSKEYLAST WM_SYSDEADCHAR
! 367:
! 368: #define WM_NCMOUSEFIRST WM_NCMOUSEMOVE
! 369: #define WM_NCMOUSELAST WM_NCMBUTTONDBLCLK
! 370:
! 371:
! 372: /////////////////////////////////////////////////////////////////////////////
! 373: // AFX_CRITICAL_SECTION
! 374:
! 375: #undef AFX_DATA
! 376: #define AFX_DATA AFX_CORE_DATA
! 377:
! 378: // these globals are protected by the same critical section
! 379: #define CRIT_DYNLINKLIST 0
! 380: #define CRIT_RUNTIMECLASSLIST 0
! 381: #define CRIT_OBJECTFACTORYLIST 0
! 382: #define CRIT_LOCKSHARED 0
! 383: // these globals are not protected by independent critical sections
! 384: #define CRIT_REGCLASSLIST 1
! 385: #define CRIT_WAITCURSOR 2
! 386: #define CRIT_DROPSOURCE 3
! 387: #define CRIT_DROPTARGET 4
! 388: #define CRIT_RECTTRACKER 5
! 389: #define CRIT_EDITVIEW 6
! 390: #define CRIT_WINMSGCACHE 7
! 391: #define CRIT_HALFTONEBRUSH 8
! 392: #define CRIT_SPLITTERWND 9
! 393: #define CRIT_MINIFRAMEWND 10
! 394: #define CRIT_CTLLOCKLIST 11
! 395: #define CRIT_DYNDLLLOAD 12
! 396: #define CRIT_TYPELIBCACHE 13
! 397: #define CRIT_STOCKMASK 14
! 398: #define CRIT_ODBC 15
! 399: #define CRIT_PROCESSLOCAL 16
! 400: #define CRIT_MAX 17 // Note: above plus one!
! 401:
! 402: #ifdef _MT
! 403: void AFXAPI AfxLockGlobals(int nLockType);
! 404: void AFXAPI AfxUnlockGlobals(int nLockType);
! 405: BOOL AFXAPI AfxCriticalInit();
! 406: void AFXAPI AfxCriticalTerm();
! 407: #else
! 408: #define AfxLockGlobals(nLockType)
! 409: #define AfxUnlockGlobals(nLockType)
! 410: #define AfxCriticalInit() (TRUE)
! 411: #define AfxCriticalTerm()
! 412: #endif
! 413:
! 414: /////////////////////////////////////////////////////////////////////////////
! 415: // Portability abstractions
! 416:
! 417: #define _AfxSetDlgCtrlID(hWnd, nID) SetWindowLong(hWnd, GWL_ID, nID)
! 418: #define _AfxGetDlgCtrlID(hWnd) ((UINT)(WORD)::GetDlgCtrlID(hWnd))
! 419:
! 420: // misc helpers
! 421: BOOL AFXAPI AfxFullPath(LPTSTR lpszPathOut, LPCTSTR lpszFileIn);
! 422: BOOL AFXAPI AfxComparePath(LPCTSTR lpszPath1, LPCTSTR lpszPath2);
! 423:
! 424: UINT AFXAPI AfxGetFileTitle(LPCTSTR lpszPathName, LPTSTR lpszTitle, UINT nMax);
! 425: UINT AFXAPI AfxGetFileName(LPCTSTR lpszPathName, LPTSTR lpszTitle, UINT nMax);
! 426: void AFX_CDECL AfxTimeToFileTime(const CTime& time, LPFILETIME pFileTime);
! 427: void AFXAPI AfxGetRoot(LPCTSTR lpszPath, CString& strRoot);
! 428:
! 429: #ifndef _AFX_NO_OLE_SUPPORT
! 430: class AFX_COM
! 431: {
! 432: public:
! 433: HRESULT CreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter,
! 434: REFIID riid, LPVOID* ppv);
! 435: HRESULT GetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
! 436: };
! 437:
! 438: CString AFXAPI AfxStringFromCLSID(REFCLSID rclsid);
! 439: BOOL AFXAPI AfxGetInProcServer(LPCTSTR lpszCLSID, CString& str);
! 440: BOOL AFXAPI AfxResolveShortcut(CWnd* pWnd, LPCTSTR pszShortcutFile,
! 441: LPTSTR pszPath, int cchPath);
! 442: #endif // _AFX_NO_OLE_SUPPORT
! 443:
! 444: #define NULL_TLS ((DWORD)-1)
! 445:
! 446: /////////////////////////////////////////////////////////////////////////////
! 447: // Message map and message dispatch
! 448:
! 449: const AFX_MSGMAP_ENTRY* AFXAPI
! 450: AfxFindMessageEntry(const AFX_MSGMAP_ENTRY* lpEntry,
! 451: UINT nMsg, UINT nCode, UINT nID);
! 452:
! 453: union MessageMapFunctions
! 454: {
! 455: AFX_PMSG pfn; // generic member function pointer
! 456:
! 457: // specific type safe variants for WM_COMMAND and WM_NOTIFY messages
! 458: void (AFX_MSG_CALL CCmdTarget::*pfn_COMMAND)();
! 459: BOOL (AFX_MSG_CALL CCmdTarget::*pfn_bCOMMAND)();
! 460: void (AFX_MSG_CALL CCmdTarget::*pfn_COMMAND_RANGE)(UINT);
! 461: BOOL (AFX_MSG_CALL CCmdTarget::*pfn_COMMAND_EX)(UINT);
! 462:
! 463: void (AFX_MSG_CALL CCmdTarget::*pfn_UPDATE_COMMAND_UI)(CCmdUI*);
! 464: void (AFX_MSG_CALL CCmdTarget::*pfn_UPDATE_COMMAND_UI_RANGE)(CCmdUI*, UINT);
! 465: void (AFX_MSG_CALL CCmdTarget::*pfn_OTHER)(void*);
! 466: BOOL (AFX_MSG_CALL CCmdTarget::*pfn_OTHER_EX)(void*);
! 467:
! 468: void (AFX_MSG_CALL CCmdTarget::*pfn_NOTIFY)(NMHDR*, LRESULT*);
! 469: BOOL (AFX_MSG_CALL CCmdTarget::*pfn_bNOTIFY)(NMHDR*, LRESULT*);
! 470: void (AFX_MSG_CALL CCmdTarget::*pfn_NOTIFY_RANGE)(UINT, NMHDR*, LRESULT*);
! 471: BOOL (AFX_MSG_CALL CCmdTarget::*pfn_NOTIFY_EX)(UINT, NMHDR*, LRESULT*);
! 472:
! 473: // type safe variant for thread messages
! 474:
! 475: void (AFX_MSG_CALL CWinThread::*pfn_THREAD)(WPARAM, LPARAM);
! 476:
! 477: // specific type safe variants for WM-style messages
! 478: BOOL (AFX_MSG_CALL CWnd::*pfn_bD)(CDC*);
! 479: BOOL (AFX_MSG_CALL CWnd::*pfn_bb)(BOOL);
! 480: BOOL (AFX_MSG_CALL CWnd::*pfn_bWww)(CWnd*, UINT, UINT);
! 481: BOOL (AFX_MSG_CALL CWnd::*pfn_bHELPINFO)(HELPINFO*);
! 482: BOOL (AFX_MSG_CALL CWnd::*pfn_bWCDS)(CWnd*, COPYDATASTRUCT*);
! 483: HBRUSH (AFX_MSG_CALL CWnd::*pfn_hDWw)(CDC*, CWnd*, UINT);
! 484: HBRUSH (AFX_MSG_CALL CWnd::*pfn_hDw)(CDC*, UINT);
! 485: int (AFX_MSG_CALL CWnd::*pfn_iwWw)(UINT, CWnd*, UINT);
! 486: int (AFX_MSG_CALL CWnd::*pfn_iww)(UINT, UINT);
! 487: int (AFX_MSG_CALL CWnd::*pfn_iWww)(CWnd*, UINT, UINT);
! 488: int (AFX_MSG_CALL CWnd::*pfn_is)(LPTSTR);
! 489: LRESULT (AFX_MSG_CALL CWnd::*pfn_lwl)(WPARAM, LPARAM);
! 490: LRESULT (AFX_MSG_CALL CWnd::*pfn_lwwM)(UINT, UINT, CMenu*);
! 491: void (AFX_MSG_CALL CWnd::*pfn_vv)(void);
! 492:
! 493: void (AFX_MSG_CALL CWnd::*pfn_vw)(UINT);
! 494: void (AFX_MSG_CALL CWnd::*pfn_vww)(UINT, UINT);
! 495: void (AFX_MSG_CALL CWnd::*pfn_vvii)(int, int);
! 496: void (AFX_MSG_CALL CWnd::*pfn_vwww)(UINT, UINT, UINT);
! 497: void (AFX_MSG_CALL CWnd::*pfn_vwii)(UINT, int, int);
! 498: void (AFX_MSG_CALL CWnd::*pfn_vwl)(WPARAM, LPARAM);
! 499: void (AFX_MSG_CALL CWnd::*pfn_vbWW)(BOOL, CWnd*, CWnd*);
! 500: void (AFX_MSG_CALL CWnd::*pfn_vD)(CDC*);
! 501: void (AFX_MSG_CALL CWnd::*pfn_vM)(CMenu*);
! 502: void (AFX_MSG_CALL CWnd::*pfn_vMwb)(CMenu*, UINT, BOOL);
! 503:
! 504: void (AFX_MSG_CALL CWnd::*pfn_vW)(CWnd*);
! 505: void (AFX_MSG_CALL CWnd::*pfn_vWww)(CWnd*, UINT, UINT);
! 506: void (AFX_MSG_CALL CWnd::*pfn_vWp)(CWnd*, CPoint);
! 507: void (AFX_MSG_CALL CWnd::*pfn_vWh)(CWnd*, HANDLE);
! 508: void (AFX_MSG_CALL CWnd::*pfn_vwW)(UINT, CWnd*);
! 509: void (AFX_MSG_CALL CWnd::*pfn_vwWb)(UINT, CWnd*, BOOL);
! 510: void (AFX_MSG_CALL CWnd::*pfn_vwwW)(UINT, UINT, CWnd*);
! 511: void (AFX_MSG_CALL CWnd::*pfn_vwwx)(UINT, UINT);
! 512: void (AFX_MSG_CALL CWnd::*pfn_vs)(LPTSTR);
! 513: void (AFX_MSG_CALL CWnd::*pfn_vOWNER)(int, LPTSTR); // force return TRUE
! 514: int (AFX_MSG_CALL CWnd::*pfn_iis)(int, LPTSTR);
! 515: UINT (AFX_MSG_CALL CWnd::*pfn_wp)(CPoint);
! 516: UINT (AFX_MSG_CALL CWnd::*pfn_wv)(void);
! 517: void (AFX_MSG_CALL CWnd::*pfn_vPOS)(WINDOWPOS*);
! 518: void (AFX_MSG_CALL CWnd::*pfn_vCALC)(BOOL, NCCALCSIZE_PARAMS*);
! 519: void (AFX_MSG_CALL CWnd::*pfn_vwp)(UINT, CPoint);
! 520: void (AFX_MSG_CALL CWnd::*pfn_vwwh)(UINT, UINT, HANDLE);
! 521: BOOL (AFX_MSG_CALL CWnd::*pfn_bwsp)(UINT, short, CPoint);
! 522: void (AFX_MSG_CALL CWnd::*pfn_vws)(UINT, LPCTSTR);
! 523: };
! 524:
! 525: CHandleMap* PASCAL afxMapHWND(BOOL bCreate = FALSE);
! 526: CHandleMap* PASCAL afxMapHIMAGELIST(BOOL bCreate = FALSE);
! 527: CHandleMap* PASCAL afxMapHDC(BOOL bCreate = FALSE);
! 528: CHandleMap* PASCAL afxMapHGDIOBJ(BOOL bCreate = FALSE);
! 529: CHandleMap* PASCAL afxMapHMENU(BOOL bCreate = FALSE);
! 530:
! 531: /////////////////////////////////////////////////////////////////////////////
! 532: // Debugging/Tracing helpers
! 533:
! 534: #ifdef _DEBUG
! 535: void AFXAPI _AfxTraceMsg(LPCTSTR lpszPrefix, const MSG* pMsg);
! 536: BOOL AFXAPI _AfxCheckDialogTemplate(LPCTSTR lpszResource,
! 537: BOOL bInvisibleChild);
! 538: #endif
! 539:
! 540: /////////////////////////////////////////////////////////////////////////////
! 541: // byte-swapping helpers
! 542:
! 543: #ifdef _AFX_BYTESWAP
! 544:
! 545: struct _AFXWORD
! 546: {
! 547: BYTE WordBits[sizeof(WORD)];
! 548: };
! 549: struct _AFXDWORD
! 550: {
! 551: BYTE DwordBits[sizeof(DWORD)];
! 552: };
! 553:
! 554: struct _AFXFLOAT
! 555: {
! 556: BYTE FloatBits[sizeof(float)];
! 557: };
! 558: struct _AFXDOUBLE
! 559: {
! 560: BYTE DoubleBits[sizeof(double)];
! 561: };
! 562:
! 563: inline void _AfxByteSwap(WORD w, BYTE* pb)
! 564: {
! 565: _AFXWORD wAfx;
! 566: *(WORD*)&wAfx = w;
! 567:
! 568: ASSERT(sizeof(WORD) == 2);
! 569:
! 570: *pb++ = wAfx.WordBits[1];
! 571: *pb = wAfx.WordBits[0];
! 572: }
! 573:
! 574: inline void _AfxByteSwap(DWORD dw, BYTE* pb)
! 575: {
! 576: _AFXDWORD dwAfx;
! 577: *(DWORD*)&dwAfx = dw;
! 578:
! 579: ASSERT(sizeof(DWORD) == 4);
! 580:
! 581: *pb++ = dwAfx.DwordBits[3];
! 582: *pb++ = dwAfx.DwordBits[2];
! 583: *pb++ = dwAfx.DwordBits[1];
! 584: *pb = dwAfx.DwordBits[0];
! 585: }
! 586:
! 587: inline void _AfxByteSwap(float f, BYTE* pb)
! 588: {
! 589: _AFXFLOAT fAfx;
! 590: *(float*)&fAfx = f;
! 591:
! 592: ASSERT(sizeof(float) == 4);
! 593:
! 594: *pb++ = fAfx.FloatBits[3];
! 595: *pb++ = fAfx.FloatBits[2];
! 596: *pb++ = fAfx.FloatBits[1];
! 597: *pb = fAfx.FloatBits[0];
! 598: }
! 599:
! 600: inline void _AfxByteSwap(double d, BYTE* pb)
! 601: {
! 602: _AFXDOUBLE dAfx;
! 603: *(double*)&dAfx = d;
! 604:
! 605: ASSERT(sizeof(double) == 8);
! 606:
! 607: *pb++ = dAfx.DoubleBits[7];
! 608: *pb++ = dAfx.DoubleBits[6];
! 609: *pb++ = dAfx.DoubleBits[5];
! 610: *pb++ = dAfx.DoubleBits[4];
! 611: *pb++ = dAfx.DoubleBits[3];
! 612: *pb++ = dAfx.DoubleBits[2];
! 613: *pb++ = dAfx.DoubleBits[1];
! 614: *pb = dAfx.DoubleBits[0];
! 615: }
! 616: #endif //_AFX_BYTESWAP
! 617:
! 618: #undef AFX_DATA
! 619: #define AFX_DATA
! 620:
! 621: /////////////////////////////////////////////////////////////////////////////
E-mail: