home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / common / msdev98 / template / atl / aatlproj.cpp < prev    next >
Encoding:
INI File  |  1998-06-16  |  3.2 KB  |  166 lines

  1. [!if(InsertAfterApp)]
  2. [!crlf]
  3. C[!ProjectNameSafe]Module _Module;
  4. [!crlf]
  5. BEGIN_OBJECT_MAP(ObjectMap)
  6. END_OBJECT_MAP()
  7. [!crlf]
  8. LONG C[!ProjectNameSafe]Module::Unlock()
  9. {
  10.     AfxOleUnlockApp();
  11.     return 0;
  12. }
  13. [!crlf]
  14. LONG C[!ProjectNameSafe]Module::Lock()
  15. {
  16.     AfxOleLockApp();
  17.     return 1;
  18. }
  19. [!if!=(MFCOLE, "1")]
  20. LPCTSTR C[!ProjectNameSafe]Module::FindOneOf(LPCTSTR p1, LPCTSTR p2)
  21. {
  22.     while (*p1 != NULL)
  23.     {
  24.         LPCTSTR p = p2;
  25.         while (*p != NULL)
  26.         {
  27.             if (*p1 == *p)
  28.                 return CharNext(p1);
  29.             p = CharNext(p);
  30.         }
  31.         p1++;
  32.     }
  33.     return NULL;
  34. }
  35. [!endif]
  36. [!crlf]
  37. [!endif]
  38. [!if=(InsertInInitInstance, "1")]
  39.     if (!InitATL())
  40.         return FALSE;
  41. [!endif]
  42. [!if(INITATL)]
  43.     [!ATLINITED] = TRUE;
  44. [!crlf]
  45. [!if=(MFCOLE, "0")]
  46. #if _WIN32_WINNT >= 0x0400
  47.     HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);
  48. #else
  49.     HRESULT hRes = CoInitialize(NULL);
  50. #endif
  51.  
  52. [!crlf]
  53.     if (FAILED(hRes))
  54.     {
  55.         [!ATLINITED] = FALSE;
  56.         return FALSE;
  57.     }
  58. [!crlf]
  59. [!endif]
  60.     _Module.Init(ObjectMap, AfxGetInstanceHandle());
  61.     _Module.dwThreadID = GetCurrentThreadId();
  62. [!crlf]
  63. [!if=(MFCOLE, "0")]
  64.     LPTSTR lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
  65.     TCHAR szTokens[] = _T("-/");
  66. [!crlf]
  67.     BOOL bRun = TRUE;
  68.     LPCTSTR lpszToken = _Module.FindOneOf(lpCmdLine, szTokens);
  69.     while (lpszToken != NULL)
  70.     {
  71.         if (lstrcmpi(lpszToken, _T("UnregServer"))==0)
  72.         {
  73.             _Module.UpdateRegistryFromResource([!IDR_REGISTRYID], FALSE);
  74.             _Module.UnregisterServer(TRUE); //TRUE means typelib is unreg'd
  75.             bRun = FALSE;
  76.             break;
  77.         }
  78.         if (lstrcmpi(lpszToken, _T("RegServer"))==0)
  79.         {
  80.             _Module.UpdateRegistryFromResource([!IDR_REGISTRYID], TRUE);
  81.             _Module.RegisterServer(TRUE);
  82.             bRun = FALSE;
  83.             break;
  84.         }
  85.         lpszToken = _Module.FindOneOf(lpszToken, szTokens);
  86.     }
  87. [!crlf]
  88.     if (!bRun)
  89.     {
  90.         [!ATLINITED] = FALSE;
  91.         _Module.Term();
  92.         CoUninitialize();
  93.         return FALSE;
  94.     }
  95. [!crlf]
  96.     hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, 
  97.         REGCLS_MULTIPLEUSE);
  98.     if (FAILED(hRes))
  99.     {
  100.         [!ATLINITED] = FALSE;
  101.         CoUninitialize();
  102.         return FALSE;
  103.     }    
  104. [!crlf]
  105. [!endif]
  106.     return TRUE;
  107. [!endif]
  108. [!if(InsertAfterParseCommand)]
  109. [!crlf]
  110.     if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated)
  111.     {
  112.         return TRUE;
  113.     }
  114. [!crlf]
  115. [!endif]
  116. [!if(InsertAfterAfxEnableControlContainer)]
  117. [!crlf]
  118.     CCommandLineInfo cmdInfo;
  119.     ParseCommandLine(cmdInfo);
  120. [!crlf]
  121.     if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated)
  122.     {
  123.         return TRUE;
  124.     }
  125. [!crlf]
  126. [!endif]
  127. [!if=(InsertIntoExitInstance, "1")]
  128.     if ([!ATLINITED])
  129.     {
  130.         _Module.RevokeClassObjects();
  131.         _Module.Term();
  132.     [!if=(MFCOLE, "0")]
  133.         CoUninitialize();
  134. [!endif]
  135.     }
  136. [!crlf]
  137. [!endif]
  138. [!if=(AddExitInstance, "1")]
  139.     if ([!ATLINITED])
  140.     {
  141.         _Module.RevokeClassObjects();
  142.         _Module.Term();
  143. [!if=(MFCOLE, "0")]
  144.         CoUninitialize();
  145. [!endif]
  146.     }
  147. [!crlf]
  148.     return CWinApp::ExitInstance();
  149. [!endif]
  150. [!if=(REGSVR, "1")]
  151. [!crlf]
  152.     _Module.UpdateRegistryFromResource([!IDR_REGISTRYID], TRUE);
  153.     _Module.RegisterServer(TRUE);
  154. [!endif]
  155. [!if=(REGCLASSOBJ, "1")]
  156.     _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, 
  157.         REGCLS_MULTIPLEUSE);
  158. [!endif]
  159. [!if=(IFOLE, "1")]
  160. [!crlf]
  161.     if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated)
  162.     {
  163.         return TRUE;
  164.     }
  165. [!endif]
  166.