📄 jy_cl.c
字号:
#include <windows.h>#include <string.h>#include <stdio.h>#include <malloc.h>#include <ctype.h>#include <stdlib.h>#include <io.h>#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 120void 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 14HBITMAP 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<MAX_ZQS_COUNT;i++) { sprintf(item,"QS%d",i+1); GetPrivateProfileString("ZQS_NAME", item, "", buf, 256, file); if(*buf==0) break; strcpy(Qsxx.zqsjc[i],buf); Qsxx.zqsid[i] =i+1; GetPrivateProfileString("ZQS_ADDR", item, "", buf, 256, file); if(*buf!=0) strcpy(Addr[i],buf); } if(i==0&&*buf==0) return -1; return 0;}void JyExit(void){ if(hBrushBkGround) DeleteObject(hBrushBkGround); if(hBmpBrush) DeleteObject(hBmpBrush); if(hBmpSel) DeleteObject(hBmpSel); if(hBmpFoc) DeleteObject(hBmpFoc); _ffree(JyReadBuf); if(hDesDll!=NULL) FreeLibrary(hDesDll);}extern void SendJyExit(char *);extern void SendJyQsxx(void);int jy(void){ if(HqTime[0].fRunning ==FALSE && HqTime[1].fRunning ==FALSE) { ErrMsg(ghWndMain, "深圳和上海交易所已经收市!"); return 0; } if(JyQs ==0 && !gfTest) { ErrMsg(ghWndMain, "请您按F11键选择券商!"); return 0; } if(curChkUsrRes.userId==0 && !gfTest) { if(DlgSelectJys()<0) return 0; // 检查用户的股东代码和交易密码 if(DlgChkUsr() <0) return 0; if(curChkUsrRes.userId==0) return 0; } JyOffLineTime=250; while(1) { DlgJy(); switch(JyFunc) { case NULL_FUNC: return 0; case BUY_FUNC: DlgBuySell('B'); break; case SELL_FUNC: DlgBuySell('S'); break; case CANCEL_FUNC: DlgCancel(); break; case CJCX_FUNC: DlgCjcx(); break; case WTCX_FUNC: DlgWtcx(); break; case YECX_FUNC: DlgYecx(); break; case CHGPWD_FUNC: DlgChgPwd(); break; case EXIT_FUNC: SendJyExit(curChkUsrData.gddm); curChkUsrRes.flag =-1; curChkUsrRes.userId=0; return 0; break; default: break; } } return 0;}FARPROC lpDlgProc =NULL;int DlgSelectJys(void){ int jys =0; lpDlgProc =MakeProcInstance((FARPROC)SelJysDlgProc, ghInstance); jys =DialogBox(ghInstance, MAKEINTRESOURCE(IDD_JY_SZSH), ghWndMain, lpDlgProc); FreeProcInstance(lpDlgProc); jys -=1; if(jys >=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;i<MAX_ZQS_COUNT;i++) { if(Qsxx.zqsid[i]!=0) SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)(LPSTR)Qsxx.zqsjc[i]); else break; } if(i>0) 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -