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

📄 lithq.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
字号:
#include <windows.h>#include <stdio.h>#include <string.h>#include "resource.h"#include "global.h"#include "hq.h"#include "hq_cl.h"#include "lithq.h"#include "toolbar.h"#define LITHQ_CLASS	"CLITHQ"extern HINSTANCE ghInstance;extern HWND ghWndMain, ghWndLitHq;extern BOOL ErrMsg(HWND, LPSTR);extern BOOL IsZsRec(int jys, int rec_num);BOOL RegisterLitHq(void){	WNDCLASS wc;		memset(&wc, 0, sizeof(wc));		wc.lpfnWndProc =LitHqWndProc;	wc.lpszClassName =LITHQ_CLASS;	wc.hbrBackground =GetStockObject(BLACK_BRUSH);	wc.hInstance = ghInstance;	wc.hCursor = LoadCursor(NULL, IDC_ARROW);        	if(!RegisterClass(&wc)) return FALSE;		return TRUE;}BOOL CreateWndLitHq(HWND hWnd){                          	int x ;	HWND hwnd;    int x0,y0,x1,y1;	TEXTMETRIC tm;	HDC hDC;	RECT rc;				x =GetSystemMetrics(SM_CXSCREEN);		hDC =GetDC(hWnd);	GetTextMetrics(hDC, &tm);	ReleaseDC(hWnd, hDC);    GetWindowRect(ghWndXlt,&rc);        x0 =rc.right;    y0 =tm.tmHeight*8+STATUS_HEIGHT +TOOLBAR_HEIGHT ;    x1 =x*1/3-30-1;    y1 =tm.tmHeight*6;    if(ghWndLitHq ==NULL)    {    		hwnd =CreateWindow(LITHQ_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,					x0, y0, x1, y1,					hWnd, NULL, ghInstance, NULL);								if(hwnd ==NULL)		{			ErrMsg(hWnd, "Error create lithq window");			return FALSE;		}			ghWndLitHq =hwnd;	}	else	{		SetWindowPos(ghWndLitHq, (HWND) NULL,x0, y0, x1, y1,NULL);		}		return TRUE;}LPSTR LitHqTitles[]={	"开盘", "平均", "最高", "最低", "最近", "涨幅", "总手", "内盘", "外盘", "涨跌", NULL};float CalcAveJg(int jys, int recNum);float CalcWb(void);extern IsZsRec(int, int);extern HFONT ghFontSmall;extern int UDP_Send_Hq10(int, int, int, int);LRESULT CALLBACK LitHqWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){	char tmp[256];	PAINTSTRUCT ps;	DWORD dw;	int i, j, k, y;	RECT rc;	HPEN hPen;	static float aveJg =0;	static int x =15;		switch(message)	{		case WM_SETFOCUS:			SetFocus(ghWndMain);		break;		case WM_READ_OK:			if(IsZsRec(GraphData.jys, GraphData.recNum)) x =5;			else x =15;			aveJg =CalcAveJg(GraphData.jys, GraphData.recNum);			InvalidateRect(hWnd, NULL, TRUE);		break;		case WM_SIZE:			if(IsWindowVisible)				InvalidateRect(hWnd,NULL,TRUE);		break; 		case WM_PAINT:			GetClientRect(hWnd, &rc);						BeginPaint(hWnd, &ps);			hPen =CreatePen(PS_SOLID, 2, RGB(180, 180, 180));			SelectObject(ps.hdc, hPen);			SelectObject(ps.hdc, GetStockObject(NULL_BRUSH));			Rectangle(ps.hdc, 2, 2, rc.right-2, rc.bottom-1);			SelectObject(ps.hdc, GetStockObject(WHITE_PEN));			DeleteObject(hPen);			MoveTo(ps.hdc, rc.right, 0);			LineTo(ps.hdc, 0, 0);			LineTo(ps.hdc, 0, rc.bottom);			hPen =CreatePen(PS_SOLID, 2, RGB(80, 80, 80));			SelectObject(ps.hdc, hPen);			LineTo(ps.hdc, rc.right-1, rc.bottom-1);			LineTo(ps.hdc, rc.right-1, 0);			SelectObject(ps.hdc, GetStockObject(WHITE_PEN));			DeleteObject(hPen);			strcpy(tmp, "行情");			dw =GetTextExtent(ps.hdc, tmp, strlen(tmp));			y =HIWORD(dw);						SetBkMode(ps.hdc, TRANSPARENT);						SetTextColor(ps.hdc, RGB(255, 255, 0));						SetTextAlign(ps.hdc, TA_LEFT|TA_TOP);						k =	GraphData.recNum;			if(IsZsRec(GraphData.jys, k)) j =9;			else j =10;			for(i =0; i<j; i++)			{				TextOut(ps.hdc, rc.right*(i/5)/2+5-10*(i/5), 5+(y+2)*(i%5),							LitHqTitles[i], strlen(LitHqTitles[i]));			}			SelectObject(ps.hdc, ghFontSmall);			SetTextAlign(ps.hdc, TA_RIGHT|TA_TOP);			//SetTextColor(ps.hdc, RGB(180, 0, 0));			if(HqData[GraphData.jys].lpPreData[k].jrkp >					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(255, 0, 0));			else if(HqData[GraphData.jys].lpPreData[k].jrkp <					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(0, 255, 0));			else SetTextColor(ps.hdc, RGB(255, 255, 0));			sprintf(tmp, "%.2f", HqData[GraphData.jys].lpPreData[k].jrkp);			TextOut(ps.hdc, rc.right/2-x, 5, tmp, strlen(tmp));			if(aveJg >HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(255, 0, 0));			else if(aveJg <	HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(0, 255, 0));			else SetTextColor(ps.hdc, RGB(255, 255, 0));			sprintf(tmp, "%.2f", aveJg);			TextOut(ps.hdc, rc.right/2-x, 5+(y+2), tmp, strlen(tmp));						if(HqData[GraphData.jys].lpRefData[k].zgjg >					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(255, 0, 0));			else if(HqData[GraphData.jys].lpRefData[k].zgjg <					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(0, 255, 0));			else SetTextColor(ps.hdc, RGB(255, 255, 0));			sprintf(tmp, "%.2f", HqData[GraphData.jys].lpRefData[k].zgjg);			TextOut(ps.hdc, rc.right/2-x, 5+(y+2)*2, tmp, strlen(tmp));						if(HqData[GraphData.jys].lpRefData[k].zdjg >					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(255, 0, 0));			else if(HqData[GraphData.jys].lpRefData[k].zdjg <					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(0, 255, 0));			else SetTextColor(ps.hdc, RGB(255, 255, 0));			sprintf(tmp, "%.2f", HqData[GraphData.jys].lpRefData[k].zdjg);			TextOut(ps.hdc, rc.right/2-x, 5+(y+2)*3, tmp, strlen(tmp));						if(HqData[GraphData.jys].lpRefData[k].zjjg >					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(255, 0, 0));			else if(HqData[GraphData.jys].lpRefData[k].zjjg <					HqData[GraphData.jys].lpPreData[k].zrsp)				SetTextColor(ps.hdc, RGB(0, 255, 0));			else SetTextColor(ps.hdc, RGB(255, 255, 0));			sprintf(tmp, "%.2f", HqData[GraphData.jys].lpRefData[k].zjjg);			TextOut(ps.hdc, rc.right/2-x, 5+(y+2)*4, tmp, strlen(tmp));						sprintf(tmp, "%.2f", HqData[GraphData.jys].lpRefData[k].zdf);			TextOut(ps.hdc, rc.right-5, 5, tmp, strlen(tmp));								SetTextColor(ps.hdc, RGB(0, 255, 255));			sprintf(tmp, "%ld", HqData[GraphData.jys].lpRefData[k].cjss);			TextOut(ps.hdc, rc.right-5, 5+(y+2)*1, tmp, strlen(tmp));								sprintf(tmp, "%ld", HqData[GraphData.jys].lpRefData[k].npzl);			TextOut(ps.hdc, rc.right-5, 5+(y+2)*2, tmp, strlen(tmp));					sprintf(tmp, "%ld", HqData[GraphData.jys].lpRefData[k].cjss							-HqData[GraphData.jys].lpRefData[k].npzl);			TextOut(ps.hdc, rc.right-5, 5+(y+2)*3, tmp, strlen(tmp));					if(j ==10)			{				sprintf(tmp, "%.2f", HqData[GraphData.jys].lpRefData[k].zjjg -					HqData[GraphData.jys].lpPreData[k].zrsp);				TextOut(ps.hdc, rc.right-5, 5+(y+2)*4, tmp, strlen(tmp));					}			EndPaint(hWnd, &ps);		break;			}	return DefWindowProc(hWnd, message, wParam, lParam);}float CalcAveJg(int jys, int recNum){	int i;	double jg;		if(GraphData.minEnd <=0)		return HqData[jys].lpRefData[recNum].zjjg;	jg =0;	for(i =0; i<GraphData.minEnd; i++)		jg+=GraphData.lpGraData[0].zjjg;		jg /=GraphData.minEnd;	jg +=HqData[jys].lpPreData[recNum].zrsp;		return (float)jg;}float CalcWb(void){	int i;	double slSell =0, slBuy =0;		for(i =0; i<3; i++)		slSell +=(double)MmpData.slSell[i];	for(i =0; i<3; i++)		slBuy +=(double)MmpData.slBuy[i];			if(slSell +slBuy ==0) return 0;		return (float)((slBuy-slSell)/(slSell+slBuy));}

⌨️ 快捷键说明

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