This commit is contained in:
101
CPRobot.cpp
101
CPRobot.cpp
@@ -10,6 +10,42 @@
|
||||
#endif
|
||||
|
||||
|
||||
#define IDR_VCOPT 103
|
||||
|
||||
CVCOptModule _Module;
|
||||
|
||||
BEGIN_OBJECT_MAP(ObjectMap)
|
||||
END_OBJECT_MAP()
|
||||
|
||||
LONG CVCOptModule::Unlock()
|
||||
{
|
||||
AfxOleUnlockApp();
|
||||
return 0;
|
||||
}
|
||||
|
||||
LONG CVCOptModule::Lock()
|
||||
{
|
||||
AfxOleLockApp();
|
||||
return 1;
|
||||
}
|
||||
LPCTSTR CVCOptModule::FindOneOf(LPCTSTR p1, LPCTSTR p2)
|
||||
{
|
||||
while (*p1 != NULL)
|
||||
{
|
||||
LPCTSTR p = p2;
|
||||
while (*p != NULL)
|
||||
{
|
||||
if (*p1 == *p)
|
||||
return CharNext(p1);
|
||||
p = CharNext(p);
|
||||
}
|
||||
p1++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// CCPRobotApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CCPRobotApp, CWinApp)
|
||||
@@ -32,11 +68,76 @@ CCPRobotApp theApp;
|
||||
|
||||
|
||||
// CCPRobotApp 초기화
|
||||
BOOL CCPRobotApp::InitATL()
|
||||
{
|
||||
m_bATLInited = TRUE;
|
||||
|
||||
#if _WIN32_WINNT >= 0x0400
|
||||
HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
||||
#else
|
||||
HRESULT hRes = CoInitialize(NULL);
|
||||
#endif
|
||||
|
||||
if (FAILED(hRes))
|
||||
{
|
||||
m_bATLInited = FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
_Module.Init(ObjectMap, AfxGetInstanceHandle());
|
||||
_Module.dwThreadID = GetCurrentThreadId();
|
||||
|
||||
LPTSTR lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
|
||||
TCHAR szTokens[] = _T("-/");
|
||||
|
||||
BOOL bRun = TRUE;
|
||||
LPCTSTR lpszToken = _Module.FindOneOf(lpCmdLine, szTokens);
|
||||
while (lpszToken != NULL)
|
||||
{
|
||||
if (lstrcmpi(lpszToken, _T("UnregServer"))==0)
|
||||
{
|
||||
_Module.UpdateRegistryFromResource(IDR_VCOPT, FALSE);
|
||||
_Module.UnregisterServer(TRUE); //TRUE means typelib is unreg'd
|
||||
bRun = FALSE;
|
||||
break;
|
||||
}
|
||||
if (lstrcmpi(lpszToken, _T("RegServer"))==0)
|
||||
{
|
||||
_Module.UpdateRegistryFromResource(IDR_VCOPT, TRUE);
|
||||
_Module.RegisterServer(TRUE);
|
||||
bRun = FALSE;
|
||||
break;
|
||||
}
|
||||
lpszToken = _Module.FindOneOf(lpszToken, szTokens);
|
||||
}
|
||||
|
||||
if (!bRun)
|
||||
{
|
||||
m_bATLInited = FALSE;
|
||||
_Module.Term();
|
||||
CoUninitialize();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,
|
||||
REGCLS_MULTIPLEUSE);
|
||||
if (FAILED(hRes))
|
||||
{
|
||||
m_bATLInited = FALSE;
|
||||
CoUninitialize();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CCPRobotApp::InitInstance()
|
||||
{
|
||||
CWinApp::InitInstance();
|
||||
|
||||
if (!InitATL())
|
||||
return FALSE;
|
||||
|
||||
AfxEnableControlContainer();
|
||||
|
||||
// 표준 초기화
|
||||
|
||||
Reference in New Issue
Block a user