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

📄 fx.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
📖 第 1 页 / 共 5 页
字号:
		if(area_start<=pm_end)		{			memset(&HistData,0,sizeof(DAY_DATA));						HistData.day =(long)GraHead.dateNum*1000 +area_start;			HistData.kpjg =GraData.zjjg +GraHead.zrsp;			HistData.zgjg =HistData.zdjg =GraData.zjjg+GraHead.zrsp;						_lseek(hf1,sizeof(GRA_HEAD),SEEK_SET);		 	for(i=0;i<GraHead.minTotal;i++)		 	{		 				 		if(_lread(hf1,&GraData,sizeof(GRA_DATA))!=sizeof(GRA_DATA))		 			break;		 		if(GraData.tim ==0)		 			continue;		 				 		if(GraData.tim<area_end&&GraData.tim>=area_start)		 		{		 			HistData.spjg =GraData.zjjg+GraHead.zrsp;		 					 			if(HistData.zgjg<GraData.zjjg+GraHead.zrsp)		 				HistData.zgjg=GraData.zjjg+GraHead.zrsp;		 			if(HistData.zdjg>GraData.zjjg+GraHead.zrsp)		 				HistData.zdjg=GraData.zjjg+GraHead.zrsp;		 					 			HistData.cjss +=GraData.lc;		 					 		}		 		else		 		{		 			//HistData.day =(long)GraHead.dateNum*1000 +area_end;		 			_lwrite(hf2,&HistData,sizeof(DAY_DATA));                    					area_start =area_end;					area_end =area_start+5<=am_end?area_start+5:					area_start>pm_start?area_start+5:area_start+5+pm_start-am_end;                    					for(;;)					{						if(GraData.tim>area_end)						{							area_start =area_end;							area_end =area_start+5<=am_end?area_start+5:							area_start>pm_start?area_start+5:area_start+5+pm_start-am_end;						}						else break;						if(area_start>pm_end)							break;					}		 					 			memset(&HistData,0,sizeof(DAY_DATA));   		 					 			HistData.spjg =GraData.zjjg+GraHead.zrsp;		 					 			HistData.kpjg =GraData.zjjg +GraHead.zrsp;		 			HistData.zgjg =HistData.zdjg =GraData.zjjg+GraHead.zrsp;		 					 			HistData.cjss +=GraData.lc;		 					 			HistData.day =(long)GraHead.dateNum*1000 +area_start;		 					 		}			 	}		 			 	if(HistData.day!=0)		 		_lwrite(hf2,&HistData,sizeof(DAY_DATA));		 			}		_lclose(hf1);	}	if(range!=MIN_5)	{		sprintf(f1,"%s\\%s.%d",szDataPath,gpdm,range);			hf1 =OpenFile(f1,&os,OF_WRITE|OF_SHARE_DENY_NONE|OF_CREATE);		if(hf1==HFILE_ERROR) return FALSE;		memset(&HistData,0,sizeof(DAY_DATA));		if(filelength(hf2)/sizeof(DAY_DATA)>MAXSHOWDOT)			_lseek(hf2,-1L*sizeof(DAY_DATA)*MAXSHOWDOT,SEEK_END);		else			_lseek(hf2,0L,SEEK_SET);		for(;;)		{		 	if(_lread(hf2,&buff,sizeof(DAY_DATA))!=sizeof(DAY_DATA))		 		break;		 	if(HistData.day!=0&&buff.day%1000>=HistData.day%1000+atoi(RANGE_NAME[range]))		 	{		 		_lwrite(hf1,&HistData,sizeof(DAY_DATA));		 		memset(&HistData,0,sizeof(DAY_DATA));		 			 	}		 	if(HistData.day ==0) HistData.kpjg =buff.kpjg;		 	HistData.spjg =buff.spjg;		 	if(HistData.day ==0)		 	{		 		HistData.zgjg =buff.zgjg;		 		HistData.zdjg =buff.zdjg;		 	}		 	else		 	{		 		if(HistData.zgjg<buff.zgjg)		 			HistData.zgjg=buff.zgjg;		 		if(HistData.zdjg>buff.zdjg)		 			HistData.zdjg=buff.zdjg;		 	}		 	HistData.cjss +=buff.cjss;		 	if(HistData.day ==0)		 		HistData.day =buff.day;		}		 if(HistData.day !=0)		 	_lwrite(hf1,&HistData,sizeof(DAY_DATA));				_lclose(hf1);	}	_lclose(hf2);	return TRUE;} HBITMAP getImage(HDC hDC, LPRECT rc){	HBITMAP hBmp, hOldBmp;	HDC hdc =CreateCompatibleDC(hDC);	hBmp =CreateCompatibleBitmap(hDC, rc->right-rc->left, rc->bottom-rc->top);	hOldBmp =SelectObject(hdc, hBmp);	BitBlt(hdc, 0, 0, rc->right-rc->left, rc->bottom-rc->top, hDC, rc->left, rc->top, SRCCOPY);	SelectObject(hdc, hOldBmp);	DeleteObject(hdc);	return hBmp;}int putImage(HDC hDC, HBITMAP hBmp, LPRECT rc){	HDC hdc =CreateCompatibleDC(hDC);	SelectObject(hdc, hBmp);	BitBlt(hDC, rc->left, rc->top, rc->right-rc->left, rc->bottom-rc->top, hdc, 0, 0, SRCCOPY);	DeleteObject(hdc);	return hBmp;}int DrawScroll(LPFX Fx,int orient){		HDC hDc;	static int pos,recnum;	char tmp[100];	int i,j,htitle,wleft,repl,num,gap,tune,ltitle;	DATA *lpData;	PARA *lpPara;			if(Fx->KxData.v==NULL) return TRUE;	if(Fx->PaintPara.IsPainting) return TRUE;    if(!Fx->PaintPara.IsScroll&&orient==SCROLL_CANCEL)    	return TRUE;	lpData =&Fx->KxData;	lpPara =&Fx->KxPara;		hDc =GetDC(ghWndFx);		SetBkColor(hDc,RGB(0,0,0));	SelectObject(hDc,Fx->PaintPara.hFont);	SetROP2(hDc, R2_NOT);	tune =FRAME_WIDTH;    do    {       	if(lpPara->rc.bottom==0)    	{        	lpData =lpData->next;    		lpPara =lpPara->next;    		continue;        }        repl =pos;        num =recnum;        htitle =lpPara->htitle+tune;        gap =(int)((lpPara->fwdt*80/100)/2)+tune;        wleft =Fx->PaintPara.wleft+gap;    	if(!Fx->PaintPara.IsScroll)     	{    		if(orient==SCROLL_LEFT||orient==SCROLL_END)    		{    	    			repl=Fx->ShowDot;				 //pos:1->show    			num=Fx->CurRecPrt+Fx->ShowDot-1; //num:prt ->prt +show -1    		}    		if(orient==SCROLL_RIGHT||orient==SCROLL_HOME)    		{    			repl=1;    			num=Fx->CurRecPrt;    	    		}	    		MoveTo(hDc,(int)(repl*lpPara->fwdt)+wleft,lpPara->rc.top+htitle+1);    		LineTo(hDc,(int)(repl*lpPara->fwdt)+wleft,lpPara->rc.bottom-1);    	}    	else    	{    		if(orient==SCROLL_RIGHT)    		{       			//右移    	 		if(++repl>Fx->ShowDot)     	 		{    		    	if(Fx->CurRecPrt<Fx->RecCount-1-Fx->ShowDot)    		    	{                                   //右换页						SetTimer(ghWndFx, 1, 500, NULL); 						Fx->PaintPara.IsPainting=TRUE;    					Fx->CurRecPrt=Fx->CurRecPrt+Fx->ShowDot*2<Fx->RecCount-1     						? Fx->CurRecPrt+Fx->ShowDot:Fx->RecCount-Fx->ShowDot;						Fx->PaintPara.IsScroll=FALSE;						if(Fx->PaintPara.IsUpDown)		            		UpDown(Fx,0);		            								InvalidateRect(ghWndFx, NULL, FALSE);						Fx->PaintPara.IsScroll=FALSE;						ReleaseDC(ghWndFx, hDc);						return 0;											}					else					{											repl=Fx->ShowDot;                //换页到顶						num =Fx->CurRecPrt+Fx->ShowDot-1;					}    	 		}	                                        	 		else    	 		{                                           	 			repl--;                              //移线     				MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    				LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    	 			if(++num>Fx->RecCount)	    	 					num=Fx->RecCount;    	 			repl++;    				MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    				LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    	 		}    	 	    		}        	if(orient==SCROLL_LEFT)    		{      			//左移    			repl--;    			if(repl<1)    			{    		    	if(Fx->CurRecPrt>0)    		    	{                    //左换页						SetTimer(ghWndFx, 1, 500, NULL); 						Fx->PaintPara.IsPainting=TRUE;   		        					Fx->CurRecPrt=Fx->CurRecPrt-Fx->ShowDot>=0 ? Fx->CurRecPrt-=Fx->ShowDot:0;						Fx->PaintPara.IsScroll=FALSE; 						if(Fx->PaintPara.IsUpDown)		            		UpDown(Fx,0);						InvalidateRect(ghWndFx, NULL, FALSE);												Fx->PaintPara.IsScroll=FALSE;						ReleaseDC(ghWndFx, hDc);						return 0;											}					else					{						repl=1;	         //换页到底						num =0;					}    			}	    			else    			{	      				repl++;               //移线    				    				MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    	    				LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    				repl--;    	 			num--;    	 			if(recnum<0) num=0;     				MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    				LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    			}    		}    		//按[END]键    		if(orient==SCROLL_END)    		{    			MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    	    			LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    			repl=Fx->ShowDot;    			num=Fx->CurRecPrt+Fx->ShowDot-1;    			MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    	    			LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    		}    		//按[HOME]键    		if(orient==SCROLL_HOME)    		{    			MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    			LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    			repl=1;    			num=Fx->CurRecPrt;    			MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    			LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    		}    	    		//结束SCROLL 			if(orient==SCROLL_CANCEL)			{    			MoveTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.top+htitle+1);    			LineTo(hDc,(int)(repl*lpPara->fwdt) +wleft,lpPara->rc.bottom-1);    		}    	   	    	}    	lpData =lpData->next;    	lpPara =lpPara->next;    }while(lpData!=NULL&&lpPara!=NULL);    pos =repl;    recnum =num;    SetTextColor(hDc,RGB(0,255,255));    SetROP2(hDc, R2_COPYPEN);    SetTextAlign(hDc, TA_LEFT|TA_TOP);        if(orient==SCROLL_CANCEL)    {   		Fx->PaintPara.IsScroll=FALSE;		Msg("",MSG_HIDE);		ReleaseDC(ghWndFx, hDc);		return 0;    }    else    {               i=(int)(Fx->PaintPara.rc.right/2)+5;        Fx->MainData[recnum].date[8] =0;   		sprintf(tmp, "开:%5.2f收:%5.2f成交:%6ld",   				Fx->MainData[recnum].ks, Fx->MainData[recnum].ss,				Fx->MainData[recnum].cj);   		sprintf(tmp, "%s高:%5.2f低:%5.2f日期:%8s",tmp,   				Fx->MainData[recnum].zg, Fx->MainData[recnum].zd,   				Fx->MainData[recnum].date);   		Msg(tmp,MSG_VERT|MSG_TIME);   	}    Fx->PaintPara.IsScroll=TRUE;    SetBkColor(hDc,RGB(0,0,0));    SetTextAlign(hDc, TA_LEFT|TA_TOP);   	   	lpData =&Fx->KxData;   	lpPara =&Fx->KxPara;   	   	do   	{      		ltitle =(lpPara->xtitle[1]-lpPara->xtitle[0])/2;   		htitle =lpPara->htitle;    	for(i=0,j=0;i<10&&lpPara->rc.bottom>0;i++)    	{    		if(lpPara->color[i]==0)    			continue;    		if(strlen(lpPara->pname[i])==0)	    			continue;    		if(lpData->method[0]==VOULMN_BAR_METHOD)    		    sprintf(tmp,"%.0f",lpData->v[i][recnum]);    		else    			sprintf(tmp,"%.2f",lpData->v[i][recnum]);    		SelectObject(hDc,GetStockObject(BLACK_BRUSH));    		SetBkMode(hDc, OPAQUE);    		Rectangle(hDc,lpPara->xtitle[j],lpPara->rc.top+4,    				  lpPara->xtitle[j]+ltitle,lpPara->rc.top+htitle);    	    //SetBkMode(hDc, TRANSPARENT);	    		SetTextColor(hDc,lpPara->color[i]);    		TextOut(hDc,lpPara->xtitle[j],lpPara->rc.top+4,tmp,strlen(tmp));    		j++;    	}    	lpData =lpData->next;    	lpPara =lpPara->next;    }while(lpData!=NULL&&lpPara!=NULL);	ReleaseDC(ghWndFx, hDc);	return TRUE;}int UpDown(LPFX Fx,int orient){    	HDC hDc;	static int pos;	static double start,step;	HPEN hPen;	char temp[10];	int chars,wleft,htitle;	static HBITMAP hBmp =NULL;	static RECT rc;    DATA *lpData;    PARA *lpPara;    if(orient==0&&!Fx->PaintPara.IsUpDown)    	return TRUE;    lpData =FindOpData();    lpPara =FindOpPara();    if(lpData==NULL||lpPara==NULL)    {    	lpData =&Fx->KxData;    	lpPara =&Fx->KxPara;        }    	hDc =GetDC(ghWndFx);	SelectObject(hDc,Fx->PaintPara.hFont);	SetROP2(hDc, R2_NOT);    SetTextAlign(hDc, TA_RIGHT|TA_TOP);    SetBkColor(hDc,RGB(255,255,255));    SetTextColor(hDc,RGB(255,0,0));    hPen=CreatePen(PS_SOLID,1,RGB(200,0,0));    SelectObject(hDc,hPen);        SetRect(&lpPara->rc,lpPara->rc.left,lpPara->rc.top+FRAME_WIDTH,            lpPara->rc.right,lpPara->rc.bottom-FRAME_WIDTH);                        htitle =lpPara->htitle;    wleft =Fx->PaintPara.wleft;	SetViewportOrg(hDc, lpPara->rc.left+wleft,		(int)(lpPara->price[0]*lpPara->fhdj)+lpPara->rc.top+htitle);	    if(!Fx->PaintPara.IsUpDown)    {       	Fx->PaintPara.IsUpDown=TRUE;    	    	start=lpPara->price[1];    	step=(lpPara->price[0]-lpPara->price[1])/60;    	pos=-(int)(start*lpPara->fhdj);    	MoveTo(hDc,lpPara->rc.left,pos);    	LineTo(hDc,lpPara->rc.right,pos);    	sprintf(temp,"%7.2f",start);    	chars=LOWORD(GetTextExtent(hDc,temp,strlen(temp)));		rc.left =lpPara->rc.left-chars;		rc.top =pos;		rc.right =rc.left +60;		rc.bottom =rc.top +13;		hBmp =getImage(hDc, &rc);    	TextOut(hDc, rc.left+chars, rc.top, temp, strlen(temp));    }    else        {    	if(orient!=0)    	{    		   			putImage(hDc, hBmp, &rc);    		DeleteObject(hBmp);    		MoveTo(hDc,lpPara->rc.left,pos);    		LineTo(hDc,lpPara->rc.right,pos);    		if(lpData->method[0]==VOULMN_BAR_METHOD)    			sprintf(temp,"%7.0f",start);    		else    			sprintf(temp,"%7.2f",start);    					start+=orient*step;			if(start>=lpPara->price[0]||start<lpPara->price[1])				start-=orient*step;    		pos=-(int)(start*lpPara->fhdj);    	    		    		MoveTo(hDc,lpPara->rc.left,pos);    		LineTo(hDc,lpPara->rc.right,pos);    		if(lpData->method[0]==VOULMN_BAR_METHOD)    			sprintf(temp,"%7.0f",start);    		else    			sprintf(temp,"%7.2f",start);    		chars=LOWORD(GetTextExtent(hDc,temp,strlen(temp)));    					rc.left =lpPara->rc.left-chars;			rc.top =pos;			rc.right =rc.left +60;			rc.bottom =rc.top +13;			hBmp =getImage(hDc, &rc);    		TextOut(hDc, rc.left+chars, rc.top, temp, strlen(temp));    	}    	else    	{    		putImage(hDc, hBmp, &rc);    		DeleteObject(hBmp);    		Fx->PaintPara.IsUpDown=FALSE;    		MoveTo(hDc,lpPara->rc.left,pos);    		LineTo(hDc,lpPara->rc.right,pos);    		if(lpData->method[0]==VOULMN_BAR_METHOD)    			sprintf(temp,"%7.0f",start);    		else    			sprintf(temp,"%7.2f",start);    		pos=-(int)(lpPara->price[1]*lpPara->fhdj);    	}    }    SelectObject(hDc, GetStockObject(WHITE_PEN));    DeleteObject(hPen);	ReleaseDC(ghWndFx, hDc);	    SetRect(&lpPara->rc,lpPara->rc.left,lpPara->rc.top-FRAME_WIDTH,            lpPara->rc.right,lpPara->rc.bottom+FRAME_WIDTH);		return TRUE;}

⌨️ 快捷键说明

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