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

📄 cj.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
字号:
#include <windows.h>#include <stdio.h>#include <string.h>#include "resource.h"#include "global.h"#include "hq.h"#include "cj.h"#include "hq_cl.h"#include "toolbar.h"#include "appmain.h"#define CJ_CLASS	"CCJ"extern HINSTANCE ghInstance;extern HWND ghWndMain, ghWndCj;extern BOOL ErrMsg(HWND, LPSTR);extern BOOL IsZsRec(int jys, int rec_num);BOOL RegisterCj(void){	WNDCLASS wc;		memset(&wc, 0, sizeof(wc));		wc.lpfnWndProc =CjWndProc;	wc.lpszClassName =CJ_CLASS;	wc.hbrBackground =GetStockObject(BLACK_BRUSH);	wc.hInstance = ghInstance;	wc.hCursor = LoadCursor(NULL, IDC_ARROW);        	if(!RegisterClass(&wc)) return FALSE;		return TRUE;}extern int CapHig ;BOOL CreateWndCj(HWND hWnd){                          	int x, y;	HWND hwnd;	int x0,y0,x1,y1;	TEXTMETRIC tm;	HDC hDC;	RECT rc,rc1;			x =GetSystemMetrics(SM_CXSCREEN);		GetClientRect(ghWndMain,&rc);	y =rc.bottom -rc.top;	GetWindowRect(ghWndXlt,&rc1);	hDC =GetDC(hWnd);	GetTextMetrics(hDC, &tm);	ReleaseDC(hWnd, hDC);    x0 =rc1.right;    y0 =tm.tmHeight*14+STATUS_HEIGHT +TOOLBAR_HEIGHT+2;    x1 =x*1/3-30-1;    //y1 =y-y0 -STATUS_HEIGHT -6 -GetSystemMetrics(SM_CYCAPTION);    y1 =rc.bottom -STATUS_HEIGHT-y0 -MSG_HEIGHT;    	if(y1<=tm.tmHeight*2) y1 =tm.tmHeight*2;		if(ghWndCj ==NULL)	{		hwnd =CreateWindow(CJ_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,						x0, y0, x1, y1,						hWnd, NULL, ghInstance, NULL);								if(hwnd ==NULL)		{			ErrMsg(hWnd, "不能建立成交明细窗口");			return FALSE;		}			ghWndCj =hwnd;	}	else	{		SetWindowPos(ghWndCj, (HWND) NULL,x0, y0, x1, y1,NULL);		}	return TRUE;}LRESULT CALLBACK CjWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){	int i, k;	long lc;	char tmp[256];	PAINTSTRUCT ps;	DWORD dw;	int x, y;	RECT rc;	HPEN hPen;	static int cjRecNum =0;	static BOOL fInBottom =FALSE;	BOOL isb;	float zjjg;	TEXTMETRIC tm;           	LPSTR lpCjTitles[] ={"时间","价格","数量",NULL};		           	switch(message)	{		case WM_CREATE:			cjRecNum =0;		break;		case WM_SETFOCUS:			SetFocus(ghWndMain);		break;		case WM_TIMER:		break;		case WM_READ_OK:			cjRecNum =0;			fInBottom =FALSE;			InvalidateRect(hWnd, NULL, TRUE);		break;		case WM_SIZE:			if(IsWindowVisible)				InvalidateRect(hWnd, NULL, TRUE);		break;		case WM_KEYDOWN:			switch(wParam)			{				case VK_UP:					fInBottom =FALSE;					if(--cjRecNum <0)					{						cjRecNum =0;						return 0L;					}				break;				case VK_DOWN:					if(fInBottom) return 0L;					k =0;					for(i =0; i<GraphData.minEnd; i++)						if(GraphData.lpGraData[i].lc) k++;					if(++cjRecNum >=k)						cjRecNum =k-1;										break;                                				default: return 0L;			}			InvalidateRect(hWnd, NULL, TRUE);		break;				case WM_PAINT:			BeginPaint(hWnd, &ps);			GetClientRect(hWnd, &rc);						hPen =CreatePen(PS_SOLID, 2, RGB(180, 180, 180));			SelectObject(ps.hdc, hPen);			SelectObject(ps.hdc, GetStockObject(NULL_BRUSH));			Rectangle(ps.hdc, 2, 2, rc.right-2, rc.bottom-1);			SelectObject(ps.hdc, GetStockObject(WHITE_PEN));			DeleteObject(hPen);			MoveTo(ps.hdc, rc.right, 0);			LineTo(ps.hdc, 0, 0);			LineTo(ps.hdc, 0, rc.bottom);			hPen =CreatePen(PS_SOLID, 2, RGB(80, 80, 80));			SelectObject(ps.hdc, hPen);			LineTo(ps.hdc, rc.right-1, rc.bottom-1);			LineTo(ps.hdc, rc.right-1, 0);			SelectObject(ps.hdc, GetStockObject(WHITE_PEN));			DeleteObject(hPen);						strcpy(tmp, "成交");			dw =GetTextExtent(ps.hdc, tmp, strlen(tmp));			x =LOWORD(dw); y =HIWORD(dw);						SetBkMode(ps.hdc, OPAQUE);			SetBkColor(ps.hdc, RGB(0, 0, 0));			k =0;			i =0;			isb =FALSE;			if(GraphData.minEnd)			{				GetTextMetrics(ps.hdc, &tm);				while(1)				{					if(k >=GraphData.minEnd)					{						fInBottom =TRUE;						break;					}					lc =GraphData.lpGraData[GraphData.minEnd-1-k].lc;					zjjg =GraphData.lpGraData[GraphData.minEnd-1-k].zjjg;					isb =GraphData.lpGraData[GraphData.minEnd-1-k].BS;					if((y+1)*(i-cjRecNum) +tm.tmHeight> rc.bottom) break;					if(i<cjRecNum){i++;k++; continue;}					// time					SetTextColor(ps.hdc, RGB(0, 180, 180));					wsprintf(tmp, "%02d:%02d",						GraphData.lpGraData[GraphData.minEnd-1-k].tim/60,						GraphData.lpGraData[GraphData.minEnd-1-k].tim%60);					SetTextAlign(ps.hdc, TA_LEFT|TA_TOP);					TextOut(ps.hdc, 10, (y)*(i-cjRecNum)+5, tmp, strlen(tmp));					//zjjg					if(zjjg >0)						SetTextColor(ps.hdc, RGB(255, 0, 0));					else if(zjjg <0) SetTextColor(ps.hdc, RGB(0, 255, 0));					else SetTextColor(ps.hdc, RGB(255, 255, 0));					sprintf(tmp, "%.2f", zjjg+GraphData.GraHead.zrsp);					SetTextAlign(ps.hdc, TA_RIGHT|TA_TOP);					TextOut(ps.hdc, rc.right/2+10, (y)*(i-cjRecNum)+5, tmp, strlen(tmp));					//lc					strcpy(tmp, " ");					sprintf(&tmp[1], "%ld", lc);					if(isb)						SetTextColor(ps.hdc, RGB(255, 0, 0));					else SetTextColor(ps.hdc, RGB(0, 255, 0));					TextOut(ps.hdc, rc.right-10, (y)*(i-cjRecNum)+5, tmp, strlen(tmp));										i++;k++;				}			}			EndPaint(hWnd, &ps);		break;			}	return DefWindowProc(hWnd, message, wParam, lParam);}

⌨️ 快捷键说明

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