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

📄 fx.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	memset(&para,0,sizeof(PARA));                strcpy(para.name,"VR");    para.pnum =1;    para.dnum =1;    	strcpy(para.pname[0],"Vr");	para.color[0]=RGB(255,255,100);  //    para.periods[0]=26;    _lwrite(hf,&para,sizeof(PARA));    	memset(&para,0,sizeof(PARA));        strcpy(para.name,"OBV");    para.pnum =1;    para.dnum =1;    	strcpy(para.pname[0],"Obv");    	para.color[0]=RGB(255,255,100);    para.periods[0]=5;    _lwrite(hf,&para,sizeof(PARA));    	memset(&para,0,sizeof(PARA));        strcpy(para.name,"BIAS");    para.pnum =1;    para.dnum =1;    	strcpy(para.pname[0],"Bias");	para.color[0]=RGB(255,255,100),  //    para.periods[0]=10;    _lwrite(hf,&para,sizeof(PARA));    	memset(&para,0,sizeof(PARA));        strcpy(para.name,"WR");        para.pnum =3;    para.dnum =3;    	strcpy(para.pname[0],"Wr");	strcpy(para.pname[1],"Wr");		strcpy(para.pname[2],"Wr");	para.color[0]=RGB(255,255,255);  //	para.color[1]=RGB(255,255,100);  //	para.color[2]=RGB(255,100,255);  //	para.periods[0]=10;	para.periods[1]=15;	para.periods[2]=20;	_lwrite(hf,&para,sizeof(PARA));		memset(&para,0,sizeof(PARA));    strcpy(para.name,"KDJ");    para.pnum =1;    para.dnum =3;	strcpy(para.pname[0],"K");	strcpy(para.pname[1],"D");	strcpy(para.pname[2],"J");	para.color[0]=RGB(255,100,100);  //	para.color[1]=RGB(255,255,100);  //	para.color[2]=RGB(255,100,255);  //	para.periods[0]=9;	_lwrite(hf,&para,sizeof(PARA));	    _lclose(hf);    }int WritePara(PARA *para){	OFSTRUCT os;	HFILE hf;	char fname[80];	PARA temp;	int i;		sprintf(fname,"%s\\sysset.dat",szDataPath);	if((hf =OpenFile(fname,&os,OF_READWRITE|OF_SHARE_DENY_NONE))==HFILE_ERROR)		return -1;	for(i=0;;i++)		{   		memset(&temp,0,sizeof(PARA));		if(_lread(hf,&temp,sizeof(PARA))!=sizeof(PARA))			break;		if(!strncmp(temp.name,para->name,strlen(para->name)))		{   			memcpy(&para->pname[0],&temp.pname[0],(MAX_PARA_NAME+1)*MAX_DATA_ITEM);		    _lseek(hf,i*sizeof(PARA),SEEK_SET);		    _lwrite(hf,para,sizeof(PARA));			_lclose(hf);			return 0;		}	}    _lclose(hf);    return -1;}int GetAnalysePara (PARA *para){	OFSTRUCT os;	HFILE hf;	char fname[80];	PARA temp;	int i,j,k;		if(strlen(para->name)==0)	{		memset(para,0,sizeof(PARA));		return -1;	}	sprintf(fname,"%s\\sysset.dat",szDataPath);	if(access(fname,0)!=0)		WriteDefaultPara();	if((hf =OpenFile(fname,&os,OF_READ|OF_SHARE_DENY_NONE))==HFILE_ERROR)		return -1;	for(;;)		{   		memset(&temp,0,sizeof(PARA));		if(_lread(hf,&temp,sizeof(PARA))!=sizeof(PARA))			break;		if(!strncmp(temp.name,para->name,strlen(para->name)))		{			memcpy(&para->color[0],&temp.color[0],sizeof(COLORREF)*MAX_DATA_ITEM*2);			memcpy(&para->periods[0],&temp.periods[0],sizeof(int)*MAX_DATA_ITEM);			memcpy(&para->pname[0],&temp.pname[0],(MAX_PARA_NAME+1)*MAX_DATA_ITEM);			memset(&para->price[0],0,sizeof(double)*5);			para->pnum =temp.pnum;			para->dnum =temp.dnum;			_lclose(hf);			for(i=0;i<MAX_DATA_ITEM;i++)			{				if(para->color[i]!=0)					para->feature = para->feature|(1L<<i);			}			for(i=0;i<MAX_DATA_ITEM;i++)			{				for(j=0,k=0;j<MAX_DATA_ITEM&&strlen(para->pname[i])!=0;j++)					if(strstr(para->pname[j],para->pname[i])!=NULL) k++;				if(k>1)				{   					strcpy(fname,para->pname[i]);					sprintf(para->pname[i],"%d%s",para->periods[i],fname);				}			}			return 0;		}	}	_lclose(hf);	return -1;}void SetAnalysePara(PAINT_PARA *PaintPara){	RECT rc;	int i,ltitle,htitle;	HWND hwnd;	char szBuff[80];	PARA *Para;	DATA *Data;		// look for object	Para =FindOpPara();	Data =FindOpData();	if(Para==NULL||Data==NULL)		return;	//look for item		//if(PaintPara->item&DW_NAME)	//	i=(int)GetSerial(PaintPara->item);	//else 	if((i=GetNo(Para,PaintPara->item))==-1)		return;	if(Para->periods[i]==0)		return ;	ltitle = (Para->xtitle[1]-Para->xtitle[0])/2;	htitle = Para->htitle;		if(ghWndSetup!=NULL)	{		SendMessage(ghWndSetup,WM_CLOSE,0,0L);		ghWndSetup=NULL;	}	SetRect(&rc,Para->xtitle[0]-ltitle,Para->rc.top +2,				Para->xtitle[0],Para->rc.top +htitle);	ghWndSetup =CreateWindow("EDIT","",WS_VISIBLE|WS_CHILD|WS_DISABLED,			    rc.left,rc.top ,ltitle ,htitle-2,			    ghWndFx,100,ghInstance,NULL);		SetWindowPos(ghWndSetup, HWND_TOPMOST,rc.left,		rc.top ,ltitle ,htitle-2,SWP_SHOWWINDOW);	if(ghWndSetup!=NULL)	{	    SendMessage(hwnd,WM_SETFONT,PaintPara->hFont,0L);	    PaintPara->IsSetPara =TRUE;	    sprintf(szBuff,"%d",Para->periods[i]);	    SetWindowText(ghWndSetup,(LPSTR)szBuff);	    SendMessage(ghWndSetup,EM_SETSEL,(WPARAM)(UINT)0L,(LPARAM)MAKELPARAM(0,-1));	}} LRESULT CALLBACK FxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){	char tmp[256];	PAINTSTRUCT ps;	RECT rc;	HDC hDc;	LOGFONT lf;	int i, j,x,y;	static clock_t MouDownClk;	POINT pt;	DATA *lpData;	PARA *lpPara;	long flag;		     	switch(message)	{       	    case WM_CREATE:	    	MouDownClk=clock();	    break;	        case WM_USER+1:           	if(Fx->PaintPara.hFont!=NULL)        		DeleteObject(Fx->PaintPara.hFont);			memset(&lf, 0, sizeof(lf));			lf.lfHeight =13;			lf.lfWeight =FW_NORMAL;    		strcpy(lf.lfFaceName,"宋体");    					lf.lfItalic=0;			lf.lfUnderline=0;    								Fx->PaintPara.hFont =CreateFontIndirect(&lf);                		if(Fx->PaintPara.hFont ==0)    		{    			wParam=VK_RETURN;    			SendMessage(ghWndStatus, WM_KEYDOWN, wParam, lParam);    		}    			    break;	    case WM_SIZE:			GetClientRect(hWnd, &rc);			memcpy(&Fx->PaintPara.rc,&rc,sizeof(RECT));			Fx->PaintPara.rc.top+=30;			Fx->PaintPara.rc.bottom-=20;			MakeWinSpace();			if(IsWindowVisible(ghWndFx))				InvalidateRect(ghWndFx, NULL, TRUE);	    break;		case WM_SETFOCUS:			SetFocus(ghWndMain);			break;		case WM_TIMER:			if(wParam ==1)			{   				Fx->PaintPara.IsPainting=FALSE;				KillTimer(ghWndFx,1);			}			if(wParam ==2)				PostMessage(hWnd,WM_USER+1,NULL,NULL);								break;		case WM_KILLFOCUS:		    if(Fx->PaintPara.IsScroll)		     	DrawScroll(Fx,SCROLL_CANCEL);            if(Fx->PaintPara.IsUpDown)                UpDown(Fx,0);		break;		case WM_CTLCOLOR:			if(HIWORD(lParam) ==CTLCOLOR_STATIC)			{				hDc =(HDC)wParam;				SetTextColor(hDc, RGB(255, 0, 0));				SelectObject(hDc, Fx->PaintPara.hFont);				return (LRESULT)(HBRUSH)GetStockObject(WHITE_BRUSH);			}		break;		case WM_LBUTTONDOWN:			if(!Fx->PaintPara.IsSetPara)			{				x=LOWORD(lParam);				y=HIWORD(lParam);					pt.x=x=LOWORD(lParam);				pt.y=y=HIWORD(lParam);				lpPara =FindOpPara();				lpData =FindOpData();				if(lpPara!=NULL&&lpData!=NULL)				{   					UpDown(Fx,0);					Fx->PaintPara.object=0;					flag =Fx->PaintPara.item&lpPara->feature&DW_OBJECT;					flag =flag|Fx->PaintPara.item&DW_ATTR;					DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara,flag&~DW_SELE&~DW_FRAME);				}				lpPara =&Fx->KxPara;				lpData =&Fx->KxData;				do				{				    if(PtInRect(&lpPara->rc,pt))				    	break;					lpPara =lpPara->next;					lpData =lpData->next;				}while(lpPara!=NULL&&lpData!=NULL);				if(lpPara!=NULL&&lpData!=NULL)				{					flag=GetObjectItem(x,y,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara);					Fx->PaintPara.object=lpPara->no;					Fx->PaintPara.item =flag;					flag =flag&lpPara->feature&DW_OBJECT;					flag =flag|Fx->PaintPara.item&DW_ATTR;					DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara,DW_SELE|flag);				}			}		break;				case WM_RBUTTONDOWN:		    pt.x=x=LOWORD(lParam);			pt.y=y=HIWORD(lParam);		break;				case WM_PAINT:		    //if(!LoadData(Fx))		    //{		    //    wParam=VK_RETURN;		    //    Msg(0,0,"没有分析数据!",MSG_TIME|MSG_FOCU|MSG_HORT,RGB(255,0,0));		    //    ValidateRect(hWnd,NULL);		    //}            //else            //{			hDc=BeginPaint(hWnd, &ps);			if(!LoadData(Fx))			{				SetTextColor(hDc,RGB(255,0,0));				SetBkColor(hDc,RGB(255,255,255));				strcpy(tmp,"正在通讯,请稍候...");				TextOut(hDc,0,2,tmp,strlen(tmp));			}			else			{				lpData =&Fx->KxData;				lpPara =&Fx->KxPara;                                GetDiagramName(lpPara,Fx->range,Fx->gpmc);				do				{					if(lpPara->rc.right !=0)						DrawDiagram(hDc,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara,0L);					lpData =lpData->next;					lpPara =lpPara->next;									}while(lpData!=NULL&&lpPara!=NULL);							}			EndPaint(hWnd, &ps);		break;   		case WM_KEYDOWN:		    switch(wParam)		    {		    	case VK_F1:					ShowWindow(ghWndHelp,SW_SHOW);					sprintf(tmp,"%s\\help.txt",szDataPath);										i=LoadFile(tmp,0,"帮助/[ESC]退出");				return 0L;			    case VK_F2:				    	SendMessage(ghWndMain,WM_COMMAND,IDM_JY,NULL);				    					return 0L;				case VK_F3:				    SendMessage(ghWndXlt,WM_KEYDOWN,VK_F3,0L);				return 0L;				case VK_F4:					if(Fx->range<MONTH)						Fx->range++;					else						Fx->range=MIN_5;					Fx->IsDataOk =FALSE;                    InvalidateRect(ghWndFx, NULL, TRUE);                case VK_F9:                 	if(Fx->PaintPara.item&DW_OBJECT)                 	{                    	if(SetColor(ghWndFx)==0)                    	{                    		lpPara =FindOpPara();                    		lpData =FindOpData();                    		if(lpPara!=NULL&lpData!=NULL)                    		{                    			if(Fx->PaintPara.item&DW_NAME)                    				i=-1;                    			else                    			{									i=GetNo(lpPara,Fx->PaintPara.item);									j=(int)GetSerial(Fx->PaintPara.item);								}									if(i!=-1&j==0|j==1)									lpPara->color[i+j*10] =cc.rgbResult;								WritePara(lpPara);								flag =lpPara->feature&DW_ATTR|(1L<<i);								DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara,flag);                    		}                    	}                    }				break;				case VK_F11:				    SetAnalysePara(&Fx->PaintPara);				break;				case VK_F12:					SendMessage(ghWndXlt, WM_KEYDOWN, VK_F12, 0L);				break;						     	case VK_ESCAPE:		     		if(Fx->PaintPara.IsSetPara)		     		{						SendMessage(ghWndSetup,WM_CLOSE,0,0L);						ghWndSetup=NULL;		     			Fx->PaintPara.IsSetPara =FALSE;		     			break;		     		}		     	    if(Fx->PaintPara.IsScroll)		     	    {		     	    	DrawScroll(Fx,SCROLL_CANCEL);		     	    	break;		     	    }			     	    else if(Fx->PaintPara.IsUpDown)		     	    {		     	    	UpDown(Fx,0);		     	    	break;		     	    }			     	//case VK_F9:		     			     	case VK_RETURN:					if(HqData[GraphData.jys].recCount <=0) break;		     	    if(Fx->PaintPara.IsScroll)		     	    	DrawScroll(Fx,SCROLL_CANCEL);					strcpy(tmp,"");					if(ghWndSetup!=NULL&&Fx->PaintPara.IsSetPara)					{						GetWindowText(ghWndSetup, &tmp[0], sizeof(tmp));						SetWindowText(ghWndSetup,"");						SetWindowText(hWndInput,"");						if(atoi(tmp)==0) break;												lpPara =FindOpPara();						lpData =FindOpData();						if(lpPara!=NULL)						{    							i=GetNo(lpPara,Fx->PaintPara.item);							if(i!=-1)								lpPara->periods[i] =atoi(tmp);							WritePara(lpPara);							GetAnalysePara (lpPara);						}						SendMessage(ghWndSetup,WM_CLOSE,0,0L);						ghWndSetup=NULL;												if(lpData==NULL||lpData->no!=lpPara->no)							break;												if(lpPara->no ==1)							InitObjectOne();						else if(lpPara->no ==2)							InitObjectTwo();						else						{		     				for(j=0;j<Fx->PaintPara.num;j++)		     				{		     					if(lpData->type ==INIT_TABLE[j].type)		     						break;		     				}							if(j<Fx->PaintPara.num)								(*INIT_TABLE[j].CreateData)(Fx->MainData,Fx->RecCount,lpData,lpPara);							else								break;						}						flag =lpPara->feature&DW_ATTR|(1L<<i);						DrawDiagram(NULL,Fx->CurRecPrt,Fx->ShowDot,lpPara,lpData,&Fx->PaintPara,flag);						Fx->PaintPara.IsSetPara =FALSE;						break;					}					GetWindowText(hWndInput, &tmp[0], sizeof(tmp));					if(tmp[0] ==0)					{			  			ShowWindow(ghWndMmp, SW_HIDE);						ShowWindow(ghWndCj, SW_HIDE);

⌨️ 快捷键说明

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