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

📄 fx.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
📖 第 1 页 / 共 5 页
字号:
						ShowWindow(ghWndLitHq, SW_HIDE);						ShowWindow(ghWndMaxMin, SW_HIDE);						ShowWindow(ghWndZs, SW_HIDE);			        	FxFreeData(Fx);			        	ShowWindow(ghWndFx,SW_HIDE);						ShowWindow(ghWndHq, SW_SHOW);						KillTimer(ghWndHq, 5);						SetTimer(ghWndHq, 5, 1000, NULL);						SetFocus(ghWndHq);					     			break;                     }                     else                     {   						for(j =0; j<2; j++)						{							for(i =0; i<HqData[j].recCount; i++)							{								if(!strcmp(HqData[j].lpPreData[i].zqdm, tmp))									break;							}							if(i <HqData[j].recCount) break;						}												if(j<2 && i <HqData[j].recCount)						{							GraphData.minEnd =0;							GraphData.jys =j;							GraphData.recNum =i;							SendMessage(hWnd, WM_KILLFOCUS, 0, 0L);							InvalidateRect(ghWndLitHq, NULL, TRUE);							UDP_Send_Gra00(j, i);														if(IsZsRec(j, i))							{								if(!IsWindowVisible(ghWndZs))								{									ShowWindow(ghWndZs, SW_SHOW);									ShowWindow(ghWndMmp, SW_HIDE);									ShowWindow(ghWndCj, SW_HIDE);									ShowWindow(ghWndMaxMin, SW_SHOW);								}							}							else							{								if(IsWindowVisible(ghWndZs))								{									ShowWindow(ghWndZs, SW_HIDE);									ShowWindow(ghWndMmp, SW_SHOW);									ShowWindow(ghWndCj, SW_SHOW);									ShowWindow(ghWndMaxMin, SW_HIDE);								}								SendMessage(ghWndCj, WM_READ_OK, 0, 0L);							}						}                        strcpy(Fx->gpdm, HqData[GraphData.jys].lpPreData[GraphData.recNum].zqdm);                        strcpy(Fx->gpmc, HqData[GraphData.jys].lpPreData[GraphData.recNum].zqmc);		                        if(Fx->type==NULL)                            Fx->type=IDM_FX_MACD;                        Fx->range=DAY;                        FxFreeData(Fx);                        UDP_Send_DataDay(GraphData.jys,GraphData.recNum);                        InvalidateRect(ghWndFx, NULL, TRUE);						SetWindowText(hWndInput, "");                    }				break;		     	case VK_UP:		     		UpDown(Fx,1);		     		break;		     	case VK_DOWN:		     		UpDown(Fx,-1);		     		break;				     	case VK_LEFT:		     	    if(Fx->RecCount!=0&&!Fx->PaintPara.IsSetPara)		     			DrawScroll(Fx,SCROLL_LEFT);		     		break;		     	case VK_RIGHT:		     		     		if(Fx->RecCount!=0&&!Fx->PaintPara.IsSetPara)		     	    	DrawScroll(Fx,SCROLL_RIGHT);		     		break; 		     	case VK_HOME:		     		if(Fx->RecCount!=0&&!Fx->PaintPara.IsSetPara)		     	    	DrawScroll(Fx,SCROLL_HOME);		     		break;		     	case VK_END:		     		if(Fx->RecCount!=0&&!Fx->PaintPara.IsSetPara)		     	    	DrawScroll(Fx,SCROLL_END);		     		break;		     				     				     	case VK_ADD:		     	    if(Fx->RecCount!=0)		     	    {		     			if(Fx->PaintPara.IsScroll||Fx->PaintPara.IsUpDown)		     				SendMessage(hWnd, WM_KILLFOCUS, 0, 0L);		     			if(Fx->ShowDot<Fx->RecCount)		     			{		     				Fx->ShowDot+=30;		     				if(Fx->ShowDot>Fx->RecCount)		     					Fx->ShowDot=Fx->RecCount;		     				Fx->CurRecPrt=Fx->RecCount-Fx->ShowDot;			     				InvalidateRect(hWnd, NULL, TRUE);			     			}	     			     		}		     	break; 		     	case VK_SUBTRACT:		     		if(Fx->RecCount!=0)		     		{		     			if(Fx->PaintPara.IsScroll||Fx->PaintPara.IsUpDown)		     				SendMessage(hWnd, WM_KILLFOCUS, 0, 0L);		     			if(Fx->ShowDot>DEFSHOWDOT)		     			{		     				Fx->ShowDot-=30;		     				if(Fx->ShowDot<DEFSHOWDOT-200)		     					Fx->ShowDot=DEFSHOWDOT-200;		     				Fx->CurRecPrt=Fx->RecCount-Fx->ShowDot;			     				InvalidateRect(hWnd, NULL, TRUE);			     			}		     			     			     		}		     	break;		     	case VK_DIVIDE:		     		if(Fx->PaintPara.IsScroll)		     			DrawScroll(Fx,SCROLL_CANCEL);  		     		if(Fx->PaintPara.IsUpDown)		     			UpDown(Fx,0);		     		Fx->PaintPara.IsAvLineShow=!Fx->PaintPara.IsAvLineShow;		     		InvalidateRect(hWnd, NULL, TRUE);			     				     		break;		     	case VK_MULTIPLY: 		     		if(Fx->PaintPara.IsScroll)		     			DrawScroll(Fx,SCROLL_CANCEL);  		     		if(Fx->PaintPara.IsUpDown)		     					     			UpDown(Fx,0);		     		Fx->PaintPara.IsMax=!Fx->PaintPara.IsMax;		     		InvalidateRect(hWnd, NULL, TRUE);		     		break;		     	case VK_PRIOR:		     		CheckMenuItem(ghMenuMain, Fx->type, MF_BYCOMMAND|MF_UNCHECKED);		     		for(i=0;i<Fx->PaintPara.num;i++)		     		{		     			if(Fx->type ==INIT_TABLE[i].type)		     				break;		     		}		     		if(i==0)		     			i=Fx->PaintPara.num -1;		     		else if(i>=Fx->PaintPara.num)		     			i=0;		     		else		     			i=i-1;		     					     		Fx->type =INIT_TABLE[i].type;		     		strcpy(Fx->Para->name,INIT_TABLE[i].name);		     		GetAnalysePara(Fx->Para);					CheckMenuItem(ghMenuMain, Fx->type, MF_BYCOMMAND|MF_CHECKED);					(*INIT_TABLE[i].CreateData)(Fx->MainData,Fx->RecCount,Fx->Data,Fx->Para);					GetDiagramName(&Fx->KxPara,Fx->range,Fx->gpmc);					DrawScroll(Fx,SCROLL_CANCEL);					if(Fx->Para->rc.right ==0)						{						MakeWinSpace();						InvalidateRect(ghWndFx, NULL, TRUE);					}					else						DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,Fx->Para,Fx->Data,&Fx->PaintPara,0L);		     	break;			     	case VK_NEXT:					CheckMenuItem(ghMenuMain, Fx->type, MF_BYCOMMAND|MF_UNCHECKED);		     			     		for(i=0;i<Fx->PaintPara.num;i++)		     		{		     			if(Fx->type ==INIT_TABLE[i].type)		     				break;		     		}							     		if(i==Fx->PaintPara.num -1)		     			i=0;		     		else if(i>=Fx->PaintPara.num)		     			i=0;		     		else		     			i=i+1;		     					     		Fx->type =INIT_TABLE[i].type;		     		strcpy(Fx->Para->name,INIT_TABLE[i].name);		     		GetAnalysePara(Fx->Para);					CheckMenuItem(ghMenuMain, Fx->type, MF_BYCOMMAND|MF_CHECKED);					(*INIT_TABLE[i].CreateData)(Fx->MainData,Fx->RecCount,Fx->Data,Fx->Para);					GetDiagramName(&Fx->KxPara,Fx->range,Fx->gpmc);										DrawScroll(Fx,SCROLL_CANCEL);					if(Fx->Para->rc.right ==0)					{						MakeWinSpace();						InvalidateRect(ghWndFx, NULL, TRUE);					}					else						DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,Fx->Para,Fx->Data,&Fx->PaintPara,0L);		        break;		        case VK_DELETE:		        	lpPara =FindOpPara();		        	lpData =FindOpData();		        	if(!(lpPara->feature&DW_BASE))		        	{		        	    Fx->PaintPara.item=0L;		        	 	MakeWinSpace();		        	 	InvalidateRect(ghWndFx, NULL, FALSE);		        	}		        	else if(Fx->PaintPara.item&DW_OBJECT)		        	{   		        	    flag =Fx->PaintPara.item;		        	    Fx->PaintPara.item=Fx->PaintPara.item^(flag&DW_OBJECT);		        	    lpPara->feature=lpPara->feature^(flag&DW_OBJECT);		        		DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara,flag|DW_DELE);		        	}		        break;		        case VK_INSERT:		        	lpPara =FindOpPara();		        	lpData =FindOpData();		        	if(lpPara!=NULL&&lpData!=NULL)		        	{		        		for(i=0;i<MAX_DATA_ITEM;i++)		        		{		        			if(lpPara->color[i]!=0&&!(lpPara->feature&(1L<<i)))		        				break;		        		}		        		if(i<MAX_DATA_ITEM)		        		{   		        		    lpPara->feature|=1L<<i;		        		    flag=(lpPara->feature&DW_ATTR)|1L<<i;		        			DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara,flag);		        		}		        		else		        		{		        		 	lpPara =&Fx->KxPara;		        		 	lpData =&Fx->KxData;		        		 	do		        		 	{		        		 		if(lpPara->rc.right==0)		        		 			break;		        		 		lpPara=lpPara->next;		        		 		lpData=lpData->next;		        		 	}while(lpPara!=NULL&&lpData!=NULL);		        		 	if(lpPara!=NULL&&lpData!=NULL)		        		 	{		        				for(i=0;i<MAX_DATA_ITEM;i++)		        				{		        					if(lpPara->color[i]!=0&&!(lpPara->feature&(1L<<i)))		        						break;		        				}		        				if(i<MAX_DATA_ITEM)		        				{   		        		    		lpPara->feature|=1L<<i;		        		    		MakeWinSpace();		        		    		InvalidateRect(ghWndFx, NULL, TRUE);		        				}		        		 				        		 	}		        		}		        	}		        break;		        default:		        	if(ghWndSetup!=NULL)		        			        		SendMessage(ghWndSetup,WM_CHAR,wParam,lParam);		        break;		    }		break;		case WM_COMMAND:			switch(wParam)			{				case IDM_EXIT:				    SendMessage(hWnd, WM_CLOSE, 0, 0L);			        break;				case IDM_HQ_SZ:				case IDM_HQ_SH:				case IDM_HQSEL_1:				case IDM_HQSEL_2:				case IDM_HQSEL_3:				case IDM_HQSEL_4:				case IDM_HQSEL_5:				case IDM_GRAPH:					ShowWindow(hWnd,SW_HIDE);					SendMessage(ghWndHq, WM_COMMAND, wParam, 0L);				break;			                     }		break;		//case WM_DESTROY:		//	if(Fx->PaintPara.hFont) 		//		DeleteObject(Fx->PaintPara.hFont);		//	Fx->PaintPara.hFont =NULL;		//break;			}	return DefWindowProc(hWnd, message, wParam, lParam);}int CompWeek(char *date1,char *date2){	struct tm Tm[2];	time_t Time[2];	int i,last;	char temp[20],tmp[20];	for(i=0;i<2;i++)	{		if(i==0)			strcpy(tmp,date1);		else			strcpy(tmp,date2);		memset(&Tm[i],0,sizeof(struct tm));		strncpy(temp,&tmp[0],4);		Tm[i].tm_year =atoi(temp)-1900;		strncpy(temp,&tmp[4],2);		temp[2]=0;		Tm[i].tm_mon =atoi(temp) -1;		strncpy(temp,&tmp[6],2);		temp[2]=0;		Tm[i].tm_mday =atoi(temp);		Tm[i].tm_isdst =0;		if((Time[i]=mktime(&Tm[i]))==-1)			return -1;		memcpy(&Tm[i],(char *)gmtime(&Time[i]),sizeof(struct tm));       }       if(Time[0] ==Time[1])		return 0;       else if(Time[0]<Time[1])       {		if(Tm[0].tm_wday ==0)			return 1;		else			last =7 -Tm[0].tm_wday;		if((difftime(Time[1],Time[0])/3600)/24<=last)			return 0;		else			return 1;       }       else       {		if(Tm[1].tm_wday ==0)			return 1;		else			last =7 -Tm[1].tm_wday;		if((difftime(Time[0],Time[1])/3600)/24<=last)			return 0;		else			return 1;       }}int InitObjectOne(void){	long i,j;	double Ave;	    Fx->KxData.num =Fx->KxPara.dnum;     Fx->KxData.no =Fx->KxPara.no;    strcpy(Fx->KxData.gpdm,Fx->gpdm);    Fx->KxData.type =Fx->type;    Fx->KxData.range =Fx->range;    Fx->KxData.size =Fx->RecCount;	    //Fx->KxPara.feature =DW_ALL;	for(i=0;i<Fx->KxData.num;i++)	{		if(Fx->KxData.v[i]!=NULL)			_ffree(Fx->KxData.v[i]);		Fx->KxData.v[i] =(double*)_fmalloc(sizeof(double)*Fx->RecCount);		memset(Fx->KxData.v[i],0,sizeof(double)*Fx->RecCount);	}	for(i=0;i<Fx->KxData.num;i++)	{		if(i<4)		{    		for(j=0;j<Fx->RecCount&&i==0;j++)     			Fx->KxData.v[i][j]=Fx->MainData[j].ks;    		for(j=0;j<Fx->RecCount&&i==1;j++)     			Fx->KxData.v[i][j]=Fx->MainData[j].ss;    		for(j=0;j<Fx->RecCount&&i==2;j++)     			Fx->KxData.v[i][j]=Fx->MainData[j].zg;    		for(j=0;j<Fx->RecCount&&i==3;j++)     			Fx->KxData.v[i][j]=Fx->MainData[j].zd;    		Fx->KxData.method[i]=PRICE_BAR_METHOD;    	}    	else    	{    	    Ave = 0;    	    for(j=0;j<Fx->RecCount;j++)    	    {    	    	if(Fx->KxPara.periods[i]==0)    	    		break;    	    	if(j<Fx->KxPara.periods[i]-1)    	    		Ave +=Fx->MainData[j].ss;    	    	else if(j==Fx->KxPara.periods[i]-1)    	    	{    	    	    Ave +=Fx->MainData[j].ss;    	    		Fx->KxData.v[i][j]=Ave/Fx->KxPara.periods[i];    	    	}                else           			Fx->KxData.v[i][j]=Fx->MainData[j].ss/Fx->KxPara.periods[i]+Fx->KxData.v[i][j-1]-           				Fx->MainData[j-Fx->KxPara.periods[i]].ss/Fx->KxPara.periods[i];    	    }    	 	Fx->KxData.method[i]=CURVE_METHOD;    	}	}    return TRUE;}int InitObjectTwo(){	double Ave;	long i,j;    Fx->CjlData.num =Fx->CjlPara.dnum;     Fx->CjlData.no =Fx->CjlPara.no;    strcpy(Fx->CjlData.gpdm,Fx->gpdm);    Fx->CjlData.type =Fx->type;    Fx->CjlData.range =Fx->range;    Fx->CjlData.size =Fx->RecCount;	    //Fx->CjlPara.feature =DW_ALL;	for(i=0;i<Fx->CjlData.num;i++)	{		if(Fx->CjlData.v[i]!=NULL)			_ffree(Fx->CjlData.v[i]);		Fx->CjlData.v[i] =(double*)_fmalloc(sizeof(double)*Fx->RecCount);		memset(Fx->CjlData.v[i],0,sizeof(double)*Fx->RecCount);	}	for(i=0;i<Fx->CjlData.num;i++)	{		if(i<2)		{    		for(j=0;j<Fx->RecCount&&i==0;j++)     			Fx->CjlData.v[i][j]=Fx->MainData[j].cj;    		for(j=0;j<Fx->RecCount&&i==1;j++)     			Fx->CjlData.v[i][j]=Fx->MainData[j].ks-Fx->MainData[j].ss;    		Fx->CjlData.method[i]=VOULMN_BAR_METHOD;    	}    	else    	{    	    Ave = 0;    	    for(j=0;j<Fx->RecCount;j++)    	    {    	    	if(Fx->CjlPara.periods[i]==0)    	    		break;    	    	if(j<Fx->CjlPara.periods[i]-1)    	    		Ave +=Fx->MainData[j].cj;    	    	else if(j==Fx->CjlPara.periods[i]-1)    	    	{    	    	    Ave +=Fx->MainData[j].cj;    	    		Fx->CjlData.v[i][j]=Ave/Fx->CjlPara.periods[i];    	    	}                else           			Fx->CjlData.v[i][j]=Fx->MainData[j].cj/Fx->CjlPara.periods[i]+Fx->CjlData.v[i][j-1]-           				Fx->MainData[j-Fx->CjlPara.periods[i]].cj/Fx->CjlPara.periods[i];    	    }    	 	Fx->CjlData.method[i]=CURVE_METHOD;    	}	}	return TRUE;	}   int LoadData(FX *Fx){                	char temp[80];	HFILE hFile;	OFSTRUCT os;	long i,j;	K_DATA KBuff;	DAY_DATA DayBuff;		if(Fx->IsDataOk) return TRUE;

⌨️ 快捷键说明

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