hq_cl.c

来自「站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码」· C语言 代码 · 共 2,086 行 · 第 1/4 页

C
2,086
字号
	return 0;}int SortFloat(LPSORT_DATA lpSortData, int jys){	int key, i, j, k, n;	float fval, f1, f;		k =HqPaintData.sortData.fldID;		for(i=0; i<HqPaintData.recCount-1; i++)	{		key =i;		fval =*(float*)GetHqFldPos1(jys, lpSortData->key[key], k);		for(j =i+1; j<HqPaintData.recCount; j++)		{			f1 =*(float *)GetHqFldPos1(jys, lpSortData->key[j], k);			f =f1-fval;			if(lpSortData->type ==SORT_UP && f>.0)			{				key =j;				fval =f1;			}			else if(lpSortData->type ==SORT_DOWN && f<.0)           			{				key =j;				fval =f1;			}		}		if(key >i)		{			//fval =*(float *)GetHqFldPos1(jys, lpSortData->key[key], k);			n =lpSortData->key[i];			lpSortData->key[i] =lpSortData->key[key];			lpSortData->key[key] =n;		}	}	return 0;}int SortLong(LPSORT_DATA lpSortData, int jys){	int key, i, j, k, n;	long lval, l1, l;		k =HqPaintData.sortData.fldID;		for(i=0; i<HqPaintData.recCount-1; i++)	{		key =i;		lval =*(long*)GetHqFldPos1(jys, lpSortData->key[key], k);		for(j =i+1; j<HqPaintData.recCount; j++)		{			l1 =*(long *)GetHqFldPos1(jys, lpSortData->key[j], k);			l =l1-lval;			if(lpSortData->type ==SORT_UP && l>0)			{				key =j;				lval =l1;			}			else if(lpSortData->type ==SORT_DOWN && l<0)            			{				key =j;				lval =l1;			}		}		if(key >i)		{			//lval =*(long *)GetHqFldPos1(jys, lpSortData->key[key], k);			n =lpSortData->key[i];			lpSortData->key[i] =lpSortData->key[key];			lpSortData->key[key] =n;		}	}	return 0;}LPSTR GetHqFldPos(HDC hDC, int jys, int rec_num, int fld_num){	float f;	LPSTR lpFld;	static long l;	if(HqData[jys].lpPreData[rec_num].zrsp!=0)	{		HqData[jys].lpRefData[rec_num].zdf=			(HqData[jys].lpRefData[rec_num].zjjg-HqData[jys].lpPreData[rec_num].zrsp)*100/				HqData[jys].lpPreData[rec_num].zrsp;	}			SetBkColor(hDC, RGB(0, 0, 0));	switch(fld_num)	{		case 0:			SetTextColor(hDC, RGB(180, 180, 0));		return (LPSTR)&HqData[jys].lpPreData[rec_num].zqdm[0];		case 1:			SetTextColor(hDC, RGB(255, 255, 255));		return (LPSTR)&HqData[jys].lpPreData[rec_num].zrsp;		case 2:			f =((HqData[jys].lpPreData[rec_num].jrkp					-HqData[jys].lpPreData[rec_num].zrsp));			lpFld =(LPSTR)&HqData[jys].lpPreData[rec_num].jrkp;		break;		case 3:			f =((HqData[jys].lpRefData[rec_num].zgjg					-HqData[jys].lpPreData[rec_num].zrsp));			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].zgjg;		break;		case 4:			f =((HqData[jys].lpRefData[rec_num].zdjg					-HqData[jys].lpPreData[rec_num].zrsp));			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].zdjg;		break;		case 5:			f =((HqData[jys].lpRefData[rec_num].zgjm					-HqData[jys].lpPreData[rec_num].zrsp));			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].zgjm;		break;		case 6:			f =((HqData[jys].lpRefData[rec_num].zdjm					-HqData[jys].lpPreData[rec_num].zrsp));			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].zdjm;		break;		case 7:			f =((HqData[jys].lpRefData[rec_num].zjjg					-HqData[jys].lpPreData[rec_num].zrsp));			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].zjjg;		break;		case 8:			f =(float)(HqData[jys].lpRefData[rec_num].zdf);			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].zdf;		break;		case 9:			f =HqData[jys].lpRefData[rec_num].zdf;			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].cjss;		break;		case 10:			f =HqData[jys].lpRefData[rec_num].zdf;			if(HqData[jys].isJgChanged[rec_num]>0)				SetBkColor(hDC, RGB(80, 0, 0));			else if(HqData[jys].isJgChanged[rec_num]<0)				SetBkColor(hDC, RGB(0, 80, 0));			else SetBkColor(hDC, RGB(0, 0, 0));			SetTextColor(hDC, RGB(255, 255, 0));			return (LPSTR)&HqData[jys].lpRefData[rec_num].lc;		//break;		case 11:			f =HqData[jys].lpRefData[rec_num].zdf;			lpFld = (LPSTR)&HqData[jys].lpRefData[rec_num].npzl;		break;		case 12:			l =HqData[jys].lpRefData[rec_num].cjss				-HqData[jys].lpRefData[rec_num].npzl;			f =HqData[jys].lpRefData[rec_num].zdf;			lpFld =(LPSTR)&l;		break;		case 13:			f =HqData[jys].lpRefData[rec_num].zdf;			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].wb;		break;		case 14:			f =HqData[jys].lpRefData[rec_num].zdf;			lpFld =(LPSTR)&HqData[jys].lpRefData[rec_num].cjje;		break;			case 15:			f =HqData[jys].lpRefData[rec_num].zdf;								HqZd =HqData[jys].lpRefData[rec_num].zjjg -				HqData[jys].lpPreData[rec_num].zrsp;			lpFld =(LPSTR)&HqZd;		break;	}	if(f >0) SetTextColor(hDC, RGB(255, 0, 0));	else if(f <0) SetTextColor(hDC, RGB(0, 255, 0));	else SetTextColor(hDC, RGB(255, 255, 255));		return lpFld;}LPSTR GetHqFldPos1(int jys, int rec_num, int fld_num){	long l;	if(HqData[jys].lpPreData[rec_num].zrsp!=0)	{		HqData[jys].lpRefData[rec_num].zdf=			(HqData[jys].lpRefData[rec_num].zjjg-HqData[jys].lpPreData[rec_num].zrsp)*100/				HqData[jys].lpPreData[rec_num].zrsp;	}		switch(fld_num)	{		case 0:		return (LPSTR)&HqData[jys].lpPreData[rec_num].zqdm[0];		case 1:		return (LPSTR)&HqData[jys].lpPreData[rec_num].zrsp;		case 2:		return (LPSTR)&HqData[jys].lpPreData[rec_num].jrkp;		case 3:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zgjg;		case 4:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zdjg;		case 5:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zgjm;		case 6:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zdjm;		case 7:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zjjg;		case 8:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zdf;		case 9:		return (LPSTR)&HqData[jys].lpRefData[rec_num].cjss;		case 10:		return (LPSTR)&HqData[jys].lpRefData[rec_num].lc;		case 11:		return (LPSTR)&HqData[jys].lpRefData[rec_num].npzl;		case 12:			l =HqData[jys].lpRefData[rec_num].cjss				-HqData[jys].lpRefData[rec_num].npzl;		return (LPSTR)&l;		case 13:		return (LPSTR)&HqData[jys].lpRefData[rec_num].wb;		case 14:		return (LPSTR)&HqData[jys].lpRefData[rec_num].cjje;		case 15:			HqZd =HqData[jys].lpRefData[rec_num].zjjg -				HqData[jys].lpPreData[rec_num].zrsp;		return (LPSTR)&HqZd;	}}BOOL IsZsRec(int jys, int rec_num){	if(jys ==0)	{		if(!strncmp(HqData[jys].lpPreData[rec_num].zqdm, "99", 2))			return TRUE;	}	else		if(!strncmp(HqData[jys].lpPreData[rec_num].zqdm, "0000", 4)			&& (HqData[jys].lpPreData[rec_num].zqdm[4] =='0'				||HqData[jys].lpPreData[rec_num].zqdm[4] =='1'))			return TRUE;		return FALSE;}void ReadHqDataAll(void){	int jys, i;	char fileName[128];	HFILE hf;	OFSTRUCT os;	extern BOOL HqAllocMem(int);		HQ_REF_DATA_V202 DataV202,*lpDataV202;		i =250;	if(GraphData.lpMinPos ==NULL)		GraphData.lpMinPos =(short *)GlobalAllocPtr(GHND, i*sizeof(short));	else		GraphData.lpMinPos =(short *)GlobalReAllocPtr(GraphData.lpMinPos,					i*sizeof(short), GMEM_MOVEABLE);	if(GraphData.lpMinPos ==NULL)	{		GraphData.minEnd =0;		ErrMsg(NULL,"alloc record data memory failed!");		return;	}			if(GraphData.lpMinLc ==NULL)		GraphData.lpMinLc =(long *)GlobalAllocPtr(GHND, i*sizeof(long));	else		GraphData.lpMinLc =(long *)GlobalReAllocPtr(GraphData.lpMinLc,					i*sizeof(long), GHND);	if(GraphData.lpMinLc ==NULL)	{		GraphData.minEnd =0;		ErrMsg(NULL,"alloc record data memory failed!");		return;	}			strcpy(fileName, szDataPath);	strcat(fileName, "\\dpdata.dat");		hf =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_READ);	if(hf !=HFILE_ERROR)	{		_lread(hf, &DpData, sizeof(DpData));		_lclose(hf);	}	for(jys =0; jys <2; jys++)	{		strcpy(fileName, szDataPath);		if(jys ==0) strcat(fileName, "\\szhq.dat");		else strcat(fileName, "\\shhq.dat");			hf =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_READ);		if(hf ==HFILE_ERROR) return;		if(_lread(hf, &HqData[jys].recCount, sizeof(int)) !=sizeof(int))		{			_lclose(hf);			return;		}		if(HqData[jys].recCount <=0)		{			_lclose(hf);			continue;		}		if(!HqAllocMem(jys))		{			_lclose(hf);			return;		}		if((long)HqData[jys].recCount *(sizeof(HQ_PRE_DATA)+sizeof(HQ_REF_DATA))+sizeof(int)			==_filelength(hf))		{				_lread(hf, &HqData[jys].lpPreData[0], sizeof(HQ_PRE_DATA)*HqData[jys].recCount);			_lread(hf, &HqData[jys].lpRefData[0], sizeof(HQ_REF_DATA)*HqData[jys].recCount);		}			else		{   		    lpDataV202 =(HQ_REF_DATA_V202 *)malloc(sizeof(HQ_REF_DATA_V202)*HqData[jys].recCount);		    if(lpDataV202!=NULL)		    {		    	if((unsigned int)(_read(hf,lpDataV202,sizeof(HQ_REF_DATA_V202)*HqData[jys].recCount))!=		    			(unsigned int)(sizeof(HQ_REF_DATA_V202)*HqData[jys].recCount))		    	{				    		free(lpDataV202);		    		lpDataV202=NULL;		    	}		    				    }				for(i=0;i<HqData[jys].recCount;i++)			{			    if(lpDataV202==NULL)			 		_read(hf,&DataV202,sizeof(HQ_REF_DATA_V202));			 	else			 		memcpy(&DataV202,&lpDataV202[i],sizeof(HQ_REF_DATA_V202));			 	HqData[jys].lpRefData[i].zdjg =(float)(DataV202.zdjg/100.00);			 	HqData[jys].lpRefData[i].zgjg =(float)((DataV202.zgjg+DataV202.zdjg)/100.00);			 	HqData[jys].lpRefData[i].zdjm =(float)((DataV202.zdjm+DataV202.zdjg)/100.00);			 	HqData[jys].lpRefData[i].zgjm =(float)((DataV202.zgjm+DataV202.zdjg)/100.00);			 	HqData[jys].lpRefData[i].zjjg =(float)((DataV202.zjjg+DataV202.zdjg)/100.00);			 	HqData[jys].lpRefData[i].npzl =DataV202.npzl;			 	HqData[jys].lpRefData[i].cjss =DataV202.npzl+DataV202.cjss;			 	HqData[jys].lpRefData[i].wb =(float)(DataV202.wb/100.00);			 				 	HqData[jys].lpPreData[i].zrsp =(float)((DataV202.zrsp+DataV202.zdjg)/100.00);			 	HqData[jys].lpPreData[i].jrkp =(float)((DataV202.jrkp+DataV202.zdjg)/100.00);			 	strcpy(HqData[jys].lpPreData[i].zqdm,DataV202.zqdm);			 	strcpy(HqData[jys].lpPreData[i].zqmc,DataV202.zqmc);			 				}		    if(lpDataV202!=NULL)				free(lpDataV202);		}		_lclose(hf);	}	strcpy(fileName, szDataPath);	strcat(fileName, "\\maxmin.dat");		hf =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_READ);	if(hf !=HFILE_ERROR)	{		_lread(hf, &MaxMinData, sizeof(MaxMinData));		_lclose(hf);	}}void WriteHqDataAll(void){	int jys;	char fileName[128];	HFILE hf;	OFSTRUCT os;		strcpy(fileName, szDataPath);	strcat(fileName, "\\dpdata.dat");		hf =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_CREATE|OF_READWRITE);	if(hf !=HFILE_ERROR)	{		_lwrite(hf, &DpData, sizeof(DpData));		_lclose(hf);	}	for(jys =0; jys <2; jys++)	{		if(HqData[jys].recCount <=0) continue;		strcpy(fileName, szDataPath);		if(jys ==0) strcat(fileName, "\\szhq.dat");		else strcat(fileName, "\\shhq.dat");			hf =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_CREATE|OF_READWRITE);		if(hf ==HFILE_ERROR) return;		if(_lwrite(hf, &HqData[jys].recCount, sizeof(int)) !=sizeof(int))		{			_lclose(hf);			return;		}		_lwrite(hf, &HqData[jys].lpPreData[0], sizeof(HQ_PRE_DATA)*HqData[jys].recCount);		_lwrite(hf, &HqData[jys].lpRefData[0], sizeof(HQ_REF_DATA)*HqData[jys].recCount);		_lclose(hf);	}	strcpy(fileName, szDataPath);	strcat(fileName, "\\maxmin.dat");		hf =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_READ);	if(hf ==HFILE_ERROR)	{		_lwrite(hf, &MaxMinData, sizeof(MaxMinData));		_lclose(hf);	}}void DelOldData(void){	int jys;	char fileName[128];	OFSTRUCT os;		strcpy(fileName, szDataPath);	strcat(fileName, "\\dpdata.dat");		unlink(fileName);	for(jys =0; jys <2; jys++)	{		strcpy(fileName, szDataPath);		if(jys ==0) strcat(fileName, "\\szhq.dat");		else strcat(fileName, "\\shhq.dat");			unlink(fileName);	}	strcpy(fileName, szDataPath);	strcat(fileName, "\\maxmin.dat");		unlink(fileName);		_lclose(hfZx);	strcpy(fileName, szDataPath);	strcat(fileName, "\\zx.txt");	unlink(fileName);			hfZx =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_CREATE|OF_READWRITE);	_lclose(hfZx);		sprintf(fileName,"%s\\news.idx",szDataPath);	unlink(fileName);	}void ReadHqData(int jys){	char fileName[128];	HFILE hf;	OFSTRUCT os;	extern BOOL HqAllocMem(int);		HQ_REF_DATA_V202 DataV202;	int i;			strcpy(fileName, szDataPath);	if(jys ==0) 		strcat(fileName, "\\szhq.dat");	else 		strcat(fileName, "\\shhq.dat");		hf =OpenFile(fileName, &os, OF_SHARE_DENY_NONE|OF_READ);	if(hf ==HFILE_ERROR) return;	if(_lread(hf, &HqData[jys].recCount, sizeof(int)) !=sizeof(int))	{		_lclose(hf);		return;	}	if(HqData[jys].recCount <=0)	{		_lclose(hf);		return;	}	if(!HqAllocMem(jys))	{		_lclose(hf);		return;	}	if((long)HqData[jys].recCount *(sizeof(HQ_PRE_DATA)+sizeof(HQ_REF_DATA))+sizeof(int)			==_filelength(hf))	{		_lread(hf, &HqData[jys].lpPreData[0], sizeof(HQ_PRE_DATA)*HqData[jys].recCount);		_lread(hf, &HqData[jys].lpRefData[0], sizeof(HQ_REF_DATA)*HqData[jys].recCount);	}	else	{		for(i=0;i<HqData[jys].recCount;i++)		{			 _read(hf,&DataV202,sizeof(HQ_REF_DATA_V202));			 HqData[jys].lpRefData[i].zdjg =(float)(DataV202.zdjg/100.00);			 HqData[jys].lpRefData[i].zgjg =(float)(DataV202.zgjg/100.00)+HqData[jys].lpRefData[i].zdjg;			 HqData[jys].lpRefData[i].zdjm =(float)(DataV202.zdjm/100.00)+HqData[jys].lpRefData[i].zdjg;			 HqData[jys].lpRefData[i].zgjm =(float)(DataV202.zgjm/100.00)+HqData[jys].lpRefData[i].zdjg;			 HqData[jys].lpRefData[i].zjjg =(float)(DataV202.zjjg/100.00)+HqData[jys].lpRefData[i].zdjg;			 HqData[jys].lpRefData[i].npzl =DataV202.npzl;			 			 //HqData[jys].lpRefData[i].cjss =DataV202.npzl+DataV202.cjss;			 HqData[jys].lpRefData[i].cjss =DataV202.cjss;			 HqData[jys].lpRefData[i].cjje =DataV202.cjje;			 			 HqData[jys].lpRefData[i].wb =(float)(DataV202.wb/100.00);			 				 HqData[jys].lpPreData[i].zrsp =(float)(DataV202.zrsp/100.00)+HqData[jys].lpRefData[i].zdjg;			 HqData[jys].lpPreData[i].jrkp =(float)(DataV202.jrkp/100.00)+HqData[jys].lpRefData[i].zdjg;			 strcpy(HqData[jys].lpPreData[i].zqdm,DataV202.zqdm);			 strcpy(HqData[jys].lpPreData[i].zqmc,DataV202.zqmc);			 			}		}		_lclose(hf);	}

⌨️ 快捷键说明

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