home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
atl
/
labrador
/
labrador.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-03-26
|
2KB
|
82 lines
// Labrador.cpp : Implementation of EXE registration.
//
// This is a part of the Active Template Library.
// Copyright (C) 1996-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Active Template Library Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Active Template Library product.
#include "prelab.h"
#include "labres.h"
#include "initguid.h"
#include "Labrador.h"
#include "LabObj.h"
#define IID_DEFINED
#include "Labrador_i.c"
CMyModule _Module;
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_Labrador, CLabrador)
END_OBJECT_MAP()
#ifdef _WINDLL
#error This project does not support DLL, only EXE targets
#endif
/////////////////////////////////////////////////////////////////////////////
// EXE Entry Point
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/,
LPTSTR lpCmdLine, int /*nShowCmd*/)
{
HRESULT hRes = CoInitialize(NULL);
// If you are running on NT 4.0 or higher you can use the following call
// instead to make the EXE free threaded.
// This means that calls come in on a random RPC thread
// HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);
ATLASSERT(SUCCEEDED(hRes));
_Module.Init(ObjectMap, hInstance);
// have to remember the hread ID to post a WM_QUIT to it to shut down
// see the implementation of CMyModule::Unlock() for details
_Module.dwThreadID = GetCurrentThreadId();
// see if we have to do anything with the registry
TCHAR szTokens[] = _T("-/");
LPTSTR lpszToken = _tcstok(lpCmdLine, szTokens);
while (lpszToken != NULL)
{
if (_tcsicmp(lpszToken, _T("UnregServer"))==0)
return _Module.UnregisterServer();
else if (_tcsicmp(lpszToken, _T("RegServer"))==0)
{
// passing FALSE because we did not link the typelib
// into the EXE itself
return _Module.RegisterServer(FALSE);
}
lpszToken = _tcstok(NULL, szTokens);
}
// We are an EXE, just register all the class factories at startup
hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE);
ATLASSERT(SUCCEEDED(hRes));
// wait until we get a WM_QUIT
MSG msg;
while (GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);
// unregister all the class factories
_Module.RevokeClassObjects();
CoUninitialize();
return 0;
}