📄 appmain.c
字号:
strcpy(temp,HqData[0].lpPreData[i].zqmc); PreStockName(temp); if(IsPyOk(inkey,temp)) { SeleGp[j][0]=0; SeleGp[j++][1]=i; } } for(i =0; i<HqData[1].recCount&&j<MAX_SELE_NUM; i++) { strcpy(temp,HqData[1].lpPreData[i].zqmc); PreStockName(temp); if(IsPyOk(inkey,temp)) { SeleGp[j][0]=1; SeleGp[j++][1]=i; } } if(SeleGp[1][0]!=-1) { i=DlgSelectGp(); if(i!=-1) if(SeleGp[i][0]!=-1) SetWindowText(hWndInput, HqData[SeleGp[i][0]].lpPreData[SeleGp[i][1]].zqdm); } else { if(SeleGp[0][0]!=-1) SetWindowText(hWndInput, HqData[SeleGp[0][0]].lpPreData[SeleGp[0][1]].zqdm); } if(IsWindowVisible(ghWndFx)) SendMessage(ghWndFx, WM_KEYDOWN, wParam, lParam); else if(IsWindowVisible(ghWndXlt)) SendMessage(ghWndXlt, WM_KEYDOWN, wParam, lParam); else SendMessage(ghWndHq, WM_KEYDOWN, wParam, lParam); break; } strcpy(inkey,""); SetWindowText(hWndInput, ""); } else { if(IsWindowVisible(ghWndXlt)) SendMessage(ghWndXlt, WM_KEYDOWN, wParam, lParam); else if(IsWindowVisible(ghWndFx)) SendMessage(ghWndFx, WM_KEYDOWN, wParam, lParam); else SendMessage(ghWndHq, WM_KEYDOWN, wParam, lParam); } break; case WM_KILLFOCUS: if(IsWindowVisible(ghWndFx)) SendMessage(ghWndFx, WM_KILLFOCUS, wParam, lParam); else SendMessage(ghWndXlt, WM_KILLFOCUS, wParam, lParam); break; case WM_CLOSE: if(MessageBox(hWnd, "您是否确定要退出?",APPNAME, MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_SYSTEMMODAL) ==IDNO) return 0L; UDP_Send_Exit(); SetTimer(hWnd, 6, 1000,NULL); gfOnLine = FALSE; //DestroyWindow(hWnd); break; case WM_DESTROY: WriteHqDataAll(); ghWndMain =NULL; KillTimer(hWnd, 1); KillTimer(hWnd, 2); KillTimer(hWnd, 5); KillTimer(hWnd, 6); PostQuitMessage(0); break; case WM_COMMAND: switch(wParam) { case IDM_ONLINE: SetHqEnv(); break; case IDM_VIEW_TOOLBAR: if(IsWindowVisible(ghWndToolBar)) { ShowWindow(ghWndFx, SW_HIDE); ShowWindow(ghWndToolBar, SW_HIDE); ModifyMenu(ghMenuMain, IDM_VIEW_TOOLBAR, MF_STRING|MF_BYCOMMAND, IDM_VIEW_TOOLBAR, "显示工具条"); TOOLBAR_HEIGHT=0; ReCreateChild(); } else { ShowWindow(ghWndFx, SW_HIDE); ShowWindow(ghWndToolBar, SW_SHOW); ModifyMenu(ghMenuMain, IDM_VIEW_TOOLBAR, MF_STRING|MF_BYCOMMAND, IDM_VIEW_TOOLBAR, "隐藏工具条"); TOOLBAR_HEIGHT=BUTTON_HEIGHT +12; ReCreateChild(); } 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: SendMessage(ghWndHq, WM_COMMAND, wParam, 0L); break; case IDM_HQSEL_SET_1: case IDM_HQSEL_SET_2: case IDM_HQSEL_SET_3: case IDM_HQSEL_SET_4: case IDM_HQSEL_SET_5: lpFarProc =MakeProcInstance((FARPROC)HqSelDlgProc, ghInstance); DialogBoxParam(ghInstance, MAKEINTRESOURCE(IDD_HQSEL_SET), hWnd, lpFarProc, (LPARAM)wParam); FreeProcInstance(lpFarProc); break; case IDM_HQ_FLD_SEL: lpFarProc =MakeProcInstance((FARPROC)HqFldSelDlgProc, ghInstance); DialogBox(ghInstance, MAKEINTRESOURCE(IDD_FLDSEL), hWnd, lpFarProc); FreeProcInstance(lpFarProc); break; //case IDM_SORT_REFRESH: // UDP_Client_Hq01(HqPaintData.jys, TRUE); //break; case IDM_JY: jy_running =TRUE; Jy(); jy_running =FALSE; break; case IDM_MINIMIZE: ShowWindow(hWnd, SW_MINIMIZE); break; case IDM_FX: case IDM_FX_MACD: case IDM_FX_DMI: case IDM_FX_RSI: case IDM_FX_PSY: case IDM_FX_VR: case IDM_FX_OBV: case IDM_FX_BIAS: case IDM_FX_WR: case IDM_FX_KDJ: for(i=IDM_FX_MACD;i<=IDM_FX_KDJ;i++) { if(GetMenuState(ghMenuMain, i, MF_BYCOMMAND)&MF_CHECKED) break; } if((unsigned int)i!= wParam) { CheckMenuItem(ghMenuMain, i, MF_BYCOMMAND|MF_UNCHECKED); CheckMenuItem(ghMenuMain, wParam, MF_BYCOMMAND|MF_CHECKED); if(i<=IDM_FX_KDJ) Fx->type =i; else Fx->type =IDM_FX_MACD; } Fx->IsDataOk=FALSE; SendMessage(ghWndHq,WM_KEYDOWN,VK_F9,0L); break; case IDM_FX_5: case IDM_FX_15: case IDM_FX_30: case IDM_FX_60: case IDM_FX_DAY: case IDM_FX_WEEK: case IDM_FX_MONTH: for(i=0;i<MONTH+1;i++) if(RANGE_MENU[i]==wParam) break; if(i<MONTH+1) { CheckMenuItem(ghMenuMain, wParam, MF_BYCOMMAND|MF_CHECKED); CheckMenuItem(ghMenuMain,RANGE_MENU[Fx->range], MF_BYCOMMAND|MF_UNCHECKED); Fx->range =i; } if(IsWindowVisible(ghWndFx)) { Fx->IsDataOk=FALSE; InvalidateRect(ghWndFx, NULL, TRUE); } break; case IDM_NEWS: SendMessage(ghWndHq,WM_KEYDOWN,VK_F12,0L); break; case IDM_HELP: SendMessage(ghWndHq,WM_KEYDOWN,VK_F1,0L); break; case IDM_SZDP: SendMessage(ghWndHq, WM_COMMAND, IDM_GRAPH, 3L); break; case IDM_SHDP: SendMessage(ghWndHq, WM_COMMAND, IDM_GRAPH, 4L); break; case IDM_GGXX: SendMessage(ghWndHq,WM_KEYDOWN,VK_F3,0L); break; case IDM_EXIT: SendMessage(hWnd, WM_CLOSE, 0, 0L); break; default: if(IsWindowVisible(ghWndHq)) SendMessage(ghWndHq, WM_COMMAND, wParam, lParam); //else if(IsWindowVisible(ghWndXlt)) // SendMessage(ghWndXlt, WM_COMMAND, wParam, lParam); else if(IsWindowVisible(ghWndFx)) SendMessage(ghWndFx ,WM_COMMAND, wParam, lParam); break; } break; } return DefWindowProc(hWnd, message, wParam, lParam);}LRESULT CALLBACK HqSelDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ int i, k; char tmp[256]; static int SelNum; DWORD dw; HWND hctl; int sel_num[MAX_HQSEL_REC_COUNT+1]; LPSTR tok; switch(message) { case WM_INITDIALOG: ghDlgJy =hDlg; SendMessage(hDlg,WM_USER+1,wParam,lParam); return TRUE; case WM_USER+1: SelNum =(int)lParam-IDM_HQSEL_SET_1; if(SelNum >=5) { EndDialog(hDlg, 0); return FALSE; } k =0; if(HqSelData[SelNum].recCount <=0) HqSelData[SelNum].jys =HqPaintData.jys; for(i =0; i<HqData[HqSelData[SelNum].jys].recCount; i++) { if(HqData[HqSelData[SelNum].jys].lpPreData[i].zqdm[0] ==0) continue; wsprintf(tmp, "%s-%d-%s", (LPSTR)HqData[HqSelData[SelNum].jys].lpPreData[i].zqdm, i, (LPSTR)HqData[HqSelData[SelNum].jys].lpPreData[i].zqmc); if(HqSelData[SelNum].recCount) { if(HqSelData[SelNum].recNum[k] ==i && k<HqSelData[SelNum].recCount) { SendDlgItemMessage(hDlg, IDL_SEL, LB_ADDSTRING, 0, (LPARAM)(LPSTR)tmp); k++; continue; } } SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_ADDSTRING, 0, (LPARAM)(LPSTR)tmp); } return TRUE; case WM_COMMAND: switch(wParam) { case IDC_ADD: dw =SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_GETSELCOUNT, 0, 0L); if(dw ==LB_ERR) break; if((int)dw >MAX_HQSEL_REC_COUNT) { wsprintf(tmp, "最大可选数量不能超过%d", MAX_HQSEL_REC_COUNT); ErrMsg(hDlg, tmp); break; } if(SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_GETSELITEMS, (int)dw, (LPARAM)(int FAR *)&sel_num[0]) ==LB_ERR) break; for(i =0; i<(int)dw; i++) { if(SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_GETTEXT, sel_num[i], (LPARAM)(LPSTR)tmp) ==LB_ERR) { ErrMsg(hDlg, "Error LB_GETTEXT"); break; } SendDlgItemMessage(hDlg, IDL_SEL, LB_ADDSTRING, i, (LPARAM)(LPSTR)tmp); } for(i =(int)dw -1; i>=0; i--) SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_DELETESTRING, sel_num[i], 0L); hctl =GetDlgItem(hDlg, IDOK); EnableWindow(hctl, TRUE); break; case IDC_DEL: dw =SendDlgItemMessage(hDlg, IDL_SEL, LB_GETSELCOUNT, 0, 0L); if(dw ==LB_ERR) break; if(SendDlgItemMessage(hDlg, IDL_SEL, LB_GETSELITEMS, (int)dw, (LPARAM)(int FAR *)&sel_num[0]) ==LB_ERR) break; for(i =0; i<(int)dw; i++) { if(SendDlgItemMessage(hDlg, IDL_SEL, LB_GETTEXT, sel_num[i], (LPARAM)(LPSTR)tmp) ==LB_ERR) { ErrMsg(hDlg, "Error LB_GETTEXT"); break; } SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_ADDSTRING, i, (LPARAM)(LPSTR)tmp); } for(i =(int)dw -1; i>=0; i--) SendDlgItemMessage(hDlg, IDL_SEL, LB_DELETESTRING, sel_num[i], 0L); hctl =GetDlgItem(hDlg, IDOK); EnableWindow(hctl, TRUE); break; case IDOK: k =(int)SendDlgItemMessage(hDlg, IDL_SEL, LB_GETCOUNT, 0, 0L); if(k >MAX_HQSEL_REC_COUNT) { wsprintf(tmp, "最大可选数量不能超过%d", MAX_HQSEL_REC_COUNT); ErrMsg(hDlg, tmp); break; } for(i =0; i<k; i++) { if(SendDlgItemMessage(hDlg, IDL_SEL, LB_GETTEXT, i, (LPARAM)(LPSTR)tmp) ==LB_ERR) { ErrMsg(hDlg, "get list text failed!"); break; } tok =strtok(tmp, "-"); if(!tok) break; else tok =strtok(NULL, "-"); if(!tok) break; HqSelData[SelNum].recNum[i] =atoi(tok); } HqSelData[SelNum].recCount =i; if(HqPaintData.type ==SelNum+2) SendMessage(ghWndHq, WM_HQSEL_RESET, SelNum+2, 0L); case IDCANCEL: EndDialog(hDlg, 0); ghDlgJy =NULL; break; break; } } return FALSE;} LRESULT CALLBACK HqFldSelDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ int i, j; char tmp[256]; DWORD dw; HWND hctl; LPSTR tok; switch(message) { case WM_INITDIALOG: ghDlgJy =hDlg; for(i =0; i<HqPaintData.fldCount; i++) { wsprintf(tmp, "%d-%s", HqPaintData.fldNum[i], HqTitles[HqPaintData.fldNum[i]]); SendDlgItemMessage(hDlg, IDL_SEL, LB_ADDSTRING, 0, (LPARAM)(LPSTR)tmp); } for(i =0; i<HQ_FLDS_COUNT+1; i++) { wsprintf(tmp, "%d-%s", i, HqTitles[i]); for(j =0; j<HqPaintData.fldCount; j++) { if(HqPaintData.fldNum[j] ==i) break; } if(j ==HqPaintData.fldCount) SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_ADDSTRING, 0, (LPARAM)(LPSTR)tmp); } return TRUE; /*case WM_CTLCOLOR: SetBkMode((HDC)wParam, TRANSPARENT); if(HIWORD(lParam) == CTLCOLOR_LISTBOX) return (LRESULT)DrawChild((HDC)wParam, (HWND)LOWORD(lParam)); return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH); break; case WM_NCACTIVATE: if(WinVer >3) break; DrawDlgFrame(hDlg, (BOOL)wParam, 1); return TRUE; case WM_NCPAINT: if(WinVer >3) break; DrawDlgFrame(hDlg, -1, 0); return TRUE; */ case WM_COMMAND: switch(wParam) { case IDC_ADD: dw =SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_GETCURSEL, 0, 0L); if(dw ==LB_ERR) break; i =(int)dw; if(SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_GETTEXT, i, (LPARAM)(LPSTR)tmp) ==LB_ERR) { ErrMsg(hDlg, "Error LB_GETTEXT"); break; } SendDlgItemMessage(hDlg, IDL_SEL, LB_ADDSTRING, i, (LPARAM)(LPSTR)tmp); SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_DELETESTRING, i, 0L); hctl =GetDlgItem(hDlg, IDOK); EnableWindow(hctl, TRUE); break; case IDC_DEL: dw =SendDlgItemMessage(hDlg, IDL_SEL, LB_GETCURSEL, 0, 0L); if(dw ==LB_ERR) break; i =(int)dw; if(SendDlgItemMessage(hDlg, IDL_SEL, LB_GETTEXT, i, (LPARAM)(LPSTR)tmp) ==LB_ERR) { ErrMsg(hDlg, "Error LB_GETTEXT"); break; } SendDlgItemMessage(hDlg, IDL_NOTSEL, LB_ADDSTRING, i, (LPARAM)(LPSTR)tmp); SendDlgItemMessage(hDlg, IDL_SEL, LB_DELETESTRING, i, 0L); hctl =GetDlgItem(hDlg, IDOK); EnableWindow(hctl, TRUE); break; case IDOK: j =(int)SendDlgItemMessage(hDlg, IDL_SEL, LB_GETCOUNT, 0, 0L); for(i =0; i<j; i++) { if(SendDlgItemMessage(hDlg, IDL_SEL, LB_GETTEXT, i, (LPARAM)(LPSTR)tmp) ==LB_ERR) { ErrMsg(hDlg, "get list text failed!"); break; } tok =strtok(tmp, "-"); if(!tok) break; HqPaintData.fldNum[i] =atoi(tok); } HqPaintData.fldCount =i; if(IsWindowVisible(ghWndHq)) SendMessage(ghWndHq, WM_USER +1, 0, 0L); case IDCANCEL: EndDialog(hDlg, 0); ghDlgJy =NULL; break; break; } } return FALSE;}extern void WriteMsg(LPSTR);BOOL ErrMsg(HWND hWnd, LPSTR msg){ char tmp[256]; HWND hwnd; WriteMsg(msg); if(strlen(msg)>=250) *(msg+250) =0; wsprintf(tmp, "错误: %s", msg); if(ghDlgJy) hwnd =ghDlgJy; else if(hwnd ==NULL) hwnd =ghWndMain; else hwnd =hWnd; MessageBox(hwnd, tmp, APPNAME, MB_OK|MB_ICONSTOP); return FALSE;}BOOL GetInitString(char *Entry, char *Item, char *buf){ GetPrivateProfileString(Entry, Item, "", buf, 256, "st_cl.ini"); if(*buf ==0) return FALSE; return TRUE;}BOOL PutInitString(char *Entry, char *Item, char *buf){ return WritePrivateProfileString(Entry, Item, buf, "st_cl.ini");}int CheckTime(BOOL fRead){ char tmp[15]; LPSTR tok; int tim, jys; static int recNum =0; BOOL fret =FALSE; _strtime(tmp); tok =strtok(tmp, ":"); tim =atoi(tok)*60; tim +=atoi(strtok(NULL, ":")); tim -=1; for(jys =0; jys <2; jys++) { if(tim <HqTime[jys].am_min_start || tim >HqTime[jys].pm_min_start+HqTime[jys].pm_min_count || (tim <HqTime[jys].pm_min_start && tim >HqTime[jys].am_min_start+HqTime[jys].am_min_count)) { //if(HqTime[jys].fRunning ==TRUE) //HqTime[jys].fRunning =FALSE; } else if(HqTime[jys].fRunning ==FALSE) { HqTime[jys].fRunning =TRUE; if(fRead) { //if(!gfConnecting&&gfOnLine) //{ // if(UDP_Send_Hq00(0, TRUE, FALSE, FALSE, HqPaintData.curRecCount, &recNum)<0) // { // ErrMsg(ghWndMain, "UDP_Send_Hq00 failed"); // DestroyWindow(ghWndMain); // return FALSE; // } //} fret =TRUE; } } } return fret;}int SaveSet(void){ int i, j; char tmp[6000], tmp1[256]; for(i =0; i<5; i++) { sprintf(tmp, "%d,%d", HqSelData[i].jys, HqSelData[i].recCount); for(j =0; j<HqSelData[i].recCount; j++) { //HqData[HqSelData[i].jys].lpPreData[j].zqdm //sprintf(&tmp[strlen(tmp)], ",%d", HqSelData[i].recNum[j]); sprintf(&tmp[strlen(tmp)], ",%s", HqData[HqSelData[i].jys].lpPreData[HqSelData[i].recNum[j]].zqdm); } sprintf(tmp1, "HQSEL%d", i); PutInitString("HQSEL", tmp1, tmp); } sprintf(tmp, "%d", HqPaintData.fldCount); for(i =0; i<HqPaintData.fldCount; i++) { sprintf(&tmp[strlen(tmp)], ",%d", HqPaintData.fldNum[i]); } PutInitString("HQ", "FLDS", tmp); return 0;}int GetSet(void){ int i ;//, j; char tmp[1000]; //, tmp1[20]; LPSTR tok; /* for(i =0; i<5; i++) { sprintf(tmp1, "HQSEL%d", i); if(!GetInitString("HQSEL", tmp1, tmp)) { HqSelData[i].recCount =0; continue; } if(!(tok =strtok(tmp, ","))) continue;; HqSelData[i].jys =atoi(tok); if(HqSelData[i].jys <0) HqSelData[i].jys =0; if(HqSelData[i].jys >=2) HqSelData[i].jys =1; if(!(tok =strtok(NULL, ","))) continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -