This commit is contained in:
2013-07-20 23:23:09 +00:00
parent 51d06cf03c
commit ce1d16d6b6

112
HookMsg/StockData.h Normal file
View File

@@ -0,0 +1,112 @@
// StockData.h: interface for the CStockData class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_STOCKDATA_H__144B0F70_A819_4CDD_BF01_CE80429DC738__INCLUDED_)
#define AFX_STOCKDATA_H__144B0F70_A819_4CDD_BF01_CE80429DC738__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define MAX_DATA 999999
#pragma pack(push, 1)
typedef struct _tag_STOCKDATA
{
char szCode[8]; // 종목코드. A012345<NULL>
char szName[31]; // 종목명.
long lCode; // long type 종목코드.
BYTE cbStockType; // 종목구분(1-장내, 5-코스닥, 6-제3시장).
long lStockPrice; // 현재가.
bool bHeigest; // 상한.
bool bLowest; // 하한.
bool bSpecialCodeByPublish; // 공시에 대한 특별종목 설정여부.
bool bRejectedFromRegistery; // 거부종목 여부 1 : 레지스트리 이용.
bool bRejectedFromFile; // 거부종목 여부 2 : 거부_전장거래부진종목코드.txt 파일.
bool bRepeated; // 중복종목 여부.
bool bManualInputCode; // 수동종목 여부.
ULONG lTradeCount; // 전일 거래량.
ULONG lTradeMoney; // 전일 거래대금.(단위: 천원)
} STOCKDATA, *LPSTOCKDATA; // 종목코드가 인덱스로 작용함.
#pragma pack(pop)
class CHookMsgDlg;
class CStockData
{
friend UINT StockDataThread( LPVOID arg );
public:
CStockData( CHookMsgDlg * pParent );
virtual ~CStockData();
void Initialize();
BOOL Open();
BOOL Start();
BOOL Stop(bool bForce=false);
HANDLE Close(bool bWait=false);
BOOL StockVerify( CString &strCode, long & _Price, BYTE & _Type );
BOOL StockVerify( long nCode, long & _Price, BYTE & _Type );
long ReCalcPrice( long _Price, long nLevel );
/////////////////////////////////////////////////////////////////////
BOOL ReadFileSpecialCodeByPublish();
BOOL ReadFileExclusionCodeFromFile();
void InitExclusionCodeFromRegistery();
BOOL ReadFileManualInputCodeFromFile();
void ListBoxLoad_RepeatedCode( CListBox *pListBox );
void ListBoxSave_RepeatedCode( CListBox *pListBox );
void AddRepeatedCode( CString strCode );
void ListBoxLoad_ExclusionCode( CListBox *pListBox );
void ListBoxSave_ExclusionCode( CListBox *pListBox );
void ListBoxLoad_SpecialCode( CListBox *pListBox );
void ListBoxSave_SpecialCode( CListBox *pListBox );
void ListBoxLoad_ManualInputCode( CListBox *pListBox );
void ListBoxSave_ManualInputCode( CListBox *pListBox );
STOCKDATA * GetStockData( long nCode )
{
STOCKDATA * pData = (STOCKDATA*)&m_pData[ m_pDataPos[nCode] ];
if( pData->lCode != nCode )
return NULL;
return pData;
}
private:
void Running();
BOOL Initialize_RepetitionCode( CString strFile );
private:
CHookMsgDlg * m_pParent;
long * m_pDataPos; // 실제 데이터의 배열인덱스.
STOCKDATA * m_pData; // 실제 데이터.
long m_nMaxData; // 실제 데이터배열의 길이.
std::ofstream * m_pAddRepetitionCode;
IDibPtr m_objStockMstm;
HANDLE m_hWaitEventStockData; // Thread Wait check event.
BOOL m_bRunning;
BOOL m_bThreadRun;
public:
BOOL m_bRunningSkip;
HANDLE m_hCloseEvent; // Thread close check event.
};
#endif // !defined(AFX_STOCKDATA_H__144B0F70_A819_4CDD_BF01_CE80429DC738__INCLUDED_)