This commit is contained in:
101
CPRobot.cpp
101
CPRobot.cpp
@@ -10,6 +10,42 @@
|
|||||||
#endif
|
#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
|
// CCPRobotApp
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CCPRobotApp, CWinApp)
|
BEGIN_MESSAGE_MAP(CCPRobotApp, CWinApp)
|
||||||
@@ -32,11 +68,76 @@ CCPRobotApp theApp;
|
|||||||
|
|
||||||
|
|
||||||
// CCPRobotApp 초기화
|
// 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()
|
BOOL CCPRobotApp::InitInstance()
|
||||||
{
|
{
|
||||||
CWinApp::InitInstance();
|
CWinApp::InitInstance();
|
||||||
|
|
||||||
|
if (!InitATL())
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
AfxEnableControlContainer();
|
AfxEnableControlContainer();
|
||||||
|
|
||||||
// 표준 초기화
|
// 표준 초기화
|
||||||
|
|||||||
17
CPRobot.h
17
CPRobot.h
@@ -8,6 +8,17 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "resource.h" // 주 기호입니다.
|
#include "resource.h" // 주 기호입니다.
|
||||||
|
#include <atlbase.h>
|
||||||
|
|
||||||
|
|
||||||
|
class CVCOptModule : public CComModule
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LONG Unlock();
|
||||||
|
LONG Lock();
|
||||||
|
LPCTSTR FindOneOf(LPCTSTR p1, LPCTSTR p2);
|
||||||
|
DWORD dwThreadID;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// CCPRobotApp:
|
// CCPRobotApp:
|
||||||
@@ -20,12 +31,16 @@ public:
|
|||||||
CCPRobotApp();
|
CCPRobotApp();
|
||||||
|
|
||||||
// 재정의입니다.
|
// 재정의입니다.
|
||||||
public:
|
public:
|
||||||
virtual BOOL InitInstance();
|
virtual BOOL InitInstance();
|
||||||
|
|
||||||
// 구현입니다.
|
// 구현입니다.
|
||||||
|
|
||||||
DECLARE_MESSAGE_MAP()
|
DECLARE_MESSAGE_MAP()
|
||||||
|
|
||||||
|
private:
|
||||||
|
BOOL m_bATLInited;
|
||||||
|
BOOL InitATL();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern CCPRobotApp theApp;
|
extern CCPRobotApp theApp;
|
||||||
BIN
CPRobotDlg.cpp
BIN
CPRobotDlg.cpp
Binary file not shown.
@@ -58,14 +58,7 @@ private:
|
|||||||
CListBox m_ResultList;
|
CListBox m_ResultList;
|
||||||
|
|
||||||
CDataMgr* m_pDataMgr;
|
CDataMgr* m_pDataMgr;
|
||||||
ICpOptionCodePtr m_pOpCode;
|
std::vector<std::string> m_OpCodeList;
|
||||||
ISysDibPtr m_pOpCurOnly;
|
|
||||||
ISysDibPtr m_pOpJpBid;
|
ISysDibPtr m_pOpJpBid;
|
||||||
CEventHandler m_EventHandler;
|
CEventHandler m_EventHandler;
|
||||||
|
|
||||||
std::vector<OPTION_DATA> m_PutDataList;
|
|
||||||
//ISysDibPtr m_pOpMst;
|
|
||||||
|
|
||||||
CTrader* m_pTrader;
|
|
||||||
std::vector<COptionEventHandler*> m_HandlerList;
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,7 +13,13 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class CEventHandler : public IDispEventImpl<0, CEventHandler, &DIID__ISysDibEvents, &LIBID_CPSYSDIBLib, 1, 0>
|
class CEventHandler : public IDispEventImpl<
|
||||||
|
0,
|
||||||
|
CEventHandler,
|
||||||
|
&DIID__ISysDibEvents,
|
||||||
|
&LIBID_CPSYSDIBLib,
|
||||||
|
1,
|
||||||
|
0>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void SetIEventHandler(IEventHandler* pIEventHandler);
|
void SetIEventHandler(IEventHandler* pIEventHandler);
|
||||||
@@ -21,7 +27,7 @@ public:
|
|||||||
void __stdcall Received();
|
void __stdcall Received();
|
||||||
|
|
||||||
BEGIN_SINK_MAP(CEventHandler)
|
BEGIN_SINK_MAP(CEventHandler)
|
||||||
SINK_ENTRY_EX(0, DIID__ISysDibEvents, 1, Received)
|
SINK_ENTRY_EX(0, DIID__ISysDibEvents, 0x01, Received)
|
||||||
END_SINK_MAP()
|
END_SINK_MAP()
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
Reference in New Issue
Block a user