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

📄 hq_cl.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
📖 第 1 页 / 共 4 页
字号:
			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 + -