📄 fx.c
字号:
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 + -