📄 fx.c
字号:
memset(¶,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,¶,sizeof(PARA)); memset(¶,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,¶,sizeof(PARA)); memset(¶,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,¶,sizeof(PARA)); memset(¶,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,¶,sizeof(PARA)); memset(¶,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,¶,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(¶->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(¶->color[0],&temp.color[0],sizeof(COLORREF)*MAX_DATA_ITEM*2); memcpy(¶->periods[0],&temp.periods[0],sizeof(int)*MAX_DATA_ITEM); memcpy(¶->pname[0],&temp.pname[0],(MAX_PARA_NAME+1)*MAX_DATA_ITEM); memset(¶->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 + -