⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stkdrv.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
字号:

#include "stdafx.h"
#include "STKDRV.h"

CSTKDRV::CSTKDRV()
{
	m_hSTKDrv = NULL;

	m_pfnStock_Init = NULL;
	m_pfnStock_Quit = NULL;
	m_pfnGetTotalNumber = NULL;
	m_pfnGetStockByNoEx = NULL;
	m_pfnGetStockByCodeEx = NULL;
	m_pfnSetupReceiver = NULL;
	m_pfnGetStockDrvInfo = NULL;

	m_pfnGetStockMin = NULL;
	m_pfnGetStockPRP = NULL;

	// 数畅
	m_pfnSCInit = NULL;
	m_pfnSCQuit = NULL;
	m_pfnSCGetInfo = NULL;
	m_pfnSCAskData = NULL;
	m_pfnSCStockInit = NULL;
}

CSTKDRV::~CSTKDRV()
{
}

BOOL CSTKDRV::LoadDriver(LPCTSTR lpszDrvPath)
{
	ASSERT(NULL != lpszDrvPath);
	CString	strLibrary = lpszDrvPath;
	if (strLibrary.GetLength() <= 0)
		return FALSE;

	m_hSTKDrv = LoadLibrary(strLibrary);
	if (!m_hSTKDrv) 
		return FALSE;

	m_pfnStock_Init = (int (WINAPI*)(HWND,UINT,int)) GetProcAddress(m_hSTKDrv,"Stock_Init");
	m_pfnStock_Quit = (int (WINAPI*)(HWND)) GetProcAddress(m_hSTKDrv,"Stock_Quit");
	m_pfnGetTotalNumber = (int (WINAPI*)())GetProcAddress(m_hSTKDrv,"GetTotalNumber");
	m_pfnGetStockByNoEx = (int (WINAPI*)(int,RCV_REPORT_STRUCTEx *))GetProcAddress(m_hSTKDrv,"GetStockByNoEx");
	m_pfnGetStockByCodeEx = (int (WINAPI*)(char *,int,RCV_REPORT_STRUCTEx *))GetProcAddress(m_hSTKDrv,"GetStockByCodeEx");
	m_pfnSetupReceiver = (int (WINAPI*)(BOOL))GetProcAddress(m_hSTKDrv,"SetupReceiver");
	m_pfnGetStockDrvInfo = (DWORD (WINAPI*)(int,void *))GetProcAddress(m_hSTKDrv,"GetStockDrvInfo");

	m_pfnGetStockMin = (int (WINAPI*)(char*, int))GetProcAddress(m_hSTKDrv, "GetStockMin");
	m_pfnGetStockPRP = (int (WINAPI*)(char*, int))GetProcAddress(m_hSTKDrv, "GetStockPRP");

	m_pfnSCInit = (BOOL (WINAPI*)(void*, int))GetProcAddress(m_hSTKDrv, "SCInit");
	m_pfnSCQuit = (void (WINAPI*)(void))GetProcAddress(m_hSTKDrv, "SCQuit");
	m_pfnSCGetInfo = (UINT (WINAPI*)(TSCInfo, void*, int*))GetProcAddress(m_hSTKDrv, "SCGetInfo");
	m_pfnSCAskData = (void (WINAPI*)(void*, int))GetProcAddress(m_hSTKDrv, "SCAskData");
	m_pfnSCStockInit = (BOOL (WINAPI*)(HWND, UINT, int))GetProcAddress(m_hSTKDrv, "SCStockInit");

	return TRUE;
}

void CSTKDRV::UnloadDriver()
{
	if (m_hSTKDrv)
	{
		FreeLibrary(m_hSTKDrv);
		m_hSTKDrv = NULL;

		m_pfnStock_Init = NULL;
		m_pfnStock_Quit = NULL;
		m_pfnGetTotalNumber = NULL;
		m_pfnGetStockByNoEx = NULL;
		m_pfnGetStockByCodeEx = NULL;
		m_pfnSetupReceiver = NULL;
		m_pfnGetStockDrvInfo = NULL;

		m_pfnGetStockMin = NULL;
		m_pfnGetStockPRP = NULL;

		// 数畅
		m_pfnSCInit = NULL;
		m_pfnSCQuit = NULL;
		m_pfnSCGetInfo = NULL;
		m_pfnSCAskData = NULL;
		m_pfnSCStockInit = NULL;
	}
}

int CSTKDRV::Stock_Init(HWND hWnd, UINT uMsg, int nWorkMode)
{
	if (!m_pfnStock_Init)
		return -1;

	 return((*m_pfnStock_Init)(hWnd, uMsg, nWorkMode));
}

int CSTKDRV::Stock_Quit(HWND hWnd)
{
	if (!m_pfnStock_Quit)
		return -1;

	return((*m_pfnStock_Quit)(hWnd));
}

int CSTKDRV::GetTotalNumber()
{
	if (!m_pfnGetTotalNumber)
		return 0;

	return((*m_pfnGetTotalNumber)());
}

int CSTKDRV::GetStockByNoEx(int nNo, RCV_REPORT_STRUCTEx* pBuf)
{
	if (!m_pfnGetStockByNoEx)
		return 0;

	return((*m_pfnGetStockByNoEx)(nNo, pBuf));
}

int CSTKDRV::GetStockByCodeEx(char* pszStockCode, int nMarket, RCV_REPORT_STRUCTEx* pBuf)
{
	if (!m_pfnGetStockByCodeEx)
		return 0;

	return((*m_pfnGetStockByCodeEx)(pszStockCode, nMarket, pBuf));
}

int CSTKDRV::SetupReceiver(BOOL bShowWindow)
{
	if (!m_pfnSetupReceiver)
		return -1;

	return((*m_pfnSetupReceiver)(bShowWindow));
}

DWORD CSTKDRV::GetStockDrvInfo(int nInfo, void* pBuf)
{
	if (!m_pfnGetStockDrvInfo) 
		return 0;

	return((*m_pfnGetStockDrvInfo)(nInfo, pBuf));
}

int CSTKDRV::GetStockMin(char* StockCode, int nMarket)
{
	if (!m_pfnGetStockMin)
		return 0;

	return ((*m_pfnGetStockMin)(StockCode, nMarket));
}

int CSTKDRV::GetStockPRP(char* StockCode, int nMarket)
{
	if (!m_pfnGetStockPRP)
		return 0;

	return ((*m_pfnGetStockPRP)(StockCode, nMarket));
}

BOOL CSTKDRV::SCInit(void* pInit, int nSize)
{
	if (m_pfnSCInit)
		return (*m_pfnSCInit)(pInit, nSize);

	return FALSE;
}

void CSTKDRV::SCQuit()
{
	if (m_pfnSCQuit)
		(*m_pfnSCQuit)();
}

UINT CSTKDRV::SCGetInfo(TSCInfo Info, void* pData, int* nSize)
{
	if (m_pfnSCGetInfo)
		return (*m_pfnSCGetInfo)(Info, pData, nSize);

	return 0;
}

void CSTKDRV::SCAskData(void* pAsk, int nSize)
{
	if (m_pfnSCAskData)
		(*m_pfnSCAskData)(pAsk, nSize);
}

BOOL CSTKDRV::SCStockInit(HWND hWnd, UINT Msg, int nWorkMode)
{
	if (!m_pfnSCStockInit)
		return FALSE;

	return ((*m_pfnSCStockInit)(hWnd, Msg, nWorkMode));
}

////////////////////////////////////////////////////////////////////////////////////////
// CNetSTKDRV

CNetSTKDRV::CNetSTKDRV()
{
	m_pfnStock_Init_Nodialog=	NULL;
	m_pfnIsEngineWorking	=	NULL;
	m_pfnSetAutoReport		=	NULL;
	m_pfnRequestStockData	=	NULL;
}

CNetSTKDRV::~CNetSTKDRV()
{
}

BOOL CNetSTKDRV::LoadDriver(LPCTSTR lpszDrvPath)
{
	if (CSTKDRV::LoadDriver(lpszDrvPath))
	{
		m_pfnStock_Init_Nodialog = \
				(int (WINAPI *)(HWND,UINT,int,const char*,UINT,const char*,const char*)) GetProcAddress(m_hSTKDrv,"Stock_Init_Nodialog");

		m_pfnIsEngineWorking = \
				(int (WINAPI *)())GetProcAddress(m_hSTKDrv,"IsEngineWorking");
		m_pfnSetAutoReport = \
				(int (WINAPI *)(int))GetProcAddress(m_hSTKDrv,"SetAutoReport");
		m_pfnRequestStockData = \
				(int (WINAPI *)(int, STOCK_STRUCTEx *, int, int, int))GetProcAddress(m_hSTKDrv,"RequestStockData");
		return TRUE;
	}

	return FALSE;
}

void CNetSTKDRV::UnloadDriver()
{
	CSTKDRV::UnloadDriver();

	m_pfnStock_Init_Nodialog=	NULL;
	m_pfnIsEngineWorking	=	NULL;
	m_pfnSetAutoReport		=	NULL;
	m_pfnRequestStockData	=	NULL;
}

int CNetSTKDRV::Stock_Init_Nodialog(HWND hWnd, UINT uMsg, int nWorkMode,
				const char *szAddress,UINT nPort,const char *szUser,const char *szPasswd)
{
	if (!m_pfnStock_Init_Nodialog)
		return -1;

	 return((*m_pfnStock_Init_Nodialog)(hWnd,uMsg,nWorkMode,szAddress,nPort,szUser,szPasswd));
}

int CNetSTKDRV::IsEngineWorking()
{
	if (!m_pfnIsEngineWorking)
		return FALSE;

	return((*m_pfnIsEngineWorking)());
}

int CNetSTKDRV::SetAutoReport(int bAutoReport)
{
	if (!m_pfnSetAutoReport)
		return -1;

	return((*m_pfnSetAutoReport)(bAutoReport));
}

int CNetSTKDRV::RequestStockData(int nDataType, STOCK_STRUCTEx * pStocks, int nSize, int nKType, int nDataCount)
{
	if (!m_pfnRequestStockData)
		return 0;

	return((*m_pfnRequestStockData)(nDataType,pStocks,nSize,nKType,nDataCount));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -