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


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include "resource.h"
#include "hq.h"
#include "hq_cl.h"
#include "jy_cl.h"
#include "jy_tcp.h"
#include "msg.h"
#include "pctcp.h"
#include "des.h"

JY_ANS_CHKUSR curChkUsrRes;
JY_ASK_CHKUSR curChkUsrData;

ZQSXX Qsxx;
char Addr[MAX_ZQS_COUNT][15];
extern BOOL gfTest;
extern int STATUS_HEIGHT;
int JyFunc=0,JyOffLineTime=250,JyQs=0;

#define NULL_FUNC		0	          
#define BUY_FUNC		1
#define SELL_FUNC		2
#define CANCEL_FUNC		3          
#define	CJCX_FUNC		4
#define WTCX_FUNC		5
#define YECX_FUNC		6
#define CHGPWD_FUNC		7	
#define EXIT_FUNC		8

#define MAX_IDEL_TIME	120

void CenterWindow(HWND hDlg);

int gnTimers =0;

extern BOOL udpread_stop;
extern HINSTANCE ghInstance;
extern HWND ghWndMain, ghWndHq, ghWndStatus, hWndInput;

extern BOOL IsZsRec(int jys, int recNum);
extern BOOL ErrMsg(HWND, LPSTR);
void FAR PASCAL JyDlgDrawEntireItem(LPDRAWITEMSTRUCT lpdis, int inflate);
int ShowBitmap(HDC hDC, int left, int top, HBITMAP hBmp);
void DrawFrame(HDC hDC, HWND hWnd);
extern void DrawTime(int ret);
extern char szDataPath[128];
extern int ConnectToJyHost(char *HostName);

HBITMAP hBmpBrush =NULL;
HBRUSH hBrushBkGround =NULL;
HWND ghDlgJy =NULL;
extern HWND ghWndXlt, ghWndJlt, ghWndCj, ghWndMmp, ghWndLitHq;

extern int sdHq;

#define JY_BTN_COUNT	14

HBITMAP hBmpSel =NULL, hBmpFoc =NULL;

void FAR PASCAL BtnDrawEntireItem(LPDRAWITEMSTRUCT lpdis);
void FAR PASCAL BtnFocusState(LPDRAWITEMSTRUCT lpdis);
void FAR PASCAL BtnSelectionState(LPDRAWITEMSTRUCT lpdis);
void DrawBtnNormal(LPDRAWITEMSTRUCT lpdis, BOOL fDrawFrame);
void DrawBtnFocus(LPDRAWITEMSTRUCT lpdis);
void DrawBtnUnFocus(LPDRAWITEMSTRUCT lpdis);
void DrawBtnSelected(LPDRAWITEMSTRUCT lpdis);
HBRUSH DrawChild(HDC hDC, HWND hWnd);
BOOL isWndClass(HWND hWnd,LPSTR ClassName);

extern int WinVer;
extern char  *JyReadBuf;
extern unsigned char DesKey[9];

BOOL JyInit(void)
{   
	
	JyReadBuf  =(char *)_fmalloc(MAX_READ_BUF_SIZE+1);
	
	memset(&curChkUsrRes, 0, sizeof(curChkUsrRes));
	curChkUsrRes.flag =-1;
	memset(&curChkUsrData, 0, sizeof(curChkUsrData));
	memset(&Qsxx,0,sizeof(ZQSXX));
	
	hBmpBrush =LoadBitmap(ghInstance, MAKEINTRESOURCE(IDB_BACKGROUND));
	if(hBmpBrush ==NULL)
	{
		ErrMsg(NULL, "load background bitmap failed");
		return FALSE;
	}
	hBrushBkGround =CreatePatternBrush(hBmpBrush);
	if(hBrushBkGround ==NULL)
	{
		ErrMsg(NULL, "Create background brush failed");
		return FALSE;
	}
	
	
	if(access("DES3W16.DLL",0)==0)
		hDesDll = LoadLibrary("DES3W16.DLL");
	
	//if(hDesDll==NULL)
	//{
	//	ErrMsg(ghWndMain, "can not load DES dll"); 
	//	return FALSE;
	//}
	//else
	if(hDesDll>32)
	{
		desinit= (lpfnDES_INIT)GetProcAddress(hDesDll,"desinit");
		ecbencode =(lpfnDES_ECB)GetProcAddress(hDesDll,"ecbencode");
		if(!desinit||!ecbencode)
		{
			ErrMsg(ghWndMain, "can not load DES FUNC"); 
			FreeLibrary(hDesDll);
			hDesDll=NULL;
			//return FALSE;
		}
    }
    else
    	hDesDll =NULL;
    	
	strcpy(DesKey,"98124325");
	hBmpSel =LoadBitmap(ghInstance, MAKEINTRESOURCE(IDB_SEL));
	hBmpFoc =LoadBitmap(ghInstance, MAKEINTRESOURCE(IDB_FOC));
	return TRUE;
}

int InitQsInfo(void)
{ 
	int i;
	char buf[256];
	char item[40],file[80];
	
	sprintf(file,"%s\\sysinfo.dat",szDataPath);
	for(i=0;i=0)
	{
		if(HqTime[jys].fRunning ==FALSE)
		{
			curChkUsrRes.flag =-1;
			ErrMsg(ghWndMain, "请您注意,已经收市!");
			return -1;
		}
		curChkUsrRes.jys =jys;
		if(jys !=HqPaintData.jys)
		{
			HqPaintData.curSelRec =0;
			HqPaintData.curRecNum =0;
			if(HqPaintData.jys =0) SendMessage(ghWndHq, WM_COMMAND, IDM_HQ_SZ, 0L);
			else SendMessage(ghWndHq, WM_COMMAND, IDM_HQ_SH, 0L);
		}
	}
	
	return jys;
}

int DlgSelectZqs(void)
{
	int zqs =0;
	
	lpDlgProc =MakeProcInstance((FARPROC)SelZqsDlgProc, ghInstance);
	zqs =DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_ZQSXX), ghWndMain,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
	
    return(zqs);
}

int DlgChkUsr(void)
{
	curChkUsrRes.flag =-1;
	lpDlgProc =MakeProcInstance((FARPROC)ChkUsrDlgProc, ghInstance);
	DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_CHKUSR), ghWndMain,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
	
	return curChkUsrRes.flag;
}

BOOL IsCanPwdChg =FALSE;

int DlgChgPwd(void)
{

	lpDlgProc =MakeProcInstance((FARPROC)AskPwdDlgProc, ghInstance);
	DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_ASKPWD), ghDlgJy,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
    
    if(IsCanPwdChg)
    {
		lpDlgProc =MakeProcInstance((FARPROC)ChgPwdDlgProc, ghInstance);
		DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_CHGPWD), ghDlgJy,
				lpDlgProc);
		FreeProcInstance(lpDlgProc);
	}
	
	return 0;
}

int DlgJy(void)
{
	lpDlgProc =MakeProcInstance((FARPROC)JyDlgProc, ghInstance);
	DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_DLG), ghWndMain,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
	
	return 0;
}

int DlgBuySell(int bs)
{
	lpDlgProc =MakeProcInstance((FARPROC)BuySellDlgProc, ghInstance);
	DialogBoxParam(ghInstance, MAKEINTRESOURCE(IDD_JY_BUYSELL), ghDlgJy,
				lpDlgProc, bs);
	FreeProcInstance(lpDlgProc);
	
	return 0;
}

int DlgCancel(void)
{
	lpDlgProc =MakeProcInstance((FARPROC)CancelDlgProc, ghInstance);
	DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_CANCEL), ghDlgJy,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
	
	return 0;
}

int DlgYecx(void)
{
	lpDlgProc =MakeProcInstance((FARPROC)YecxDlgProc, ghInstance);
	DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_YECX), ghDlgJy,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
	
	return 0;
}

int DlgCjcx(void)
{
	lpDlgProc =MakeProcInstance((FARPROC)CjcxDlgProc, ghInstance);
	DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_CJCX), ghDlgJy,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
	
	return 0;
}

int DlgWtcx(void)
{
	lpDlgProc =MakeProcInstance((FARPROC)WtcxDlgProc, ghInstance);
	DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_WTCX), ghDlgJy,
				lpDlgProc);
	FreeProcInstance(lpDlgProc);
	
	return 0;
}

LRESULT CALLBACK SelJysDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	LPDRAWITEMSTRUCT lpdis;
	HWND hctl;

    HFONT hFont;
    LOGFONT lf;
	RECT rc;
			
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			
			//if(Qsxx.zqsid[0]==0)
			//{
			//	if(InitQsInfo()!=0)
			//		SendJyQsxx();
			//}
			CenterWindow(hDlg);
		return TRUE;

		case WM_CTLCOLOR:
			SetBkMode((HDC)wParam, TRANSPARENT);
			switch(HIWORD(lParam))
			{
				case CTLCOLOR_DLG:
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
				case CTLCOLOR_MSGBOX:
				case CTLCOLOR_STATIC:	
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
			}
		return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
        
		case WM_DRAWITEM:
			lpdis = (LPDRAWITEMSTRUCT)lParam;

			if (lpdis->itemID == -1)
				BtnFocusState(lpdis);
			else
			{
				switch (lpdis->itemAction)
				{
					case ODA_DRAWENTIRE: 
						BtnDrawEntireItem(lpdis);
					break;

					case ODA_SELECT:
						BtnSelectionState(lpdis);
					break;

					case ODA_FOCUS:
						BtnFocusState(lpdis);
					break;
				}
			}
		break;
		
		case WM_PAINT:
			BeginPaint(hDlg, &ps);			
			DrawFrame(ps.hdc, hDlg);
			
			GetClientRect(hDlg, &rc);		
			
			memset(&lf,0,sizeof(lf));
			lf.lfEscapement =0;
			lf.lfOrientation =0;
			lf.lfStrikeOut =0;
			lf.lfUnderline =0;
			lf.lfItalic =0;
			lf.lfCharSet = ANSI_CHARSET;
			lf.lfPitchAndFamily = FF_SCRIPT;
						
			lf.lfWeight =FW_NORMAL;            
			strcpy(lf.lfFaceName, "Termianl");			
       		lf.lfHeight=18;       		
       		hFont =CreateFontIndirect(&lf);
       		SelectObject(ps.hdc,hFont);

			SetBkMode(ps.hdc,TRANSPARENT);       		
			
       		SetTextColor(ps.hdc,RGB(0,0,0));
			TextOut(ps.hdc,rc.left +10,rc.top+10,"请您选择交易所",14);

       		SetTextColor(ps.hdc,RGB(255,255,255));
			TextOut(ps.hdc,rc.left +10-1,rc.top+10-1,"请您选择交易所",14);
			
			DeleteObject(hFont);
			EndPaint(hDlg, &ps);
		break;
		
		case WM_COMMAND:
			switch(wParam)
			{
				case IDOK:
					hctl =GetFocus();
					SendMessage(hDlg, WM_COMMAND, GetWindowWord(hctl, GWW_ID), 0L);
				break;
				case IDC_SH:
					EndDialog(hDlg, 2);
				break;
				case IDC_SZ:
					EndDialog(hDlg, 1);
				break;
				case IDCANCEL:
					EndDialog(hDlg, 0);
					ghDlgJy =NULL;
				break;
			}
		break;
	}
	
	return FALSE;	
}


LRESULT CALLBACK SelZqsDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	LPDRAWITEMSTRUCT lpdis;
    char temp[20];
    int i;
	static HBRUSH 	hBrush;
	HWND hctl; 	
	DWORD dw;
			
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			CenterWindow(hDlg);
			hBrush=CreateSolidBrush(RGB(0,255,255));			
		
			for(i=0;i0)
				SendDlgItemMessage(hDlg, IDC_LIST1, LB_SETCURSEL,(WPARAM)0L,
					(LPARAM)(LPSTR)0L);			 
			 
			//hctl =GetDlgItem(hDlg, IDC_LIST1);
			//SetFocus(hctl);
			return TRUE;

		case WM_CTLCOLOR:
			SetBkMode((HDC)wParam, TRANSPARENT);
			switch(HIWORD(lParam))
			{
				case CTLCOLOR_DLG:
				case CTLCOLOR_MSGBOX:
				case CTLCOLOR_STATIC:	
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
				case CTLCOLOR_LISTBOX:
					return (LRESULT)hBrush;	
			}
		return (LRESULT)NULL;
        
		case WM_DRAWITEM:
			lpdis = (LPDRAWITEMSTRUCT)lParam;

			if (lpdis->itemID == -1)
				BtnFocusState(lpdis);
			else
			{
				switch (lpdis->itemAction)
				{
					case ODA_DRAWENTIRE: 
						BtnDrawEntireItem(lpdis);
					break;

					case ODA_SELECT:
						BtnSelectionState(lpdis);
					break;

					case ODA_FOCUS:
						BtnFocusState(lpdis);
					break;
				}
			}
		break;

		case WM_PAINT:
			BeginPaint(hDlg, &ps);			
			DrawFrame(ps.hdc, hDlg);			
			hctl =GetDlgItem(hDlg, IDC_LIST1);
			SetFocus(hctl);
			EndPaint(hDlg, &ps);
		break;
		
		case WM_COMMAND:
			switch(wParam)
			{
				case IDOK:
					dw =SendDlgItemMessage(hDlg,IDC_LIST1,LB_GETCURSEL, 0 , 0);
					if(dw!=LB_ERR)
					{
						SendDlgItemMessage(hDlg,IDC_LIST1,LB_GETTEXT,(WPARAM)dw,(LPARAM)(LPSTR)temp);
						curChkUsrData.zqsid=(int)dw +1;
						DeleteObject(hBrush);
						ghDlgJy =NULL;						
						EndDialog(hDlg,(int)dw+1);
					}	
					else 
					{
					    ErrMsg(ghWndMain,"选择券商出错");					    
						DeleteObject(hBrush);
						ghDlgJy =NULL;						
						EndDialog(hDlg, 0);
					}
				break;	
				case IDCANCEL:    
					DeleteObject(hBrush);
					ghDlgJy =NULL;					
					EndDialog(hDlg, 0);
				break;
			}
		break;
	}
	
	return FALSE;	
}


////////将交易密码和股东代码存在本地,以后不再由server检验密码
LRESULT CALLBACK ChkUsrDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	int ret;
	char tmp[60];
	HWND hctl;
	int idFocus;
	LPDRAWITEMSTRUCT lpdis;
	HFONT hFont;
	LOGFONT lf;	
	static HBRUSH hBrush;	    
	RECT rc;
	HDC hDC;
	DWORD dw;
		    
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			curChkUsrData.gddm[0] =0;
			curChkUsrData.jymm[0] =0;
			curChkUsrData.jys =curChkUsrRes.jys;
			curChkUsrData.sdHq =sdHq;
			SendDlgItemMessage(hDlg, IDC_INPUT, EM_LIMITTEXT, MAX_GDDM_SIZE, 0L);
			SendDlgItemMessage(hDlg, IDC_INPUT1, EM_LIMITTEXT, MAX_JYMM_SIZE, 0L);
			CenterWindow(hDlg);
			gnTimers =0;
			hBrush=CreateSolidBrush(RGB(0,255,255));
		return TRUE;

		case WM_CTLCOLOR:
			SetBkMode((HDC)wParam, TRANSPARENT);
			switch(HIWORD(lParam))
			{
				case CTLCOLOR_DLG:
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
				case CTLCOLOR_MSGBOX:
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
				case CTLCOLOR_LISTBOX:
				case CTLCOLOR_EDIT:	
					return (LRESULT)(HBRUSH)hBrush;
			}
		return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);

		case WM_DRAWITEM:
			lpdis = (LPDRAWITEMSTRUCT)lParam;

			if (lpdis->itemID == -1)
				BtnFocusState(lpdis);
			else
			{
				switch (lpdis->itemAction)
				{
					case ODA_DRAWENTIRE: 
						BtnDrawEntireItem(lpdis);
					break;

					case ODA_SELECT:
						BtnSelectionState(lpdis);
					break;

					case ODA_FOCUS:
						BtnFocusState(lpdis);
					break;
				}
			}
		break;
		
		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);

			GetClientRect(hDlg, &rc);
			SetBkMode(ps.hdc,TRANSPARENT);            
            
            memset(&lf,0,sizeof(lf));
			strcpy(lf.lfFaceName, "Termianl"); 
			lf.lfWeight =FW_NORMAL;
			lf.lfCharSet = ANSI_CHARSET;
			lf.lfPitchAndFamily = FF_SCRIPT;
			
       		lf.lfHeight=24;       		
       		hFont =CreateFontIndirect(&lf);
       		SelectObject(ps.hdc,hFont);
       		
			SetTextColor(ps.hdc,RGB(0,0,0));
			TextOut(ps.hdc,rc.left+20,44,"股东代码",8);
			SetTextColor(ps.hdc,RGB(255,255,255));
			TextOut(ps.hdc,rc.left+20-1,44-1,"股东代码",8);

			SetTextColor(ps.hdc,RGB(0,0,0));
			TextOut(ps.hdc,rc.left+20,84,"交易密码",8);
			SetTextColor(ps.hdc,RGB(255,255,255));
			TextOut(ps.hdc,rc.left+20-1,84-1,"交易密码",8);
			
			if(curChkUsrData.zqsid !=0)
			{
				strcpy(tmp,&Qsxx.zqsjc[curChkUsrData.zqsid -1][0]);
				strcat(tmp,"欢迎您");
			}
			
			SetTextColor(ps.hdc,RGB(0,0,0));
			TextOut(ps.hdc,rc.left+20,rc.top +15,tmp,strlen(tmp));
			SetTextColor(ps.hdc,RGB(255,255,255));
			TextOut(ps.hdc,rc.left+20-1,rc.top +15-1,tmp,strlen(tmp));									
						
			DeleteObject(hFont);
			EndPaint(hDlg, &ps);
		break;

		case WM_TIMER:
			hDC =GetDC(hDlg);
			    
			GetClientRect(hDlg, &rc);
			rc.right =rc.right -40;
			rc.bottom =rc. bottom -15;				
				
			strcpy(tmp,"88");
			dw=GetTextExtent(hDC,tmp,strlen(tmp));
				
			rc.left =rc.right -LOWORD(dw)-12;
			rc.top = rc.bottom -HIWORD(dw);
			        
			SelectObject(hDC,GetStockObject(WHITE_PEN));    
			MoveTo(hDC,rc.left+1,rc.top-1);
			LineTo(hDC,rc.right+1,rc.top-1);
			    
			MoveTo(hDC,rc.left-1,rc.top+1);				
			LineTo(hDC,rc.left-1,rc.bottom+1);			    
				
			SelectObject(hDC,GetStockObject(BLACK_PEN));    
			MoveTo(hDC,rc.right+1,rc.top+1);
			LineTo(hDC,rc.right+1,rc.bottom+1);
			    
			MoveTo(hDC,rc.left+1,rc.bottom+1);
			LineTo(hDC,rc.right+1,rc.bottom+1);			    
			    				
			wsprintf(tmp,"%d",MAX_JY_WAIT_TIME-gnTimers);
			if(MAX_JY_WAIT_TIME-gnTimers<10)
			{
			    tmp[1]=tmp[0];
			    tmp[0]='0';
			}
			    
			SetBkColor(hDC,RGB(255,0,255));
			SetTextColor(hDC,RGB(255,255,0));
			    
			dw=GetTextExtent(hDC,tmp,strlen(tmp));
			    
			ExtTextOut(hDC,(int)(rc.right-rc.left-LOWORD(dw))/2+rc.left, rc.top, ETO_CLIPPED|ETO_OPAQUE, &rc,tmp , 2, NULL);
			
			ReleaseDC(hDlg, hDC);
		
			if(gnTimers++ >=MAX_JY_WAIT_TIME)
			{
				SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
				break;
			}

		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDOK:
					hctl =GetFocus();
					idFocus =GetWindowWord(hctl, GWW_ID);
					if(idFocus ==IDCANCEL)
					{
						SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
						break;
					}
					hctl =GetDlgItem(hDlg, IDC_INPUT);
					if(curChkUsrData.gddm[0] ==0)
					{
						GetDlgItemText(hDlg, IDC_INPUT, curChkUsrData.gddm, sizeof(curChkUsrData.gddm));
						if(curChkUsrData.gddm[0] !=0)
						{
							hctl =GetDlgItem(hDlg, IDC_INPUT1);
							SetFocus(hctl);
						}
						break;
					}
					GetDlgItemText(hDlg, IDC_INPUT1, curChkUsrData.jymm, sizeof(curChkUsrData.jymm));
					if(curChkUsrData.jymm[0] ==0)
						break;
						
					EnableWindow(hDlg, FALSE);	
					
					hctl =GetDlgItem(hDlg, IDOK);
					SetFocus(hctl);
					
					if(gfTest)
						SendMessage(hDlg,WM_JY_RES,0,0L);
					else
					{
						SetTimer(hDlg, 1, 1000, NULL);
						ret =UDP_Jy_ChkUsr(&curChkUsrData, &curChkUsrRes);
						if(ret <0)
						{
							ErrMsg(hDlg, "Failed send data");
							SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
						}
					}
				break;
				case IDCANCEL:
					KillTimer(hDlg, 1);
					if(curChkUsrData.jymm[0] !=0)
						SendJyExit(curChkUsrData.gddm);
					udpread_stop =TRUE;
					ghDlgJy =NULL;
					DeleteObject(hBrush);
					EndDialog(hDlg, 1);
				break;
			}
		break;
		case WM_JY_RES:
			if(gfTest)
			{
				curChkUsrRes.userId =1;
				curChkUsrRes.flag=ret =ANS_SUCC;
			}
			else
				ret =curChkUsrRes.flag;
			if(ret!=ANS_SUCC)
			{
				curChkUsrRes.userId=0;
				switch(ret)
				{
				    case '1':
						strcpy(tmp,"请您注意,无此股东代码!");
						break;
				    case '2':
						strcpy(tmp,"请您注意,您已被删除!");
						break;
					case '3':
						strcpy(tmp,"请您注意,您已挂失!");
						break;
					case '4':
						strcpy(tmp,"请您注意,您已被冻结!");
						break;
				    case '5':
						strcpy(tmp,"请您注意,没有您的密码");
						break;
				    case '6':
						strcpy(tmp,"股东代码与交易密码不符!");
						break;
            		case ANS_SYS_ERR:
            			strcpy(tmp,"请您注意,主机系统错!");
            			break;
            		case ANS_SUSP_REQ:
            			strcpy(tmp,"主机正在处理您的上次请求!");
            			break;
            		case ANS_NO_PRIV:
            			strcpy(tmp,"您没有权限进入主机!");	
            			break;						
                    default:
                    	strcpy(tmp,"请您注意,未知错误");
                }    	
				MessageBox(ghDlgJy, tmp,"用户检验", MB_OK);				
			}
			KillTimer(hDlg, 1);
			ghDlgJy =NULL;
			EndDialog(hDlg, 1);
		break;
	}
	return FALSE;
}


LRESULT CALLBACK JyDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	LPDRAWITEMSTRUCT lpdis;
	HWND hctl;
	int x,i,Width,gap;
	RECT rc;
    static HBRUSH hBrush;
	int GpFunc[8]={IDC_JY_BUY,IDC_JY_SELL,IDC_JY_CANCEL,IDC_JY_CJCX,IDC_JY_WTCX,
		IDC_JY_YECX,IDC_JY_CHGPWD,IDC_EXIT};
	
	
	switch(msg)
	{
		case WM_INITDIALOG:
			gnTimers =0;
			x =GetSystemMetrics(SM_CXSCREEN);
			GetWindowRect(ghWndStatus,&rc);
			SetWindowPos(hDlg,(HWND)HWND_TOP,0,rc.top,
				x , rc.bottom-rc.top,SWP_NOZORDER);
			
			gap =4;
			Width =(x-gap*9)/8;
			for(i=0;i<8;i++)
			{
				hctl =GetDlgItem(hDlg,GpFunc[i]);
				SetWindowPos(hctl,(HWND)NULL,(Width+gap)*i +gap,3,Width,
					rc.bottom-rc.top-8,SWP_NOZORDER);
			}
			hBrush=CreateSolidBrush(RGB(0,255,255));            
			SetTimer(hDlg, 1, 500, NULL);
		return TRUE;

		case WM_CTLCOLOR:
			switch(HIWORD(lParam))
			{
				case CTLCOLOR_DLG:
					return (LRESULT)hBrush;
				case CTLCOLOR_MSGBOX:
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
			}
			//SetBkMode((HDC)wParam, TRANSPARENT);
		return (LRESULT)NULL;
		
		case WM_DRAWITEM:
			lpdis = (LPDRAWITEMSTRUCT)lParam;

			if (lpdis->itemID == -1)
				BtnFocusState(lpdis);
			else
			{
				switch (lpdis->itemAction)
				{
					case ODA_DRAWENTIRE: 
						BtnDrawEntireItem(lpdis);
					break;

					case ODA_SELECT:
						BtnSelectionState(lpdis);
					break;

					case ODA_FOCUS:
						BtnFocusState(lpdis);
					break;
				}
			}
		break;
		
		case WM_TIMER:
			if(gnTimers+10>MAX_IDEL_TIME*2)
			{  
			    if(gnTimers*(int)(gnTimers/2)==gnTimers)
			    {
					DrawTime(-3);
					MessageBeep(0);
				}	
				else
					DrawTime(-2);				
			}
			if(gnTimers++ >MAX_IDEL_TIME*2)
			{
				curChkUsrRes.flag =-1;
				gnTimers =0; 
				curChkUsrRes.userId=0;
				SendMessage(hDlg, WM_COMMAND, IDC_EXIT, 0L);
			}
		break;
		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDC_JY_BUY:
					JyFunc = BUY_FUNC;
				break;
				case IDC_JY_SELL:
					JyFunc = SELL_FUNC;
				break;
				case IDC_JY_CANCEL:
					JyFunc = CANCEL_FUNC;
				break;
				case IDC_JY_CJCX:
					JyFunc =CJCX_FUNC;
				break;
				case IDC_JY_WTCX:
					JyFunc = WTCX_FUNC;
				break;
				case IDC_JY_YECX:
					JyFunc = YECX_FUNC;
				break;
				case IDC_JY_CHGPWD:
					JyFunc =CHGPWD_FUNC;
				break;
				case IDOK:
					hctl =GetFocus();
					SendMessage(hDlg, WM_COMMAND, GetWindowWord(hctl, GWW_ID), 0L);
				break;
				case IDC_EXIT:
					JyFunc =EXIT_FUNC;
				case IDCANCEL:
					KillTimer(hDlg, 1);
					DeleteObject(hBrush);
					if(JyFunc!=EXIT_FUNC)
						JyFunc = NULL_FUNC;
				break;
				default:
				return FALSE;
			}  
			EndDialog(hDlg, 0);
		break;
	}
	
	return FALSE;
}

LRESULT CALLBACK AskPwdDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	static JY_ASK_CHGPWD ChgPwdData;
	static JY_ANS_CHGPWD ChgPwdRes;
	PAINTSTRUCT ps;
	static int state =0;
	char tmp[60];
	HWND hctl;
	static HBRUSH hBrush;
	
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			SendDlgItemMessage(hDlg, IDC_OLDPWD, EM_LIMITTEXT, MAX_JYMM_SIZE, 0L);
			CenterWindow(hDlg);
			//ChgPwdData.newPwd[0] =0;
			hBrush=CreateSolidBrush(RGB(0,255,255));			
			IsCanPwdChg =FALSE;
		return TRUE;

		case WM_CTLCOLOR:
			SetBkMode((HDC)wParam, TRANSPARENT);
			switch(HIWORD(lParam))
			{
				case CTLCOLOR_DLG:
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
				case CTLCOLOR_EDIT:
					return (LRESULT)hBrush;
			}
		return TRUE;

		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDOK:
					hctl =GetDlgItem(hDlg, IDC_OLDPWD);
					SetFocus(hctl);
					GetDlgItemText(hDlg, IDC_OLDPWD, tmp, sizeof(tmp));
					//if(tmp[0] ==0)
					//	break;
					if(strcmp(tmp,curChkUsrData.jymm)==0)
					{
						IsCanPwdChg =TRUE;
						EndDialog(hDlg, 0);
						ghDlgJy =NULL;					
					}
					else
					{   
					    ErrMsg(hDlg, "输入密码错,不能修改密码!");
						IsCanPwdChg =FALSE;
						EndDialog(hDlg, 0);
						ghDlgJy =NULL;					
					}
				break;
				case IDCANCEL:
					IsCanPwdChg =FALSE;
					EndDialog(hDlg, 0);
					ghDlgJy =NULL;
				break;
			}
		break;
	}
	
	return FALSE;
}

LRESULT CALLBACK ChgPwdDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	static JY_ASK_CHGPWD ChgPwdData;
	static JY_ANS_CHGPWD ChgPwdRes;
	PAINTSTRUCT ps;
	static int state =0;
	char tmp[60];
	HWND hctl;
	static HBRUSH hBrush;
	int ret;
	
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			memset(&ChgPwdData, 0, sizeof(ChgPwdData));
			memset(&ChgPwdRes, 0, sizeof(ChgPwdRes));
			ChgPwdData.jys =curChkUsrRes.jys;
			ChgPwdData.userId =curChkUsrRes.userId;
			strcpy(ChgPwdData.gddm, curChkUsrRes.gddm);
			state =0;
			gnTimers =0;
			SendDlgItemMessage(hDlg, IDC_NEWPWD, EM_LIMITTEXT, MAX_JYMM_SIZE, 0L);
			CenterWindow(hDlg);
			ChgPwdData.newPwd[0] =0;
			hBrush=CreateSolidBrush(RGB(0,255,255));			
			SetTimer(hDlg, 1, 1000, NULL);
		return TRUE;

		case WM_CTLCOLOR:
			SetBkMode((HDC)wParam, TRANSPARENT);
			switch(HIWORD(lParam))
			{
				case CTLCOLOR_DLG:
					return (LRESULT)(HBRUSH)GetStockObject(LTGRAY_BRUSH);
				case CTLCOLOR_EDIT:
					return (LRESULT)hBrush;
			}
		return TRUE;

		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;

		case WM_TIMER:
			if(gnTimers ++>60)
				SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDOK:
					if(state >=2) break;
					//if(ChgPwdData.newPwd[0] !=0) break;
					hctl =GetDlgItem(hDlg, IDC_NEWPWD);
					SetFocus(hctl);
					GetDlgItemText(hDlg, IDC_NEWPWD, tmp, sizeof(tmp));
					if(state ==0)
					{
						if(tmp[0] ==0)
							break;
						strcpy(ChgPwdData.newPwd, tmp);
						SetDlgItemText(hDlg, IDC_COMMENT, "重输一次");
						SetDlgItemText(hDlg, IDC_NEWPWD, "");
						state =1;
						break;
					}
					if(strcmp(ChgPwdData.newPwd, tmp))
					{
						ErrMsg(hDlg, "两次输入要相同!\n请重新输入");
						SetDlgItemText(hDlg, IDC_COMMENT, "新密码");
						SetDlgItemText(hDlg, IDC_NEWPWD, "");
						state =0;
						break;
					}
					state =2;
					UDP_Jy_ChgPwd(&ChgPwdData, &ChgPwdRes);
				break;
				case IDCANCEL:
					udpread_stop =TRUE;
					KillTimer(hDlg, 1);
					EndDialog(hDlg, 0);
					ghDlgJy =NULL;
				break;
			}
		break;
		case WM_JY_RES:
			ret=ChgPwdRes.flag;
			if(ret!=ANS_SUCC)
			{
				switch(ret)
				{
				    case '1':
						strcpy(tmp,"请您注意,无此股东代码!");
						break;
				    case '2':
						strcpy(tmp,"请您注意,您已被删除!");
						break;
					case '3':
						strcpy(tmp,"请您注意,您已挂失!");
						break;
					case '4':
						strcpy(tmp,"请您注意,您已被冻结!");
						break;
				    case '5':
						strcpy(tmp,"请您注意,没有您的密码");
						break;
				    case '6':
						strcpy(tmp,"股东代码与交易密码不符!");
						break;
            		case ANS_SYS_ERR:
            			strcpy(tmp,"请您注意,主机系统错!");
            			break;
            		case ANS_SUSP_REQ:
            			strcpy(tmp,"主机正在处理您的上次请求!");
            			break;
            		case ANS_NO_PRIV:
            			strcpy(tmp,"您没有权限进入主机!");	
            			break;						
                    default:
                    	strcpy(tmp,"请您注意,未知错误");
                }
			}
			else
			{
				strcpy(tmp,"您的密码已修改!");
			}
			MessageBox(ghDlgJy, tmp,"修改密码", MB_OK);
			KillTimer(hDlg, 1);
			ghDlgJy =NULL;
			DeleteObject(hBrush);
			EndDialog(hDlg, 0);
		break;
	}
	
	return FALSE;
}

LRESULT CALLBACK BuySellDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	static JY_ASK_BUYSELL BuySellData;
	static JY_ANS_BUYSELL BuySellRes;
	int i, k,ret;
	DWORD dw;
	char tmp[100], tmp1[100];
	PAINTSTRUCT ps;
	HWND hctl;
	LPDRAWITEMSTRUCT lpdis;
	static int state =0;
	int idFocus;
	static HBRUSH hBuyBrush,hSellBrush;
	RECT rc;
	HDC hdc;
					
	switch(msg)
	{
		case WM_INITDIALOG:
			gnTimers =0;
			ghDlgJy =hDlg;
			memset(&BuySellData, 0, sizeof(BuySellData));
			memset(&BuySellRes, 0, sizeof(BuySellRes));
			BuySellData.jys =curChkUsrRes.jys;
			strcpy(BuySellData.gddm, curChkUsrRes.gddm);
			
			if(BuySellData.jys==0)
				strcpy(tmp,"深圳A股");
			if(BuySellData.jys==1)	
				strcpy(tmp,"上海A股");			
				
			BuySellData.wtgs =0;
			BuySellData.wtjg =0;
			BuySellData.bs =(char)lParam;
			BuySellData.userId =curChkUsrRes.userId;
			if(BuySellData.bs =='B')
			{
				SetDlgItemText(hDlg, IDOK, "买入");
				strcat(tmp,"股票买入");
			}	
			else
			{ 
				SetDlgItemText(hDlg, IDOK, "卖出");	
				strcat(tmp,"股票卖出");
			}                             
			SetWindowText(hDlg,tmp);                             
			
			SendDlgItemMessage(hDlg, IDC_ZQDM, CB_LIMITTEXT, MAX_ZQDM_SIZE, 0L);
			SendDlgItemMessage(hDlg, IDC_JG, EM_LIMITTEXT, 7, 0L);
			SendDlgItemMessage(hDlg, IDC_SL, EM_LIMITTEXT, 8, 0L);

			i =HqPaintData.sortData.key[HqPaintData.curRecNum+HqPaintData.curSelRec];
			strcpy(tmp, HqData[HqPaintData.jys].lpPreData[i].zqmc);
			k =-1;
			for(i =0; iitemID == -1)
				BtnFocusState(lpdis);
			else
			{
				switch (lpdis->itemAction)
				{
					case ODA_DRAWENTIRE: 
						BtnDrawEntireItem(lpdis);
					break;

					case ODA_SELECT:
						BtnSelectionState(lpdis);
					break;

					case ODA_FOCUS:
						BtnFocusState(lpdis);
					break;
				}
			}
		break;
		
		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;

		case WM_TIMER:
			if(gnTimers++ >300)
				SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDOK:
					hctl =GetFocus();
					idFocus =GetWindowWord(hctl, GWW_ID);
					if(idFocus ==IDCANCEL)
					{
						SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
						break;
					}
					//if(BuySellData.wtgs !=0 && BuySellData.wtjg !=0) break;
					GetDlgItemText(hDlg, IDC_ZQDM, tmp, sizeof(tmp));
					hctl =GetDlgItem(hDlg, IDC_ZQDM);
					if(tmp[0] ==0)
					{
						SetFocus(hctl);
						break;
					}
					for(i =0; i'9')
							{    
								if(i0)
									strcpy(tmp,HqData[BuySellData.jys].lpPreData[i].zqdm);
							}	
							SetWindowText(hWndInput, &tmp[0]);													
							if(tmp[0]!=0)
							{
								SendMessage(ghWndXlt, WM_KEYDOWN, VK_RETURN, 0L);
								InvalidateRect(ghWndXlt, NULL, TRUE);
								InvalidateRect(ghWndJlt, NULL, TRUE);
								InvalidateRect(ghWndMmp, NULL, TRUE);
								InvalidateRect(ghWndLitHq, NULL, TRUE);
								InvalidateRect(ghWndCj, NULL, TRUE);
							}	
						}
						break;
					}

					if(state ==1) goto ACCEPT;
					GetDlgItemText(hDlg, IDC_JG, tmp, sizeof(tmp));
					
					if(tmp[0] ==0)
					{
						SetFocus(hctl);
						break;
					}
					else
					{
						k =strlen(tmp);
						for(i =0; i8)
						{
							tmp[8] =0;
							SetDlgItemText(hDlg, IDC_SL, tmp);
							SendDlgItemMessage(hDlg, IDC_SL, EM_SETSEL, 0, MAKELONG(0, -1));
							SetFocus(hctl);
							break;
						}
						*/
						for(i =0; i0)
							strcpy(&tmp[0],"您的委托已传到了主机,请等待");
						if(k==0)
						    strcpy(&tmp[0],"已经收市,不能委托");
						if(k<0)
						    strcpy(&tmp[0],"您的委托未传到了主机,请检查通讯情况");
						TextOut(hdc,rc.left +10,rc.bottom -20,tmp,strlen(tmp));
						ReleaseDC(hDlg,hdc);
					}	
				break;
				case IDCANCEL:
					udpread_stop =TRUE;
					KillTimer(hDlg, 1);
					ghDlgJy =NULL;
					DeleteObject(hBuyBrush);
					DeleteObject(hSellBrush);					
					EndDialog(hDlg, 0);
				break;
			}
		break;
		case WM_JY_RES:
			ret=BuySellRes.flag;
			if(ret!=ANS_SUCC)
			{
				switch(ret)
				{
				    case '1':
						strcpy(tmp,"请您注意,股票代码错!");
						break;
				    case '2':
						strcpy(tmp,"股东代码或资金帐号错!");
						break;
					case '3':
						strcpy(tmp,"请您注意,委托价格错!");
						break;
					case '4':
						strcpy(tmp,"请您注意,委托股数错!");
						break;
				    case '5':
						strcpy(tmp,"请您输入整手股数!");
						break;
				    case '6':
						strcpy(tmp,"委托股数超过上限!");
						break;
					case '7':
						strcpy(tmp,"请您注意,资金不足!");
						break;						
					case '8':
						strcpy(tmp,"系统无法产生合同号码!");
					case '9':
						strcpy(tmp,"请您注意,您已卖空!");						
						break;
					case 'A':
						strcpy(tmp,"请您注意,您已超时!");
						break;
					case 'I':
						strcpy(tmp,"已有相同股东代码进入主机交易系统!");
						break;
            		case ANS_SYS_ERR:
            			strcpy(tmp,"请您注意,主机系统错!");
            			break;
            		case ANS_SUSP_REQ:
            			strcpy(tmp,"主机正在处理您的上次请求!");
            			break;
            		case ANS_NO_PRIV:
            			strcpy(tmp,"您没有权限进入主机!");	
            			break;						
                    default:
                    	strcpy(tmp,"请您注意,未知错误");
                }
               	MessageBox(ghDlgJy, tmp,"股票买卖", MB_OK);
			}
			else
			{
				wsprintf(tmp, "委托已进入电脑系统! 合同号码是%s", BuySellRes.hthm);
				MessageBox(hDlg, tmp, "股票买卖", MB_OK);
			
			}
			
			hdc =GetDC(hDlg);
			GetClientRect(hDlg, &rc);			
			SetBkColor(hdc,RGB(255,0,0));
			SelectObject(hdc,GetStockObject(WHITE_PEN));
			strcpy(&tmp[0],"欢迎您继续委托...                         ");
			
			TextOut(hdc,rc.left +10,rc.bottom -20,tmp,strlen(tmp));
			ReleaseDC(hDlg,hdc);

			SendDlgItemMessage(hDlg, IDC_JG, EM_SETSEL, 0, MAKELONG(0,-1));
			SendDlgItemMessage(hDlg, IDC_JG, WM_CLEAR, 0, 0);
			
			SendDlgItemMessage(hDlg, IDC_SL, EM_SETSEL, 0, MAKELONG(0,-1));			
			SendDlgItemMessage(hDlg, IDC_SL, WM_CLEAR, 0, 0);

			gnTimers =0;
			state =0;
			EnableWindow(hDlg, TRUE);
		break;
	}
	
	return FALSE;
}

LRESULT CALLBACK CancelDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	static JY_ASK_CANCEL CancelData;
	static JY_ANS_CANCEL CancelRes;
	static JY_ASK_WTCX WtcxData;
	static JY_ANS_WTCX WtcxRes;
	PAINTSTRUCT ps;
	int i, j, k;
	DWORD dw;
	HWND hctl;
	static int sel_num[MAX_CANCEL_SENDCOUNT];
	char tmp[256],gpmc[9];
	LPSTR lpTmp;
	static int state;
	int idFocus,ret;
	static BOOL fFirst =TRUE;
	static  hBrush;
	LPDRAWITEMSTRUCT lpdis;
	LPMEASUREITEMSTRUCT lpmis;
	TEXTMETRIC tm;
	HWND hDC;
				
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			memset(&CancelData, 0, sizeof(CancelData));
			memset(&CancelRes, 0, sizeof(CancelRes));
			memset(&WtcxData, 0, sizeof(WtcxData));
			memset(&WtcxRes, 0, sizeof(WtcxRes));
			CancelData.jys =curChkUsrRes.jys;
			CancelData.cancelCount =0;
			CancelData.userId =curChkUsrRes.userId;
			strcpy(CancelData.gddm, curChkUsrRes.gddm);
			WtcxData.jys =curChkUsrRes.jys;
			WtcxData.userId =curChkUsrRes.userId;
			WtcxData.cdcx='Y';
			strcpy(WtcxData.gddm, curChkUsrRes.gddm);
			
			hBrush=CreateSolidBrush(RGB(0,255,255));
			
			if(curChkUsrRes.jys==0)
				strcpy(tmp,"深圳A股");
			if(curChkUsrRes.jys==1)	
				strcpy(tmp,"上海A股");			
			
			strcat(tmp,"撤销委托");
			SetWindowText(hDlg,tmp);
							
			PostMessage(hDlg, WM_JY_INIT, 0, 0L);
			state =0;
			fFirst =TRUE;
			gnTimers =0;
			SetTimer(hDlg,1, 1000, NULL);
			CenterWindow(hDlg);
			
		return TRUE;
		
		case WM_JY_INIT:
			SendDlgItemMessage(hDlg, IDL_CX, LB_ADDSTRING, 0,
						(LPARAM)(LPSTR)"正在查询委托...");
			gnTimers =0;
			if(gfTest)
			    SendMessage(hDlg,WM_JYCX_RES,0,0L);
			else
				UDP_Jy_Wtcx(&WtcxData, &WtcxRes);
		break;
		
		case WM_JYCX_RES:
			if(fFirst)
			{
				SendDlgItemMessage(hDlg, IDL_CX, LB_RESETCONTENT, 0, 0L);
				fFirst =FALSE;
			}
			if(gfTest)
			{
            	ret=WtcxRes.flag=ANS_SUCC;
            	WtcxRes.recCount=5;
            	for(i=0;i0)
				{
					MessageBox(hDlg,"委托查询失败!", "撤单", MB_OK);				
					break;
				} 
				if(WtcxRes.recCount ==0)
				{
					MessageBox(hDlg,"没有可以撤消委托的合同!", "撤单", MB_OK);							
					break;
				}
			}
			memset(&tmp[0], 0, sizeof(tmp));
			for(i =0,j=0; iitemID == -1)
			{
				if(lpdis->CtlType==ODT_BUTTON)
					BtnFocusState(lpdis);
				if(lpdis->CtlType==ODT_LISTBOX)
				{
					DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
			}
			else
			{
				if(lpdis->itemAction&ODA_DRAWENTIRE)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnDrawEntireItem(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
					{   
						i=lpdis->itemID;
						SendMessage(lpdis->hwndItem,LB_GETTEXT,
							(WPARAM)lpdis->itemID,(LPARAM)(LPSTR)tmp);
						SelectObject(lpdis->hDC,GetStockObject(SYSTEM_FIXED_FONT));	
						TextOut(lpdis->hDC,lpdis->rcItem.left,lpdis->rcItem.top,tmp,strlen(tmp));
					}
					if(lpdis->itemState&ODS_SELECTED)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnSelectionState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					if(lpdis->itemState&ODA_FOCUS)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnFocusState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					return TRUE;	
				}
				if(lpdis->itemAction&ODA_SELECT)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnSelectionState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
				if(lpdis->itemAction&ODA_FOCUS)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnFocusState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}				
			}
		break;
        case WM_MEASUREITEM:
        	lpmis =(LPMEASUREITEMSTRUCT)(lParam);
        	hDC =GetDC(hDlg);
        	SelectObject(hDC,GetStockObject(SYSTEM_FIXED_FONT));        	
        	GetTextMetrics(hDC,&tm);
        	lpmis->itemHeight =tm.tmHeight;
        	ReleaseDC(hDlg,hDC);
        break;
		
		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;

		case WM_TIMER:
			if(gnTimers ++>60)
				SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDOK:
					hctl =GetFocus();
					idFocus =GetWindowWord(hctl, GWW_ID);
					if(idFocus ==IDCANCEL)
					{
						SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
						break;
					}
					if(CancelData.cancelCount !=0) break;
					dw =SendDlgItemMessage(hDlg, IDL_CX, LB_GETSELCOUNT, 0, 0L);
					hctl =GetDlgItem(hDlg, IDL_CX);
					SetFocus(hctl);
					if(dw ==LB_ERR)
						break;
					if((int)dw >MAX_CANCEL_SENDCOUNT-1)
					{
						wsprintf(tmp, "一次最多选择%d笔", (int)MAX_CANCEL_SENDCOUNT-1);
						ErrMsg(hDlg, tmp);
						break;
					}
					CancelData.cancelCount =(int)dw;
					if(CancelData.cancelCount ==0) break;
					if(SendDlgItemMessage(hDlg, IDL_CX, LB_GETSELITEMS, (int)dw,
								(LPARAM)(int FAR *)sel_num) ==LB_ERR)
						break;
					for(i =0; i=0; i--)
			{
				if(CancelRes.flag[i] ==ANS_SUCC)
				{
					j++;
					SendDlgItemMessage(hDlg, IDL_CX, LB_DELETESTRING, sel_num[i], 0L);
				}
			}
			ret=CancelRes.flag[0];	
			if(j>0&&ret==ANS_SUCC)
				wsprintf(tmp, "您的撤单已发出!");
			else
			{
				switch(ret)
				{
				    case '1':
						strcpy(tmp,"请您注意,无此合同代码!");
						break;
				    case '2':
						strcpy(tmp,"无此股东代码或已挂失!");
						break;
					case '3':
						strcpy(tmp,"请您注意,无此交易帐号!");
						break;
					case '4':
						strcpy(tmp,"请您注意,撤单股数错!");
						break;
				    case '5':
						strcpy(tmp,"请您注意,重复撤单错!");
						break;
				    case '6':
						strcpy(tmp,"请您注意,撤单帐号错!");
						break;  
            		case ANS_SYS_ERR:
            			strcpy(tmp,"请您注意,主机系统错!");
            			break;
            		case ANS_SUSP_REQ:
            			strcpy(tmp,"主机正在处理您的上次请求!");
            			break;
            		case ANS_NO_PRIV:
            			strcpy(tmp,"您没有权限进入主机!");	
            			break;
                    default:
                    	strcpy(tmp,"请您注意,未知错误");
                  }				
			}
			MessageBox(hDlg, tmp, "撤单", MB_OK);
			
			hctl =GetDlgItem(hDlg, IDOK);
			CancelData.cancelCount =0;
			EnableWindow(hctl, TRUE);
		break;
		
	}
	
	return FALSE;
}

LRESULT CALLBACK YecxDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	static JY_ASK_YECX YecxData;
	static JY_ANS_YECX YecxRes;
	PAINTSTRUCT ps;
	char tmp[256],gpmc[9];
	static BOOL fFirst =TRUE;
	int i,ret,j;
	static HBRUSH hBrush;
	LPDRAWITEMSTRUCT lpdis;
	LPMEASUREITEMSTRUCT lpmis;
	TEXTMETRIC tm;
	HWND hDC;
	
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			memset(&YecxData, 0, sizeof(YecxData));
			memset(&YecxRes, 0, sizeof(YecxRes));
			fFirst =TRUE;
			YecxData.jys =curChkUsrRes.jys;
			YecxData.userId =curChkUsrRes.userId;
			YecxRes.recCount =0;
			strcpy(YecxData.gddm, curChkUsrRes.gddm);
			
			hBrush=CreateSolidBrush(RGB(0,255,255));			
			if(curChkUsrRes.jys==0)
				strcpy(tmp,"深圳A股");
			if(curChkUsrRes.jys==1)	
				strcpy(tmp,"上海A股");			
			strcat(tmp,"余额查询");
			SetWindowText(hDlg,tmp);
			
			PostMessage(hDlg, WM_JY_INIT, 0, 0L);
			SetTimer(hDlg, 1, 1000, NULL);
			gnTimers =0;
			CenterWindow(hDlg);
		return TRUE;

		case WM_JY_INIT:
			if(!fFirst) break;
			SendDlgItemMessage(hDlg, IDL_CX, LB_ADDSTRING, 0,
						(LPARAM)(LPSTR)"正在查询...");
			gnTimers =0;
			if(gfTest)
			{
				SendMessage(hDlg, WM_JYCX_RES, 0, 0L);
				YecxRes.kys =8880000.99;
				YecxRes.zjye=YecxRes.kys+100;
			}
			else
			{
				if(UDP_Jy_Yecx(&YecxData, &YecxRes) <0)
				{
					ErrMsg(hDlg, "通讯错误:不能将请求送到主机");
					SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
				}
			}
		break;

		case WM_JYCX_RES:
			gnTimers =0;
			if(fFirst)
			{
				SendDlgItemMessage(hDlg, IDL_CX, LB_RESETCONTENT, 0, 0L);
				fFirst =FALSE;				
			}   
			
			sprintf(tmp, "%.2f", YecxRes.kys);
			SetDlgItemText(hDlg, IDC_KYJE, tmp);
			sprintf(tmp, "%.2f", YecxRes.zjye);
			SetDlgItemText(hDlg, IDC_ZJYE, tmp);
			if(gfTest)
			{
			 	ret =YecxRes.flag=ANS_SUCC;
			 	YecxRes.recCount=5;
			 	for(i=0;iitemID == -1)
			{
				if(lpdis->CtlType==ODT_BUTTON)
					BtnFocusState(lpdis);
				if(lpdis->CtlType==ODT_LISTBOX)
				{
					DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
			}
			else
			{
				if(lpdis->itemAction&ODA_DRAWENTIRE)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnDrawEntireItem(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
					{   
						i=lpdis->itemID;
						SendMessage(lpdis->hwndItem,LB_GETTEXT,
							(WPARAM)lpdis->itemID,(LPARAM)(LPSTR)tmp);
						SelectObject(lpdis->hDC,GetStockObject(SYSTEM_FIXED_FONT));	
						TextOut(lpdis->hDC,lpdis->rcItem.left,lpdis->rcItem.top,tmp,strlen(tmp));
					}
					if(lpdis->itemState&ODS_SELECTED)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnSelectionState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					if(lpdis->itemState&ODA_FOCUS)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnFocusState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					return TRUE;	
				}
				if(lpdis->itemAction&ODA_SELECT)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnSelectionState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
				if(lpdis->itemAction&ODA_FOCUS)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnFocusState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}				
			}
		break;
        case WM_MEASUREITEM:
        	lpmis =(LPMEASUREITEMSTRUCT)(lParam);
        	hDC =GetDC(hDlg);
        	SelectObject(hDC,GetStockObject(SYSTEM_FIXED_FONT));        	
        	GetTextMetrics(hDC,&tm);
        	lpmis->itemHeight =tm.tmHeight;
        	ReleaseDC(hDlg,hDC);
        break;

		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;

		case WM_TIMER:
			if(gnTimers++>60)
				SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDCANCEL:
					udpread_stop =TRUE;
					KillTimer(hDlg, 1);
					DeleteObject(hBrush);
					EndDialog(hDlg, 0);
					ghDlgJy =NULL;
				break;
			}
		break;
	}
	
	return FALSE;
}

LRESULT CALLBACK WtcxDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	static JY_ASK_WTCX WtcxData;
	static JY_ANS_WTCX WtcxRes;
	char tmp[256],gpmc[9];
	int i,ret,j;
	PAINTSTRUCT ps;
	LPDRAWITEMSTRUCT lpdis;
	LPMEASUREITEMSTRUCT lpmis;
	TEXTMETRIC tm;
	HWND hDC;
	static BOOL fFirst =TRUE;
	static HBRUSH hBrush;
	
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;   
			fFirst =TRUE;
			memset(&WtcxData, 0, sizeof(WtcxData));
			memset(&WtcxRes, 0, sizeof(WtcxRes));
			WtcxData.jys =curChkUsrRes.jys;
			WtcxData.userId =curChkUsrRes.userId;
			WtcxRes.recCount =0;
			WtcxData.cdcx='N';
			strcpy(WtcxData.gddm, curChkUsrRes.gddm);
			
			hBrush=CreateSolidBrush(RGB(0,255,255));			
			if(curChkUsrRes.jys==0)
				strcpy(tmp,"深圳A股");
			if(curChkUsrRes.jys==1)	
				strcpy(tmp,"上海A股");			
			
			strcat(tmp,"委托查询");
			SetWindowText(hDlg,tmp);
			
			PostMessage(hDlg, WM_JY_INIT, 0, 0L);
			SetTimer(hDlg, 1, 1000, NULL);
			gnTimers =0;
			CenterWindow(hDlg);
		return TRUE;

		case WM_JY_INIT:
			if(!fFirst) break;
			SendDlgItemMessage(hDlg, IDL_CX, LB_ADDSTRING, 0,
					(LPARAM)(LPSTR)"正在查询...");
			gnTimers =0;
			if(gfTest)
				SendMessage(hDlg, WM_JYCX_RES, 0, 0L);
			else
			{
				if(UDP_Jy_Wtcx(&WtcxData, &WtcxRes) <0)
				{
					ErrMsg(hDlg, "通讯错误:不能将请求送到主机");
					SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
				}
			}
		break;
		
		case WM_JYCX_RES:
            gnTimers =0;
            if(gfTest)
            {
            	ret=WtcxRes.flag=ANS_SUCC;
            	WtcxRes.recCount=5;
            	for(i=0;iitemID == -1)
			{
				if(lpdis->CtlType==ODT_BUTTON)
					BtnFocusState(lpdis);
				if(lpdis->CtlType==ODT_LISTBOX)
				{
					DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
			}
			else
			{
				if(lpdis->itemAction&ODA_DRAWENTIRE)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnDrawEntireItem(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
					{   
						i=lpdis->itemID;
						SendMessage(lpdis->hwndItem,LB_GETTEXT,
							(WPARAM)lpdis->itemID,(LPARAM)(LPSTR)tmp);
						SelectObject(lpdis->hDC,GetStockObject(SYSTEM_FIXED_FONT));	
						TextOut(lpdis->hDC,lpdis->rcItem.left,lpdis->rcItem.top,tmp,strlen(tmp));
					}
					if(lpdis->itemState&ODS_SELECTED)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnSelectionState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					if(lpdis->itemState&ODA_FOCUS)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnFocusState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					return TRUE;	
				}
				if(lpdis->itemAction&ODA_SELECT)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnSelectionState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
				if(lpdis->itemAction&ODA_FOCUS)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnFocusState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}				
			}
		break;
        case WM_MEASUREITEM:
        	lpmis =(LPMEASUREITEMSTRUCT)(lParam);
        	hDC =GetDC(hDlg);
        	SelectObject(hDC,GetStockObject(SYSTEM_FIXED_FONT));        	
        	GetTextMetrics(hDC,&tm);
        	lpmis->itemHeight =tm.tmHeight;
        	ReleaseDC(hDlg,hDC);
        break;
		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;

		case WM_TIMER:
			if(gnTimers ++>60)
				SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDCANCEL:
					udpread_stop =TRUE;
					KillTimer(hDlg, 1);
					EndDialog(hDlg, 0);
					ghDlgJy =NULL;
				break;
			}
		break;
	}
	
	return FALSE;
}

LRESULT CALLBACK CjcxDlgProc(HWND hDlg, UINT msg,
					WPARAM wParam, LPARAM lParam)
{
	static JY_ASK_CJCX CjcxData;
	static JY_ANS_CJCX CjcxRes;
	PAINTSTRUCT ps;
	LPDRAWITEMSTRUCT lpdis;
	LPMEASUREITEMSTRUCT lpmis;
	TEXTMETRIC tm;
	static int cWidth =0;
	static BOOL fFirst =TRUE;
	int i,ret,j;
	HDC hDC;
	char tmp[256],gpmc[9];
	static hBrush;
			
	switch(msg)
	{
		case WM_INITDIALOG:
			ghDlgJy =hDlg;
			memset(&CjcxData, 0, sizeof(CjcxData));
			memset(&CjcxRes, 0, sizeof(CjcxRes));
			CjcxData.jys =curChkUsrRes.jys;
			CjcxData.userId =curChkUsrRes.userId;
			strcpy(CjcxData.gddm, curChkUsrRes.gddm);
			fFirst =TRUE;
			hDC =GetDC(hDlg);
			GetTextMetrics(hDC, &tm);
			cWidth =tm.tmAveCharWidth;
			ReleaseDC(hDlg, hDC);
			    
			hBrush=CreateSolidBrush(RGB(0,255,255));			
			if(curChkUsrRes.jys==0)
				strcpy(tmp,"深圳A股");
			if(curChkUsrRes.jys==1)	
				strcpy(tmp,"上海A股");			
			
			strcat(tmp,"成交查询");
			SetWindowText(hDlg,tmp);
			SendDlgItemMessage(hDlg, IDL_CJCX, LB_RESETCONTENT, 0, 0L);
			PostMessage(hDlg, WM_JY_INIT, 0, 0L);
			SetTimer(hDlg, 1, 1000, NULL);
			gnTimers =0;
			CenterWindow(hDlg);
		return TRUE;

		case WM_JY_INIT:
			SendDlgItemMessage(hDlg, IDL_CJCX, LB_ADDSTRING, 0,
					(LPARAM)(LPSTR)"正在查询...");
			gnTimers =0;
			if(gfTest)
				SendMessage(hDlg, WM_JYCX_RES, 0, 0L);
			else
			{
				if(UDP_Jy_Cjcx(&CjcxData, &CjcxRes) <0)
				{
					ErrMsg(hDlg, "通讯错误:不能将请求送到主机");
					SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
				}
			}
		break;
		
		case WM_JYCX_RES:
			gnTimers =0;
			if(gfTest)
			{
				CjcxRes.flag=ret =ANS_SUCC;
				CjcxRes.recCount =5;
				for(i=0;i<5;i++)
				{
					sprintf(CjcxRes.Cj[i].hthm ,"%d",12+i);
					strcpy(CjcxRes.Cj[i].cjsj ,"131012");
					CjcxRes.Cj[i].mmbz ='B';
					if(curChkUsrRes.jys==0)
						sprintf(CjcxRes.Cj[i].gpdm ,"%04d",1+i);
					else
						sprintf(CjcxRes.Cj[i].gpdm ,"%06ld",(long)(600600+i));
					sprintf(CjcxRes.Cj[i].cjgs,"%d",100*(i+1));
					sprintf(CjcxRes.Cj[i].cjjg,"%.2f",12.23+i*2);
				}
			}
			else
				ret=CjcxRes.flag;
            if(ret!=ANS_SUCC)
            {    
            	if(ret==1)
            		strcpy(tmp,"无此股东代码!");
            	else if(ret==ANS_SYS_ERR)
            		strcpy(tmp,"主机系统错!");
            	else if(ret==ANS_SUSP_REQ)
            		strcpy(tmp,"主机正在处理您的上次请求!");
            	else if(ret==ANS_NO_PRIV)
            		strcpy(tmp,"您没有权限进入主机!");	
            	else
            		strcpy(tmp,"未知系统错!");
				MessageBox(hDlg, tmp, "成交查询", MB_OK);
				break;
			}
			if(fFirst)
			{
				fFirst =FALSE;
				SendDlgItemMessage(hDlg, IDL_CJCX, LB_RESETCONTENT, 0, 0L);
			}
			memset(&tmp[0], 0, sizeof(tmp));
			if(CjcxRes.recCount==0)
			{
				strcpy(tmp,"您的委托尚未成交");
				SendDlgItemMessage(hDlg, IDL_CJCX, LB_ADDSTRING, 0,
						(LPARAM)(LPSTR)tmp);		
			}
			else
			{
				for(i =0; iitemID == -1)
			{
				if(lpdis->CtlType==ODT_BUTTON)
					BtnFocusState(lpdis);
				if(lpdis->CtlType==ODT_LISTBOX)
				{
					DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
			}
			else
			{
				if(lpdis->itemAction&ODA_DRAWENTIRE)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnDrawEntireItem(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
					{   
						i=lpdis->itemID;
						SendMessage(lpdis->hwndItem,LB_GETTEXT,
							(WPARAM)lpdis->itemID,(LPARAM)(LPSTR)tmp);
						SelectObject(lpdis->hDC,GetStockObject(SYSTEM_FIXED_FONT));	
						TextOut(lpdis->hDC,lpdis->rcItem.left,lpdis->rcItem.top,tmp,strlen(tmp));
					}
					if(lpdis->itemState&ODS_SELECTED)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnSelectionState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					if(lpdis->itemState&ODA_FOCUS)
					{
						if(lpdis->CtlType==ODT_BUTTON)
							BtnFocusState(lpdis);
						if(lpdis->CtlType==ODT_LISTBOX)
							DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					}
					return TRUE;	
				}
				if(lpdis->itemAction&ODA_SELECT)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnSelectionState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						InvertRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}
				if(lpdis->itemAction&ODA_FOCUS)
				{
					if(lpdis->CtlType==ODT_BUTTON)
						BtnFocusState(lpdis);
					if(lpdis->CtlType==ODT_LISTBOX)
						DrawFocusRect(lpdis->hDC,(LPRECT)&lpdis->rcItem);
					return TRUE;
				}				
			}
		break;
        case WM_MEASUREITEM:
        	lpmis =(LPMEASUREITEMSTRUCT)(lParam);
        	hDC =GetDC(hDlg);
        	SelectObject(hDC,GetStockObject(SYSTEM_FIXED_FONT));        	
        	GetTextMetrics(hDC,&tm);
        	lpmis->itemHeight =tm.tmHeight;
        	ReleaseDC(hDlg,hDC);
        break;
		case WM_PAINT:
			BeginPaint(hDlg, &ps);
			DrawFrame(ps.hdc, hDlg);
			EndPaint(hDlg, &ps);
		break;

		case WM_TIMER:
			if(gnTimers ++>60)
				SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0L);
		break;
		
		case WM_COMMAND:
			gnTimers =0;
			switch(wParam)
			{
				case IDCANCEL:
					udpread_stop =TRUE;
					KillTimer(hDlg, 1);
					ghDlgJy =NULL;
					DeleteObject(hBrush);
					EndDialog(hDlg, 0);
				break;
			}
		break;
	}
	
	return FALSE;
}

void JyTimer(void)
{
	if(HqTime[curChkUsrRes.jys].fRunning ==FALSE)
	{
		//jy_timers =0;
		//curChkUsrRes.flag =-1;
	}
	//else
	//	if(++jy_timers>=6)
	//	{
			//jy_timers =0;
			//curChkUsrRes.flag =-1;
	//	}
}

void CenterWindow(HWND hDlg)
{
	RECT rc2;
	int x,y;
	
	x =GetSystemMetrics(SM_CXSCREEN);
	y =GetSystemMetrics(SM_CYSCREEN);
	GetClientRect(hDlg, &rc2);
	SetWindowPos(hDlg, NULL, (x-rc2.right)/2, (y-rc2.bottom)/2,
					0, 0, SWP_NOSIZE|SWP_NOZORDER);
					
}

void FAR PASCAL BtnSelectionState(LPDRAWITEMSTRUCT lpdis)
{
	if(lpdis->itemState & ODS_SELECTED)
		DrawBtnSelected(lpdis);
	else
		if(lpdis->itemState & ODS_FOCUS)
		{
			SetTextColor(lpdis->hDC, RGB(0, 0, 255));
			DrawBtnFocus(lpdis);
		}
		else
		{
			SetTextColor(lpdis->hDC, RGB(0, 0, 0));
			DrawBtnUnFocus(lpdis);
		}	
}

void FAR PASCAL BtnFocusState(LPDRAWITEMSTRUCT lpdis)
{
		if(lpdis->itemState & ODS_FOCUS)
		{                      
			if(lpdis->itemState & ODS_SELECTED)
				DrawBtnSelected(lpdis);
			else
				DrawBtnFocus(lpdis);
			SetTextColor(lpdis->hDC, RGB(0, 0, 255));
		}
		else       
		{
			SetTextColor(lpdis->hDC, RGB(0, 0, 0));
			DrawBtnUnFocus(lpdis);
		}
		DrawBtnNormal(lpdis, FALSE);
}

void FAR PASCAL BtnDrawEntireItem(LPDRAWITEMSTRUCT lpdis)
{
	BtnFocusState(lpdis);
	DrawBtnNormal(lpdis, TRUE);
}

void DrawBtnSelected(LPDRAWITEMSTRUCT lpdis)
{
	ShowBitmap(lpdis->hDC, 5, (lpdis->rcItem.bottom-6)/2, hBmpSel);
}

void DrawBtnFocus(LPDRAWITEMSTRUCT lpdis)
{
	SelectObject(lpdis->hDC, GetStockObject(BLACK_PEN));
	SelectObject(lpdis->hDC, GetStockObject(NULL_BRUSH));
	Rectangle(lpdis->hDC, 0, 0, lpdis->rcItem.right, lpdis->rcItem.bottom);
	ShowBitmap(lpdis->hDC, 5, (lpdis->rcItem.bottom-6)/2, hBmpFoc);
}

void DrawBtnUnFocus(LPDRAWITEMSTRUCT lpdis)
{
	HPEN hPen;
	
	SelectObject(lpdis->hDC, GetStockObject(NULL_PEN));
	SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH));
	Rectangle(lpdis->hDC, 5, (lpdis->rcItem.bottom-6)/2, 15, (lpdis->rcItem.bottom+8)/2);
	hPen =CreatePen(PS_SOLID, 1, RGB(180, 180, 180));
	SelectObject(lpdis->hDC, GetStockObject(NULL_BRUSH));
	SelectObject(lpdis->hDC, hPen);
	Rectangle(lpdis->hDC, 0, 0, lpdis->rcItem.right, lpdis->rcItem.bottom);
	SelectObject(lpdis->hDC, GetStockObject(BLACK_PEN));
	DeleteObject(hPen);
}

void DrawBtnNormal(LPDRAWITEMSTRUCT lpdis, BOOL fDrawFrame)
{
	char tmp[40];
	HPEN hPen;
	DWORD dw;
    HFONT hFont;
    LOGFONT lf;
    
	GetWindowText(lpdis->hwndItem, tmp, sizeof(tmp));
	memset(&lf,0,sizeof(LOGFONT));	
    lf.lfHeight=(int)((lpdis->rcItem.bottom -lpdis->rcItem.top)*0.8);
	lf.lfWeight =FW_NORMAL;            
	strcpy(lf.lfFaceName, "宋体");
           		
    hFont =CreateFontIndirect(&lf);
    SelectObject(lpdis->hDC,hFont);
    dw =GetTextExtent(lpdis->hDC, tmp, strlen(tmp));
	SetBkMode(lpdis->hDC, TRANSPARENT);
	
	SetTextColor(lpdis->hDC, RGB(0, 0, 0));	
	TextOut(lpdis->hDC, lpdis->rcItem.left+(lpdis->rcItem.right-LOWORD(dw)-lpdis->rcItem.left)/2, 
		(lpdis->rcItem.bottom-HIWORD(dw))/2, tmp, strlen(tmp));	
	SetTextColor(lpdis->hDC, RGB(255, 255, 255));	
	TextOut(lpdis->hDC, lpdis->rcItem.left+(lpdis->rcItem.right-LOWORD(dw)-lpdis->rcItem.left)/2-1,
	 	(lpdis->rcItem.bottom-HIWORD(dw))/2-1, tmp, strlen(tmp));	
	DeleteObject(hFont);

	if(!fDrawFrame) return;
	
	SelectObject(lpdis->hDC, GetStockObject(NULL_BRUSH));
	hPen =CreatePen(PS_SOLID, 1, RGB(80, 80, 80));
	SelectObject(lpdis->hDC, hPen);
	MoveTo(lpdis->hDC, lpdis->rcItem.right-2, 2);
	LineTo(lpdis->hDC, lpdis->rcItem.right-2, lpdis->rcItem.bottom-2);
	LineTo(lpdis->hDC, 2, lpdis->rcItem.bottom-2);

	SelectObject(lpdis->hDC, GetStockObject(WHITE_PEN));
	DeleteObject(hPen);
	MoveTo(lpdis->hDC, 1, lpdis->rcItem.bottom-2);
	LineTo(lpdis->hDC, 1, 1);
	LineTo(lpdis->hDC, lpdis->rcItem.right-1, 1);
	
	SelectObject(lpdis->hDC, GetStockObject(BLACK_PEN));
	MoveTo(lpdis->hDC, lpdis->rcItem.right-2, 1);
	LineTo(lpdis->hDC, lpdis->rcItem.right-2, lpdis->rcItem.bottom-2);
	LineTo(lpdis->hDC, 1, lpdis->rcItem.bottom-2);
}

int ShowBitmap(HDC hDC, int left, int top, HBITMAP hBmp)      //==
{
	BITMAP bmp;
	HDC hdcMem;
	
	GetObject(hBmp, sizeof(bmp), &bmp);
	hdcMem =CreateCompatibleDC(hDC);
	SelectObject(hdcMem, hBmp);
	BitBlt(hDC, left, top, bmp.bmWidth, bmp.bmHeight, hdcMem, 0, 0, SRCCOPY);
	DeleteObject(hdcMem);
	
	return 0;
}

void DrawFrame(HDC hDC, HWND hWnd)
{
	RECT rc;
	HPEN hPen;
	
	GetClientRect(hWnd, &rc);
	
	hPen =CreatePen(PS_SOLID, 2, RGB(180, 180, 180));
	SelectObject(hDC, hPen);
	SelectObject(hDC, GetStockObject(NULL_BRUSH));
	Rectangle(hDC, 2, 2, rc.right-2, rc.bottom-1);
	SelectObject(hDC, GetStockObject(WHITE_PEN));
	DeleteObject(hPen);
	MoveTo(hDC, rc.right, 0);
	LineTo(hDC, 0, 0);
	LineTo(hDC, 0, rc.bottom);
	hPen =CreatePen(PS_SOLID, 2, RGB(80, 80, 80));
	SelectObject(hDC, hPen);
	LineTo(hDC, rc.right-1, rc.bottom-1);
	LineTo(hDC, rc.right-1, 0);
	SelectObject(hDC, GetStockObject(WHITE_PEN));
	DeleteObject(hPen);
}

HBRUSH DrawChild(HDC hDC, HWND hWnd)
{
	HPEN hPen, hOldPen;
	HBRUSH hOldBrush;
	RECT rc;
	
	if(!IsWindowVisible(hWnd) || WinVer >3)
		return (HBRUSH)NULL;
	GetWindowRect(hWnd, &rc);
	
	rc.right -=rc.left;
	rc.left =0;
	rc.bottom -=rc.top;
	rc.top =0;
	
	if(isWndClass(hWnd,(LPSTR)"ListBox"))
	{
		rc.left-=1; 
		rc.top-=1;
		rc.right-=1;
		rc.bottom-=1;
	}  
	hPen=CreatePen(PS_SOLID,1,RGB(80,80,80)); 
	hOldBrush=SelectObject(hDC,GetStockObject(NULL_BRUSH));
	hOldPen=SelectObject(hDC,hPen);
	Rectangle(hDC,rc.left-1,rc.top-1,rc.right,rc.bottom);
	SelectObject(hDC,GetStockObject(WHITE_PEN));
	DeleteObject(hPen);
	MoveTo(hDC,rc.left-1,rc.bottom);
	LineTo(hDC,rc.right,rc.bottom);
	LineTo(hDC,rc.right,rc.top-2);
	SelectObject(hDC,hOldPen);                             
	SelectObject(hDC,hOldBrush);
	SetBkMode(hDC,TRANSPARENT);//Color((HDC)wParam,RGB(180,180,180));
	SetTextColor(hDC,GetSysColor(COLOR_WINDOWTEXT));
	  
	if(isWndClass(hWnd,(LPSTR)"ComboBox"))
		return (HBRUSH)GetStockObject(LTGRAY_BRUSH);
	else  
		return (HBRUSH)NULL;
}

BOOL isWndClass(HWND hWnd,LPSTR ClassName)
{                                            
	char tmp[40];
	
	if(!GetClassName(hWnd, (LPSTR)tmp, sizeof(tmp))) return FALSE;
		return (strcmpi((LPSTR)tmp, (LPSTR)ClassName)==0); 
}