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

📄 stockdrv.cpp

📁 股票数据接口P2PStockdrv用于分析家股票行情软件对接试验。
💻 CPP
字号:
// Stockdrv.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"

#include < windows.h >
#include <time.h>
#include "STOCKDRV.H"
#include "Stock_drv.h"

static HINSTANCE hInstance,hInst_Stock_Drv;
static HWND hWndAfxWnd42s, hWndFxj, hWndP2PStockdrv;
static WNDPROC FxjWinProc;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
			StockDrv_Dll_Load();
			break;
		case DLL_THREAD_ATTACH:
			break;
		case DLL_THREAD_DETACH:
			break;
		case DLL_PROCESS_DETACH:
			FreeLibrary(hInst_Stock_Drv);		 
			break;
    }
    return TRUE;
}

bool StockDrv_Dll_Load()
{
hInst_Stock_Drv = LoadLibraryEx("Stock_Drv.dll",NULL,0);
StockInit_= (_StockInit)GetProcAddress(hInst_Stock_Drv,"StockInit");
SetParam_= (_SetParam)GetProcAddress(hInst_Stock_Drv,"SetParam");
GetTradeData_= (_GetTradeData)GetProcAddress(hInst_Stock_Drv,"GetTradeData");
SetCodeTable_= (_SetCodeTable)GetProcAddress(hInst_Stock_Drv,"SetCodeTable");
SCAskData_= (_SCAskData)GetProcAddress(hInst_Stock_Drv,"SCAskData");
SCStockInit_= (_SCStockInit)GetProcAddress(hInst_Stock_Drv,"SCStockInit");
GetStockByCode_= (_GetStockByCode)GetProcAddress(hInst_Stock_Drv,"GetStockByCode");
GetStockByCodeEx_= (_GetStockByCodeEx)GetProcAddress(hInst_Stock_Drv,"GetStockByCodeEx");
GetStockByNo_= (_GetStockByNo)GetProcAddress(hInst_Stock_Drv,"GetStockByNo");
GetStockByNoEx_= (_GetStockByNoEx)GetProcAddress(hInst_Stock_Drv,"GetStockByNoEx");
GetTotalNumber_= (_GetTotalNumber)GetProcAddress(hInst_Stock_Drv,"GetTotalNumber");
ReInitStockInfo_= (_ReInitStockInfo)GetProcAddress(hInst_Stock_Drv,"ReInitStockInfo");
GetStockDrvInfo_= (_GetStockDrvInfo)GetProcAddress(hInst_Stock_Drv,"GetStockDrvInfo");
SetupReceiver_= (_SetupReceiver)GetProcAddress(hInst_Stock_Drv,"SetupReceiver");
Stock_Quit_= (_Stock_Quit)GetProcAddress(hInst_Stock_Drv,"Stock_Quit");
Stock_Init_= (_Stock_Init)GetProcAddress(hInst_Stock_Drv,"Stock_Init");

Fxj_P2PStockdrv_Init();

return true;
};



int WINAPI StockInit(char xxx[1024])
{
	int r;   
	r=StockInit_( xxx);
	return r;
};

int WINAPI SetParam(char xxx[1024])
{
 	int r;   
	r=SetParam_( xxx);
	return r;
};

int WINAPI GetTradeData(char xxx[1024])
{
 	int r;   
	r=GetTradeData_( xxx);
	return r;
};

int WINAPI SetCodeTable(char xxx[1024])
{
 	int r;   
	r=SetCodeTable_( xxx);
	return r;
};

//static bool P2PInit=true;//?
void WINAPI SCAskData(void *pAsk, int nSize)
{
	if (IsWindow(hWndP2PStockdrv))
	{
/*		if (P2PInit)//?
		{
			SendMessage(hWndP2PStockdrv,1085,(int)hWndAfxWnd42s,(long)1);
			SendMessage(hWndP2PStockdrv,1084,(int)hWndAfxWnd42s,(long)4);

			SendMessage(hWndP2PStockdrv,1085,(int)1,(long)hWndAfxWnd42s);
			SendMessage(hWndP2PStockdrv,1084,(int)4,(long)hWndAfxWnd42s);

			P2PInit=false;
		}
*/

		SendMessage(hWndP2PStockdrv,0x000080C8,nSize,(long)pAsk);
		SendMessage(hWndP2PStockdrv,0x0000110B,0x3E7,(long)12345678);//?
		SendMessage(hWndP2PStockdrv,0x00008120,1,(long)0x200);//?

//		SendMessage(hWndP2PStockdrv,0x000080BC,nSize,(long)0x000080BC);//速达2.18
	}

	SCAskData_(pAsk,  nSize);
 	return;
};

int WINAPI SCStockInit(int SoftId,HWND hWnd,UINT Msg)
{
	SetWindowLong( hWndAfxWnd42s,GWL_WNDPROC,(long)AfxWnd42sWinProc );
    ShowWindow(hWndAfxWnd42s,SW_HIDE);
    UpdateWindow(hWndAfxWnd42s);

	int r;   
	r=SCStockInit_( SoftId, hWnd, Msg);// SCStockInit_=7452( SoftId=1, hWnd=, Msg=1085)
	return r;
};

int WINAPI ReInitStockInfo(char xxx[1024])
{
 	int r;   
	r=ReInitStockInfo_( xxx);
	return r;
};

int WINAPI GetStockByCode(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf)
{
 	int r;   
	r=GetStockByCode_( pszStockCode, nMarket, pBuf);
	return r;
};

int WINAPI GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf)
{
 	int r;   
	r=GetStockByCodeEx_( pszStockCode, nMarket, pBuf);
	return r;
};

int WINAPI GetStockByNo(int nNo,RCV_REPORT_STRUCTEx * pBuf)
{
 	int r;   
	r=GetStockByNo_( nNo, pBuf);
	return r;
};

int WINAPI GetStockByNoEx(int nNo,RCV_REPORT_STRUCTEx * pBuf)
{
 	int r;   
	r=GetStockByNoEx_( nNo, pBuf);
	return r;
};

int WINAPI GetTotalNumber()
{
 	int r;   
	r=GetTotalNumber_();
	return r;
};

DWORD WINAPI GetStockDrvInfo(int nInfo,void * pBuf)
{
	int r;   
	r=GetStockDrvInfo_( nInfo, pBuf);
	return r;
};

int WINAPI SetupReceiver(BOOL bSetup)
{
 	int r;   
	r=SetupReceiver_( bSetup);
	return r;
};

int WINAPI Stock_Quit(HWND hWnd)
{
	int r;   
	r=Stock_Quit_( hWnd);
	return r;
};

int WINAPI Stock_Init(HWND hWnd,UINT Msg,int nWorkMode)
{
 	int r;   
	r=Stock_Init_( hWnd, Msg, nWorkMode);// Stock_Init_=1( hWnd=, Msg=1084, nWorkMode=4)
	return r;
};

LRESULT WINAPI AfxWnd42sWinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
	if ( !IsWindow(hWndP2PStockdrv) && (Msg==0x437 || Msg==0x438) )
	{
		hWndP2PStockdrv = FindWindow(NULL,"P2PSocketdrv1.0");
	}

RCV_DATA *pRCV_DATA;
typedef struct _string
{
	char str[1024];
}string;
string *sp;

	switch(Msg)
	{
	case 0x437:
pRCV_DATA=(RCV_DATA*)lParam;
		return SendMessage(hWndFxj,0x43C,wParam,lParam);
	case 0x438:
sp=(string*)lParam;
		return SendMessage(hWndFxj,0x43D,wParam,lParam);
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	default:
//		CallWindowProc(FxjWinProc,hWnd,Msg,wParam,lParam);
		SendMessage(hWndFxj,Msg,wParam,lParam);
		return DefWindowProc(hWnd,Msg,wParam,lParam);
	}
}

void Fxj_P2PStockdrv_Init()
{
	hWndFxj=GetParent(GetActiveWindow());//分析家窗口
	hInstance=(HINSTANCE)GetWindowLong(hWndFxj,GWL_HINSTANCE);
	SetWindowText(hWndFxj,"大智慧Level-2 分析家");
	FxjWinProc=(WNDPROC)GetWindowLong( hWndFxj,GWL_WNDPROC );

	WNDCLASSEX WndCls;
	WndCls.cbSize=sizeof(WNDCLASSEX);
    WndCls.style=CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ;
    WndCls.lpfnWndProc=AfxWnd42sWinProc;
    WndCls.cbClsExtra=0;
    WndCls.cbWndExtra=0;
    WndCls.hInstance=hInstance;
    WndCls.hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_QUESTION));    //IDI_QUESTION
    WndCls.hCursor=LoadCursor(NULL,MAKEINTRESOURCE(IDC_ARROW));    //MAKEINTRESOURCE
    WndCls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);        //GetStockObject
    WndCls.lpszMenuName=NULL;
    WndCls.lpszClassName="AfxWnd42s";
    //WndCls.hIconSm=?;

	RegisterClassEx(&WndCls);

	hWndAfxWnd42s=CreateWindowEx( 
						WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR,
						"AfxWnd42s",
						"",
						WS_CHILDWINDOW | WS_OVERLAPPED,
						0,0,0,0,
						hWndFxj,
						NULL,
						hInstance,
						NULL);

    if(hWndAfxWnd42s == NULL)
    {
        MessageBox(NULL,"There's an Error","Error Title",MB_ICONEXCLAMATION|MB_OK);
        return ;
    }
    ShowWindow(hWndAfxWnd42s,SW_HIDE);
    UpdateWindow(hWndAfxWnd42s);
	return ;
}

⌨️ 快捷键说明

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