📄 hq_cl.c
字号:
m =0; //for(j =0; j<HqPaintData.curFldNum; j++) // m +=HqFldLens[j]; SetTextColor(ps.hdc, RGB(0, 255, 0)); hDC =CreateCompatibleDC(ps.hdc); n =-1; while(i <=HqPaintData.curRecNum+HqPaintData.curRecCount && i<HqPaintData.recCount) { for(j =HqPaintData.curFldNum; j<HqPaintData.fldCount; j++) { x =HqPaintData.rcTitles[j].right+HqPaintData.x0; //if(x >rc.right) break; y =(HqPaintData.rcTitles[0].bottom+ITEM_SPACE_Y) *(i-HqPaintData.curRecNum+1); lpTmp =GetHqFldPos(ps.hdc, HqPaintData.jys, HqPaintData.sortData.key[i], HqPaintData.fldNum[j]); /*if(HqData[HqPaintData.jys].isChanged[HqPaintData.sortData.key[i]*HQ_REF_ITEM_COUNT+j] >0) SetTextColor(ps.hdc, RGB(255, 0, 0)); // red else if(HqData[HqPaintData.jys].isChanged[HqPaintData.sortData.key[i]*HQ_REF_ITEM_COUNT+j] <0) SetTextColor(ps.hdc, RGB(0, 255, 0)); // blue else SetTextColor(ps.hdc, RGB(255, 255, 255)); // black */ l =HqPaintFldLens[HqPaintData.fldNum[j]]-strlen(tmp); for(k =0; k<l; k++) tmp[k] =0x20; switch(HqFldTypes[HqPaintData.fldNum[j]]) { case FLD_TYPE_STRING: strcpy(&tmp[0], lpTmp); break; case FLD_TYPE_FLOAT: sprintf(&tmp[k], "%.2f", *(float *)lpTmp); if(strncmp(&tmp[k],"9999.99",7)==0) strcpy(&tmp[k],"-.--"); if(HqPaintData.fldNum[j] ==7) { if(HqData[HqPaintData.jys].isJgChanged[i] >0) { SelectObject(hDC, hBmpUp); BitBlt(ps.hdc, x+2, y+2, 10, 10, hDC, 0, 0, SRCCOPY); } else if(HqData[HqPaintData.jys].isJgChanged[i] <0) { SelectObject(hDC, hBmpDown); BitBlt(ps.hdc, x+2, y+2, 10, 10, hDC, 0, 0, SRCCOPY); } else { SelectObject(ps.hdc, GetStockObject(BLACK_BRUSH)); SelectObject(ps.hdc, GetStockObject(NULL_PEN)); Rectangle(ps.hdc, x+2, y+2, x+12, y+12); } n =j+1; } break; case FLD_TYPE_LONG: if(HqPaintData.fldNum[j] ==14) sprintf(&tmp[k], "%.1f", (float)*(long *)lpTmp/10); else sprintf(&tmp[k], "%ld", *(long *)lpTmp); break; } //strcpy(&tmp[k], lpTmp); if(j ==0) SetRect(&rc1, rc.left, y, x, y+HqPaintData.rcTitles[0].bottom+1); else if(j ==n) SetRect(&rc1, HqPaintData.rcTitles[j-1].right+HqPaintData.x0+12, y, x, y+HqPaintData.rcTitles[0].bottom+1); else SetRect(&rc1, HqPaintData.rcTitles[j-1].right+HqPaintData.x0, y, x, y+HqPaintData.rcTitles[0].bottom+1); if(HqPaintData.fldNum[j] ==10) { SelectObject(ps.hdc, GetStockObject(NULL_PEN)); SelectObject(ps.hdc, GetStockObject(BLACK_BRUSH)); Rectangle(ps.hdc, rc1.left, rc1.top, rc1.right, rc1.bottom); ExtTextOut(ps.hdc, x, y, ETO_CLIPPED, &rc1, tmp, strlen(tmp), NULL); } else ExtTextOut(ps.hdc, x, y, ETO_CLIPPED|ETO_OPAQUE, &rc1, tmp, strlen(tmp), NULL); //lpTmp +=HqFldLens[j]; if(x >rc.right) break; } i++; } DeleteObject(hDC); EndPaint(hWnd, &ps); break; case WM_COMMAND: if(wParam >=IDM_SORT_ZQDM && wParam <=IDM_SORT_CJJE) { if(!IsWindowVisible(hWnd)) return 0L; CheckMenuItem(ghMenuHq, HqPaintData.sortData.fldID+IDM_SORT_ZQDM, MF_BYCOMMAND|MF_UNCHECKED); HqPaintData.sortData.fldID =(int)wParam -IDM_SORT_ZQDM; HqSort(); CheckMenuItem(ghMenuHq, wParam, MF_BYCOMMAND|MF_CHECKED); InvalidateRect(hWnd, NULL, TRUE); return 0L; } i =HqPaintData.type; switch(wParam) { 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: case IDM_HQ_FLD_SEL: case IDM_JY: case IDM_MINIMIZE: case IDM_EXIT: SendMessage(ghWndMain, WM_COMMAND, wParam, lParam); return 0L; case IDM_GRAPH: if(!HqPaintData.recCount) return 0L; if(lParam==3) { for(i=HqData[0].recCount-1;i>=0;i--) { if(strncmp("9901",HqData[0].lpPreData[i].zqdm,4)==0) break; } if(i<0) return 0L; GraphData.jys =MmpData.jys=0; } if(lParam==4) { for(i=0;i<HqData[1].recCount;i++) { if(strncmp("000001",HqData[1].lpPreData[i].zqdm,6)==0) { break; } } if(i>=HqData[1].recCount) return 0L; GraphData.jys =MmpData.jys=1; } if(lParam==0) { i =HqPaintData.sortData.key[HqPaintData.curSelRec+HqPaintData.curRecNum]; GraphData.jys =MmpData.jys =HqPaintData.jys; } GraphData.recNum =MmpData.recNum =i; UDP_Send_Gra00(GraphData.jys, i); if(!IsWindowVisible(ghWndXlt)) ShowWindow(ghWndXlt, SW_SHOW); else InvalidateRect(ghWndXlt, NULL, TRUE); if(!IsWindowVisible(ghWndJlt)) ShowWindow(ghWndJlt, SW_SHOW); else InvalidateRect(ghWndJlt, NULL, TRUE); if(!IsWindowVisible(ghWndLitHq)) ShowWindow(ghWndLitHq, SW_SHOW); else InvalidateRect(ghWndLitHq, NULL, TRUE); SendMessage(ghWndLitHq, WM_READ_OK, GraphData.jys, GraphData.recNum); if(IsZsRec(GraphData.jys, i)) { ShowWindow(ghWndMmp, SW_HIDE); ShowWindow(ghWndCj, SW_HIDE); if(!IsWindowVisible(ghWndZs)) ShowWindow(ghWndZs, SW_SHOW); else InvalidateRect(ghWndZs, NULL, TRUE); if(!IsWindowVisible(ghWndMaxMin)) ShowWindow(ghWndMaxMin, SW_SHOW); else InvalidateRect(ghWndMaxMin, NULL, TRUE); } else { ShowWindow(ghWndZs, SW_HIDE); ShowWindow(ghWndMaxMin, SW_HIDE); if(!IsWindowVisible(ghWndMmp)) ShowWindow(ghWndMmp, SW_SHOW); else InvalidateRect(ghWndMmp, NULL, TRUE); if(!IsWindowVisible(ghWndCj)) ShowWindow(ghWndCj, SW_SHOW); else InvalidateRect(ghWndCj, NULL, TRUE); } if(IsWindowVisible(ghWndHq)) ShowWindow(hWnd, SW_HIDE); return 0L; case IDM_SORT_UP: if(!IsWindowVisible(hWnd)) return 0L; CheckMenuItem(ghMenuHq, IDM_SORT_DOWN, MF_BYCOMMAND|MF_UNCHECKED); HqPaintData.sortData.type =SORT_UP; HqSort(); CheckMenuItem(ghMenuHq, IDM_SORT_UP, MF_BYCOMMAND|MF_CHECKED); InvalidateRect(hWnd, NULL, TRUE); return 0L; case IDM_SORT_DOWN: if(!IsWindowVisible(hWnd)) return 0L; CheckMenuItem(ghMenuHq, IDM_SORT_UP, MF_BYCOMMAND|MF_UNCHECKED); HqPaintData.sortData.type =SORT_DOWN; HqSort(); CheckMenuItem(ghMenuHq, IDM_SORT_DOWN, MF_BYCOMMAND|MF_CHECKED); InvalidateRect(hWnd, NULL, TRUE); return 0L; case IDM_HQ_SZ: HqPaintData.type =HQ_SZALL; break; case IDM_HQ_SH: HqPaintData.type =HQ_SHALL; break; case IDM_HQSEL_1: HqPaintData.type =HQ_SEL_1; break; case IDM_HQSEL_2: HqPaintData.type =HQ_SEL_2; break; case IDM_HQSEL_3: HqPaintData.type =HQ_SEL_3; break; case IDM_HQSEL_4: HqPaintData.type =HQ_SEL_4; break; case IDM_HQSEL_5: HqPaintData.type =HQ_SEL_5; break; default: return 0L; } ShowWindow(ghWndFx,SW_HIDE); ShowWindow(ghWndJlt, SW_HIDE); ShowWindow(ghWndXlt, SW_HIDE); ShowWindow(ghWndCj, SW_HIDE); ShowWindow(ghWndLitHq,SW_HIDE); ShowWindow(ghWndMmp, SW_HIDE); ShowWindow(ghWndZs, SW_HIDE); ShowWindow(ghWndMaxMin, SW_HIDE); CheckMenuItem(ghMenuHq, i+IDM_HQ_SZ, MF_BYCOMMAND|MF_UNCHECKED); HqSort(); HqPaintData.curRecNum =0; HqPaintData.curFldNum =0; HqPaintData.curSelRec =0; HqPaintData.x0 =0; if(!IsWindowVisible(hWnd)) { ShowWindow(hWnd, SW_SHOW); } CheckMenuItem(ghMenuHq, wParam, MF_BYCOMMAND|MF_CHECKED); KillTimer(hWnd, 5); SetTimer(hWnd, 5, 1000, NULL); InvalidateRect(hWnd, NULL, TRUE); break; case WM_DESTROY: if(recList) free(recList); } return DefWindowProc(hWnd, message, wParam, lParam);}LPSTR HqTitles[HQ_FLDS_COUNT+2] ={ "代码","昨收","今开","最高","最低","叫买","叫卖","成交","涨幅", "总手","现手", "内盘", "外盘", "委比", "金额(万)","涨跌",NULL}; int DrawTitle(HWND hWnd, HDC hDC){ int i, jys; RECT rc; char temp[20]; jys =HqPaintData.jys; GetClientRect(hWnd, &rc); //SetBkMode(hDC, TRANSPARENT); SetBkMode(hDC, OPAQUE); SetTextColor(hDC, RGB(255, 0, 255)); SetBkColor(hDC,RGB(0,0,0)); SetTextAlign(hDC, TA_LEFT|TA_TOP); i =HqPaintData.curRecNum; for(;i <HqPaintData.curRecNum+HqPaintData.curRecCount && i<HqPaintData.recCount; i++) { if(IsZsRec(HqPaintData.jys, HqPaintData.sortData.key[i])) SetTextColor(hDC, RGB(255, 0, 0)); else SetTextColor(hDC, RGB(255, 0, 255)); strcpy(temp,HqData[jys].lpPreData[HqPaintData.sortData.key[i]].zqmc); TextOut(hDC, 0,(HqPaintData.rcTitles[0].bottom+ITEM_SPACE_Y) *(i-HqPaintData.curRecNum+1),temp, strlen(HqData[jys].lpPreData[HqPaintData.sortData.key[i]].zqmc)); } DrawSelRect(hWnd, hDC, HqPaintData.curSelRec, FALSE); SetTextColor(hDC, RGB(0, 255, 255)); TextOut(hDC, 0, 0, "证券名称", strlen("证券名称")); rc.left =LOWORD(GetTextExtent(hDC, "证券名称", 8))+2;//X0_TITLE-ITEM_SPACE_X; IntersectClipRect(hDC, rc.left, rc.top, rc.right, rc.bottom); SetTextAlign(hDC, TA_RIGHT|TA_TOP); for(i =HqPaintData.curFldNum; i<HqPaintData.fldCount; i++) { if(HqPaintData.rcTitles[i].left+HqPaintData.x0 >rc.right) break; if(HqPaintData.sortData.fldID ==HqPaintData.fldNum[i]) { if(HqPaintData.sortData.type ==SORT_UP) SetTextColor(hDC, RGB(255, 0, 0)); else SetTextColor(hDC, RGB(0, 0, 255)); } else SetTextColor(hDC, RGB(0, 255, 255)); TextOut(hDC, HqPaintData.rcTitles[i].right+HqPaintData.x0, 0, HqTitles[HqPaintData.fldNum[i]], strlen(HqTitles[HqPaintData.fldNum[i]])); } return rc.left;}extern int CompString(LPSTR, LPSTR);void DrawSelRect(HWND hWnd, HDC hDC, int sel_num, int bClr){ RECT rc; DWORD dw; HPEN hPen; HDC hdc; int height, width,i; char temp[20]; if(HqPaintData.recCount <=0) return; if(hDC ==NULL) hdc =GetDC(hWnd); else hdc =hDC; SelectObject(hdc,hHqFont); dw =GetTextExtent(hdc, "证券代码", 8); GetClientRect(hWnd, &rc); height=HqPaintData.itemHeight-ITEM_SPACE_Y; width =LOWORD(dw); SelectObject(hdc, GetStockObject(NULL_BRUSH)); i=HqPaintData.curSelRec+HqPaintData.curRecNum; if(bClr) { hPen =CreatePen(PS_SOLID, 0, RGB(0, 0, 0)); SetBkColor(hdc,RGB(0,0,0)); if(IsZsRec(HqPaintData.jys, HqPaintData.sortData.key[i])) SetTextColor(hdc, RGB(255, 0, 0)); else SetTextColor(hdc, RGB(255, 0, 255)); } else { hPen =CreatePen(PS_SOLID, 0, RGB(180, 180, 180)); SetBkColor(hdc,RGB(255,255,255)); SetTextColor(hdc, RGB(0,0, 255)); } SelectObject(hdc, hPen); MoveTo(hdc, 0, (sel_num+1)*(height+ITEM_SPACE_Y)+height+1); LineTo(hdc, rc.right-1, (sel_num+1)*(height+ITEM_SPACE_Y)+height+1); rc.right =width +rc.left; rc.top =(sel_num+1)*(height+ITEM_SPACE_Y); rc.bottom =rc.top+height+1; if(bClr) FillRect(hdc,&rc,GetStockObject(BLACK_BRUSH)); else FillRect(hdc,&rc,GetStockObject(WHITE_BRUSH)); strcpy(temp,HqData[HqPaintData.jys].lpPreData[HqPaintData.sortData.key[i]].zqmc); for(i=strlen(temp);i<8;i++) temp[i]=' '; TextOut(hdc, 0,(HqPaintData.rcTitles[0].bottom+ITEM_SPACE_Y) *(HqPaintData.curSelRec+1),temp,8); SelectObject(hdc, GetStockObject(WHITE_PEN)); DeleteObject(hPen); if(hDC ==NULL) ReleaseDC(hWnd, hdc); if(hDC !=NULL) { SelectObject(hDC, GetStockObject(WHITE_PEN)); SetBkColor(hDC,RGB(0,0,0)); }}int HqSort(void){ int i,j; int jys; switch(HqPaintData.type) { case HQ_SZALL: HqPaintData.recCount =HqData[0].recCount; jys =HqPaintData.jys =0; for(i =0,j=0; i<HqData[0].recCount; i++) { if(HqPaintData.filter ==HQ_ALL) HqPaintData.sortData.key[j++] =i; if(HqPaintData.filter ==HQ_A) { if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='1') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='2') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='3') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='8') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='9') continue; HqPaintData.sortData.key[j++] =i; } if(HqPaintData.filter ==HQ_B) { if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='2') HqPaintData.sortData.key[j++] =i; else continue; } if(HqPaintData.filter ==HQ_BOND) { if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='1') HqPaintData.sortData.key[j++] =i; else continue; } } HqPaintData.recCount =j; break; case HQ_SHALL: HqPaintData.recCount =HqData[1].recCount; jys =HqPaintData.jys =1; for(i =0,j=0; i<HqData[1].recCount; i++) { if(HqPaintData.filter ==HQ_ALL) HqPaintData.sortData.key[j++] =i; if(HqPaintData.filter ==HQ_A) { if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='0') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='1') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='2') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='7') continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='9') continue; HqPaintData.sortData.key[j++] =i; } if(HqPaintData.filter ==HQ_B) { if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]=='9') HqPaintData.sortData.key[j++] =i; else continue; } if(HqPaintData.filter ==HQ_BOND) { if(atoi(HqData[HqPaintData.jys].lpPreData[i].zqdm)<=10) continue; if(HqData[HqPaintData.jys].lpPreData[i].zqdm[0]<='2') HqPaintData.sortData.key[j++] =i; else continue; } } HqPaintData.recCount =j; break; case HQ_SEL_1: HqPaintData.recCount =HqSelData[0].recCount; for(i =0; i<HqPaintData.recCount; i++) HqPaintData.sortData.key[i] =HqSelData[0].recNum[i]; jys =HqPaintData.jys =HqSelData[0].jys; break; case HQ_SEL_2: HqPaintData.recCount =HqSelData[1].recCount; for(i =0; i<HqPaintData.recCount; i++) HqPaintData.sortData.key[i] =HqSelData[1].recNum[i]; jys =HqPaintData.jys =HqSelData[1].jys; break; case HQ_SEL_3: HqPaintData.recCount =HqSelData[2].recCount; for(i =0; i<HqPaintData.recCount; i++) HqPaintData.sortData.key[i] =HqSelData[2].recNum[i]; jys =HqPaintData.jys =HqSelData[2].jys; break; case HQ_SEL_4: HqPaintData.recCount =HqSelData[3].recCount; for(i =0; i<HqPaintData.recCount; i++) HqPaintData.sortData.key[i] =HqSelData[3].recNum[i]; jys =HqPaintData.jys =HqSelData[3].jys; break; case HQ_SEL_5: HqPaintData.recCount =HqSelData[4].recCount; for(i =0; i<HqPaintData.recCount; i++) HqPaintData.sortData.key[i] =HqSelData[4].recNum[i]; jys =HqPaintData.jys =HqSelData[4].jys; break; } //if(HqPaintData.sortData.fldID >=HqPaintData.fldCount) // return 0; if(HqFldTypes[HqPaintData.sortData.fldID] ==FLD_TYPE_FLOAT) SortFloat(&HqPaintData.sortData, jys); else if(HqFldTypes[HqPaintData.sortData.fldID] ==FLD_TYPE_LONG) SortLong(&HqPaintData.sortData, jys);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -