home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / atl / mfcatl / premfcat.h < prev   
C/C++ Source or Header  |  1998-03-26  |  2KB  |  68 lines

  1. // premfcat.h : include file for standard system include files,
  2. //  or project specific include files that are used frequently, but
  3. //      are changed infrequently
  4. //
  5. // This is a part of the Active Template Library.
  6. // Copyright (C) 1996-1998 Microsoft Corporation
  7. // All rights reserved.
  8. //
  9. // This source code is only intended as a supplement to the
  10. // Active Template Library Reference and related
  11. // electronic documentation provided with the library.
  12. // See these sources for detailed information regarding the
  13. // Active Template Library product.
  14.  
  15. #define VC_EXTRALEAN        // Exclude rarely-used stuff from Windows headers
  16.  
  17. #include <afxwin.h>         // MFC core and standard components
  18. #include <afxext.h>         // MFC extensions
  19. #include <afxdisp.h>        // MFC OLE automation classes
  20. #ifndef _AFX_NO_AFXCMN_SUPPORT
  21. #include <afxcmn.h>         // MFC support for Windows Common Controls
  22. #endif // _AFX_NO_AFXCMN_SUPPORT
  23.  
  24. #include <atlbase.h>
  25.  
  26. // We can implement the MFC/ATL lock count interaction in two different ways
  27. // (you may comment/uncomment the one you want to try)
  28.  
  29. // ATL can blindly delegate all the ATL Lock()/Unlock() calls to MFC
  30. /*
  31. class CAtlGlobalModule : public CComModule
  32. {
  33. public:
  34.     LONG Lock()
  35.     {
  36.         AfxOleLockApp();
  37.         return 0;
  38.     }
  39.     LONG Unlock()
  40.     {
  41.         AfxOleUnlockApp();
  42.         return 0;
  43.     }
  44. };
  45. */
  46. // ATL can increment MFC's lock count the first time and decrement MFC's lock
  47. // count when its lock count reaches zero.
  48. class CAtlGlobalModule : public CComModule
  49. {
  50. public:
  51.     LONG Lock()
  52.     {
  53.         if (GetLockCount()==0)
  54.             AfxOleLockApp();
  55.         return CComModule::Lock();
  56.     }
  57.     LONG Unlock()
  58.     {
  59.         LONG l = CComModule::Unlock();
  60.         if (GetLockCount() == 0)
  61.             AfxOleUnlockApp();
  62.         return l;
  63.     }
  64. };
  65.  
  66. extern CAtlGlobalModule _Module;
  67. #include <atlcom.h>
  68.