www.pudn.com > inet_stock.zip > MMP.C


#include 
#include 
#include 
#include "resource.h"
#include "global.h"
#include "hq.h"
#include "hq_cl.h"
#include "mmp.h"
#include "toolbar.h"

#define MMP_CLASS	"CMMP"

extern HINSTANCE ghInstance;
extern HWND ghWndMain, ghWndMmp;
extern BOOL ErrMsg(HWND, LPSTR);
extern BOOL IsZsRec(int jys, int rec_num);

BOOL RegisterMmp(void)
{
	WNDCLASS wc;
	
	memset(&wc, 0, sizeof(wc));
	
	wc.lpfnWndProc =MmpWndProc;
	wc.lpszClassName =MMP_CLASS;
	wc.hbrBackground =GetStockObject(BLACK_BRUSH);
	wc.hInstance = ghInstance;
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);        
	if(!RegisterClass(&wc)) return FALSE;
	
	return TRUE;
}

BOOL CreateWndMmp(HWND hWnd)
{                          
	int x ;
	HWND hwnd;
	HDC hDC;
	TEXTMETRIC tm;
	int x0,y0,x1,y1;
	RECT rc;
		
	x =GetSystemMetrics(SM_CXSCREEN);

	hDC =GetDC(hWnd);
	GetTextMetrics(hDC, &tm);
	ReleaseDC(hWnd, hDC);
	              
	GetWindowRect(ghWndXlt,&rc);	
	x0 =rc.right;
	y0 =STATUS_HEIGHT +TOOLBAR_HEIGHT;
	
	x1 =x*1/3-30-1;
	y1 = tm.tmHeight*6+STATUS_HEIGHT;

    if(ghWndMmp ==NULL)
   	{
		hwnd =CreateWindow(MMP_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,
						x0, y0, x1, y1,hWnd, NULL, ghInstance, NULL);	
		if(hwnd ==NULL)
		{
			ErrMsg(hWnd, "Error create mmp window");
			return FALSE;
		}	
		ghWndMmp =hwnd;
	}
	else
	{  
		SetWindowPos(ghWndMmp, (HWND) NULL,x0, y0, x1, y1,NULL);	
	}
	return TRUE;
}

LPSTR MmpTitles[]=
{
	"买卖类别", "价位", "数量", NULL
};

extern int UDP_Send_Mmp(int, int);

LRESULT CALLBACK MmpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	char tmp[256];
	PAINTSTRUCT ps;
	DWORD dw;
	int i, j, x, y;
	RECT rc;
	HPEN hPen;
	//TEXTMETRIC tm;	
	
	switch(message)
	{
		case WM_SETFOCUS:
			SetFocus(ghWndMain);
		break;
		case WM_SIZE:
			if(IsWindowVisible(ghWndMmp))
				InvalidateRect(hWnd, NULL, TRUE);
		break;
		case WM_READ_OK:
			InvalidateRect(hWnd, NULL, FALSE);
		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);
			
			//SetTextColor(ps.hdc, RGB(255, 255, 255));
			SetBkMode(ps.hdc, TRANSPARENT);
			//TextOut(ps.hdc, (rc.right-x)/2, 3, tmp, strlen(tmp));
			
			SetTextAlign(ps.hdc, TA_RIGHT|TA_BOTTOM);
			for(i =0; i<3; i++)
			{
				wsprintf(tmp, "%d", 3-i);
				SetTextColor(ps.hdc, RGB(255, 255, 0));
				TextOut(ps.hdc, rc.right*2/7, (y+2)*(i+1),
						tmp, strlen(tmp));
				SetTextColor(ps.hdc, RGB(180, 0, 0));
				if(MmpData.jys ==0) j=i; else j=2-i;
				if(MmpData.jwSell[i] >HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
					SetTextColor(ps.hdc, RGB(255, 0, 0));
				else if(MmpData.jwSell[i] =
					HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
				SetTextColor(ps.hdc, RGB(255, 0, 255));	
			else
			   	SetTextColor(ps.hdc, RGB(0, 255, 255));			   
			TextOut(ps.hdc, 6, (y+2)*3+2, tmp, strlen(tmp));
		
			sprintf(tmp,"%s%.2f","卖出:",HqData[MmpData.jys].lpRefData[MmpData.recNum].zdjm);
			if(HqData[MmpData.jys].lpRefData[MmpData.recNum].zdjm>=
					HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
				SetTextColor(ps.hdc, RGB(255, 0, 255));	
			else
			   	SetTextColor(ps.hdc, RGB(0, 255, 255));
			TextOut(ps.hdc, 2+(int)(rc.right-rc.left)/2, (y+2)*3+2, tmp, strlen(tmp));
            
			MoveTo(ps.hdc, (int)(rc.right-rc.left)/2, (y+2)*3+1);
			LineTo(ps.hdc, (int)(rc.right-rc.left)/2, (y+2)*4+1);
            
			SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
			DeleteObject(hPen);
						
			SetTextAlign(ps.hdc, TA_TOP|TA_RIGHT);
			for(i =0; i<3; i++)
			{
				wsprintf(tmp, "%d", i+1);
				SetTextColor(ps.hdc, RGB(255, 255, 0));
				TextOut(ps.hdc, rc.right*2/7, (y+2)*(i+3+1)+2, tmp, strlen(tmp));
				if(MmpData.jwBuy[i] >HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
					SetTextColor(ps.hdc, RGB(255, 0, 0));
				else if(MmpData.jwBuy[i]