113 lines
3.4 KiB
C++
113 lines
3.4 KiB
C++
// 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_)
|
|
|