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

📄 status.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
字号:
#include <windows.h>#include <string.h>#include <stdio.h>#include "resource.h"#include "global.h"#include "hq.h"#include "hq_cl.h"#include "status.h"#include "appmain.h"#define STATUS_CLASS	"CSTATUS"extern HINSTANCE ghInstance;extern HWND ghWndMain, ghWndStatus;extern BOOL ErrMsg(HWND, LPSTR);extern int UDP_Send_Dp(void);extern int UDP_Send_Gra00(int jys, int rec_num);extern BOOL IsSzRead,IsShRead;BOOL RegisterStatus(void){	WNDCLASS wc;		memset(&wc, 0, sizeof(wc));		wc.style =CS_HREDRAW | CS_VREDRAW;	wc.lpfnWndProc =StatusWndProc;	wc.lpszClassName =STATUS_CLASS;	wc.hbrBackground =GetStockObject(BLACK_BRUSH);	wc.hInstance = ghInstance;	wc.lpszMenuName = NULL;	wc.hCursor = LoadCursor(NULL, IDC_ARROW);        	wc.hIcon = LoadIcon(ghInstance, MAKEINTRESOURCE(IDR_MAINFRAME));	if(!RegisterClass(&wc)) return FALSE;		return TRUE;}BOOL CreateWndStatus(HWND hWnd){                          	int x ;	HWND hwnd;	RECT rc;		GetClientRect(ghWndMain, &rc);	x =GetSystemMetrics(SM_CXSCREEN);		if(ghWndStatus==NULL)	{		hwnd =CreateWindow(STATUS_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,						0, 						rc.bottom -STATUS_HEIGHT-MSG_HEIGHT,						x, 						STATUS_HEIGHT,						hWnd, NULL, ghInstance, NULL);		if(hwnd ==NULL)		{			ErrMsg(hWnd, "不能建立状态条");			return FALSE;		}			ghWndStatus =hwnd;	}	SetWindowPos(ghWndStatus, HWND_TOP,0,rc.bottom -STATUS_HEIGHT-MSG_HEIGHT,		0,0,SWP_NOSIZE);	ShowWindow(hwnd, SW_SHOW);		return TRUE;}LRESULT CALLBACK StatusWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){	PAINTSTRUCT ps;	RECT rc;	HPEN hPen;	char tmp[100];	int i, x, x1, width;	TEXTMETRIC tm;	HBRUSH hBrush;	LOGFONT lf;	static HFONT hFont =NULL;	HDC hMemDC;			switch(message)	{		case WM_CREATE:			GetClientRect(hWnd, &rc);					break;			break;		case WM_SETFOCUS:			SetFocus(ghWndMain);		break;		case WM_COMMAND:			if(wParam ==100)			{				switch(HIWORD(lParam))				{					case EN_SETFOCUS:						SetFocus(ghWndMain);					break;				}			}		break;		case WM_LBUTTONDOWN:			if(IsSzRead&&IsShRead)			{				if(wParam == MK_LBUTTON)				{					GetClientRect(hWnd, &rc);									if((int)LOWORD(lParam)> (int)((int)rc.right /2-30))						SendMessage(ghWndHq, WM_COMMAND, IDM_HQ_SH, 0L);					else						SendMessage(ghWndHq, WM_COMMAND, IDM_HQ_SZ, 0L);				}			}		break; 		case WM_RBUTTONDOWN:		    if(IsWindowVisible(ghWndHq))				SendMessage(ghWndHq, WM_KEYDOWN, VK_NEXT, 0L);		break; 		case WM_PAINT:			if(HqPaintData.recCount <=0) break;			BeginPaint(hWnd, &ps);			if(hFont==NULL)			{				memset(&lf, 0, sizeof(lf));				lf.lfHeight =10;				lf.lfWeight =FW_NORMAL;               				strcpy(lf.lfFaceName, "Ms Sans Serif");				hFont =CreateFontIndirect(&lf);					}			GetClientRect(hWnd, &rc);			GetTextMetrics(ps.hdc, &tm);			x1 =rc.right/2-4;//-30;			hPen=CreatePen(PS_SOLID, 1, RGB(180, 180, 180));			SelectObject(ps.hdc, hPen);			MoveTo(ps.hdc, 0, rc.bottom);//tm.tmHeight+6);			LineTo(ps.hdc, rc.right, rc.bottom);//tm.tmHeight+6);			MoveTo(ps.hdc, 0, 1);			LineTo(ps.hdc, rc.right, 1);			MoveTo(ps.hdc, x1+1, 2);			LineTo(ps.hdc, x1+1, rc.bottom-1);//tm.tmHeight+5);			SelectObject(ps.hdc, GetStockObject(WHITE_PEN));			DeleteObject(hPen);			MoveTo(ps.hdc, 0, 0);			LineTo(ps.hdc, rc.right, 0);			MoveTo(ps.hdc, 0, rc.bottom-1);//tm.tmHeight+5);			LineTo(ps.hdc, rc.right, rc.bottom-1);//tm.tmHeight+5);			MoveTo(ps.hdc, x1, 2);			LineTo(ps.hdc, x1, rc.bottom-1);//tm.tmHeight+5);						SetTextColor(ps.hdc, RGB(255, 0, 255));			SetBkColor(ps.hdc, RGB(0, 0, 0));			SetTextAlign(ps.hdc, TA_RIGHT|TA_TOP);			x =tm.tmAveCharWidth*2+4+1;			TextOut(ps.hdc, x, (rc.bottom-tm.tmHeight)/2, "深", 2);			TextOut(ps.hdc, x1+x, (rc.bottom-tm.tmHeight)/2, "沪", 2);			x +=tm.tmAveCharWidth*8+1;			//指数			SetBkColor(ps.hdc, RGB(0, 0, 0));			for(i =0; i<2; i++)			{				sprintf(tmp, "%.2f", DpData[i].zs[0]);				if(DpData[i].sd[0] <0)				{					SetTextColor(ps.hdc, RGB(0, 255, 0));					//strcat(tmp, "↓");				}				else if(DpData[i].sd[0] >0)				{					SetTextColor(ps.hdc, RGB(255, 0, 0));					//strcat(tmp, "↑");				}				else					SetTextColor(ps.hdc, RGB(255, 255, 255));				TextOut(ps.hdc, x1*i+x, 2, tmp, strlen(tmp));			}			//指数升跌			x +=tm.tmAveCharWidth*6+5;			for(i =0; i<2; i++)			{				//if(i==1)				//{				//	if(HqData[1].recCount!=0)				//	{								//		DpData[1].sd[0]=				//		 	DpData[1].zs[0]-HqData[1].lpPreData[0].zrsp;				//	}				//}										if(DpData[i].sd[0] <0)				{					SetTextColor(ps.hdc, RGB(0, 255, 0));					//strcat(tmp, "↓");				}				else if(DpData[i].sd[0] >0)				{					SetTextColor(ps.hdc, RGB(255, 0, 0));					//strcat(tmp, "↑");				}				else					SetTextColor(ps.hdc, RGB(255, 255, 255));				sprintf(tmp, "  %.2f", DpData[i].sd[0]);				TextOut(ps.hdc, x1*i+x+10, 2, tmp, strlen(tmp));			}			//总成交金额			x +=tm.tmAveCharWidth*12+3;			SetTextColor(ps.hdc, RGB(0, 180, 180));			for(i =0; i<2; i++)			{				sprintf(tmp, "%.1f万", (float)DpData[i].cjzje/10);				TextOut(ps.hdc, x1*i+x, 2, tmp, strlen(tmp));				}						SelectObject(ps.hdc, GetStockObject(WHITE_PEN));						hBrush =CreateSolidBrush(RGB(0, 255, 0));			SelectObject(ps.hdc, hBrush);			x+=2;			width =x1 -2-x;			//内外盘比			for(i =0; i<2; i++)				Rectangle(ps.hdc, x1*i+x, (rc.bottom-tm.tmHeight)/3-1,							x1*i+x+width, (rc.bottom+tm.tmHeight)/3);						SelectObject(ps.hdc, GetStockObject(WHITE_BRUSH));			DeleteObject(hBrush);			SelectObject(ps.hdc, GetStockObject(NULL_PEN));			hBrush =CreateSolidBrush(RGB(255, 0, 0));			SelectObject(ps.hdc, hBrush);			for(i =0; i<2; i++)				Rectangle(ps.hdc, x1*i+x+1, (rc.bottom-tm.tmHeight)/3,							x1*i+x+1+(int)(DpData[i].npbl*width), (rc.bottom+tm.tmHeight)/3);						SelectObject(ps.hdc, GetStockObject(WHITE_BRUSH));			DeleteObject(hBrush);			SelectObject(ps.hdc, hFont);			SetBkColor(ps.hdc, RGB(0, 0, 0));			SetTextAlign(ps.hdc, TA_LEFT|TA_BOTTOM);						hMemDC =CreateCompatibleDC(ps.hdc);						for(i =0; i<2; i++)			{				SelectObject(hMemDC, hBmpUp);				BitBlt(ps.hdc, x1*i+25, rc.bottom-12,						10, tm.tmHeight, hMemDC, 0, 0, SRCCOPY);				sprintf(tmp, "%d", DpData[i].upCount);				SetTextColor(ps.hdc, RGB(255, 0, 0));				TextOut(ps.hdc, x1*i+30+tm.tmAveCharWidth, rc.bottom-1, tmp, strlen(tmp));				SelectObject(hMemDC, hBmpDown);				BitBlt(ps.hdc, x1*i+25+tm.tmAveCharWidth*5, rc.bottom-12,					10, tm.tmHeight, hMemDC, 0, 0, SRCCOPY);				sprintf(tmp, "%d", DpData[i].downCount);				SetTextColor(ps.hdc, RGB(0, 255, 0));				TextOut(ps.hdc, x1*i+30+tm.tmAveCharWidth*6, rc.bottom-1, tmp, strlen(tmp)); 				SelectObject(hMemDC, hBmpEqual);				BitBlt(ps.hdc, x1*i+25+tm.tmAveCharWidth*10, rc.bottom-12,					10, tm.tmHeight, hMemDC, 0, 0, SRCCOPY);				sprintf(tmp, "%d", DpData[i].equalCount);				SetTextColor(ps.hdc, RGB(255, 255, 0));				TextOut(ps.hdc, x1*i+30+tm.tmAveCharWidth*11, rc.bottom-1, tmp, strlen(tmp));			}			DeleteObject(hMemDC);			SetTextColor(ps.hdc, RGB(0, 180, 180));			SetTextAlign(ps.hdc, TA_RIGHT|TA_BOTTOM);			for(i =0; i<2; i++)			{				sprintf(tmp, "%ld手", DpData[i].cjss);				TextOut(ps.hdc, x1*i+x-25, rc.bottom-2, tmp, strlen(tmp));			}			SetTextColor(ps.hdc, RGB(255, 255, 0));			TextOut(ps.hdc, x1-2, rc.bottom-2, "Esc:菜单", strlen("Esc:菜单"));			TextOut(ps.hdc, x1*2, rc.bottom-2, "F1:帮助", strlen("F1 帮助"));			EndPaint(hWnd, &ps);		break;		case WM_DESTROY:			if(hFont) DeleteObject(hFont);			hFont =NULL;		break;		default:		break;	}	return DefWindowProc(hWnd, message, wParam, lParam);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -