MMP.C
上传用户:bjghjy
上传日期:2007-01-07
资源大小:379k
文件大小:6k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include "resource.h"
  5. #include "global.h"
  6. #include "hq.h"
  7. #include "hq_cl.h"
  8. #include "mmp.h"
  9. #include "toolbar.h"
  10. #define MMP_CLASS "CMMP"
  11. extern HINSTANCE ghInstance;
  12. extern HWND ghWndMain, ghWndMmp;
  13. extern BOOL ErrMsg(HWND, LPSTR);
  14. extern BOOL IsZsRec(int jys, int rec_num);
  15. BOOL RegisterMmp(void)
  16. {
  17. WNDCLASS wc;
  18. memset(&wc, 0, sizeof(wc));
  19. wc.lpfnWndProc =MmpWndProc;
  20. wc.lpszClassName =MMP_CLASS;
  21. wc.hbrBackground =GetStockObject(BLACK_BRUSH);
  22. wc.hInstance = ghInstance;
  23. wc.hCursor = LoadCursor(NULL, IDC_ARROW);        
  24. if(!RegisterClass(&wc)) return FALSE;
  25. return TRUE;
  26. }
  27. BOOL CreateWndMmp(HWND hWnd)
  28. {                          
  29. int x ;
  30. HWND hwnd;
  31. HDC hDC;
  32. TEXTMETRIC tm;
  33. int x0,y0,x1,y1;
  34. RECT rc;
  35. x =GetSystemMetrics(SM_CXSCREEN);
  36. hDC =GetDC(hWnd);
  37. GetTextMetrics(hDC, &tm);
  38. ReleaseDC(hWnd, hDC);
  39.               
  40. GetWindowRect(ghWndXlt,&rc);
  41. x0 =rc.right;
  42. y0 =STATUS_HEIGHT +TOOLBAR_HEIGHT;
  43. x1 =x*1/3-30-1;
  44. y1 = tm.tmHeight*6+STATUS_HEIGHT;
  45.     if(ghWndMmp ==NULL)
  46.     {
  47. hwnd =CreateWindow(MMP_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,
  48. x0, y0, x1, y1,hWnd, NULL, ghInstance, NULL);
  49. if(hwnd ==NULL)
  50. {
  51. ErrMsg(hWnd, "Error create mmp window");
  52. return FALSE;
  53. }
  54. ghWndMmp =hwnd;
  55. }
  56. else
  57. {  
  58. SetWindowPos(ghWndMmp, (HWND) NULL,x0, y0, x1, y1,NULL);
  59. }
  60. return TRUE;
  61. }
  62. LPSTR MmpTitles[]=
  63. {
  64. "买卖类别", "价位", "数量", NULL
  65. };
  66. extern int UDP_Send_Mmp(int, int);
  67. LRESULT CALLBACK MmpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  68. {
  69. char tmp[256];
  70. PAINTSTRUCT ps;
  71. DWORD dw;
  72. int i, j, x, y;
  73. RECT rc;
  74. HPEN hPen;
  75. //TEXTMETRIC tm;
  76. switch(message)
  77. {
  78. case WM_SETFOCUS:
  79. SetFocus(ghWndMain);
  80. break;
  81. case WM_SIZE:
  82. if(IsWindowVisible(ghWndMmp))
  83. InvalidateRect(hWnd, NULL, TRUE);
  84. break;
  85. case WM_READ_OK:
  86. InvalidateRect(hWnd, NULL, FALSE);
  87. break;
  88. case WM_PAINT:
  89. BeginPaint(hWnd, &ps);
  90. GetClientRect(hWnd, &rc);
  91. hPen =CreatePen(PS_SOLID, 2, RGB(180, 180, 180));
  92. SelectObject(ps.hdc, hPen);
  93. SelectObject(ps.hdc, GetStockObject(NULL_BRUSH));
  94. Rectangle(ps.hdc, 2, 2, rc.right-2, rc.bottom-1);
  95. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  96. DeleteObject(hPen);
  97. MoveTo(ps.hdc, rc.right, 0);
  98. LineTo(ps.hdc, 0, 0);
  99. LineTo(ps.hdc, 0, rc.bottom);
  100. hPen =CreatePen(PS_SOLID, 2, RGB(80, 80, 80));
  101. SelectObject(ps.hdc, hPen);
  102. LineTo(ps.hdc, rc.right-1, rc.bottom-1);
  103. LineTo(ps.hdc, rc.right-1, 0);
  104. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  105. DeleteObject(hPen);
  106. strcpy(tmp, "买卖盘");
  107. dw =GetTextExtent(ps.hdc, tmp, strlen(tmp));
  108. x =LOWORD(dw); y =HIWORD(dw);
  109. //SetTextColor(ps.hdc, RGB(255, 255, 255));
  110. SetBkMode(ps.hdc, TRANSPARENT);
  111. //TextOut(ps.hdc, (rc.right-x)/2, 3, tmp, strlen(tmp));
  112. SetTextAlign(ps.hdc, TA_RIGHT|TA_BOTTOM);
  113. for(i =0; i<3; i++)
  114. {
  115. wsprintf(tmp, "%d", 3-i);
  116. SetTextColor(ps.hdc, RGB(255, 255, 0));
  117. TextOut(ps.hdc, rc.right*2/7, (y+2)*(i+1),
  118. tmp, strlen(tmp));
  119. SetTextColor(ps.hdc, RGB(180, 0, 0));
  120. if(MmpData.jys ==0) j=i; else j=2-i;
  121. if(MmpData.jwSell[i] >HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
  122. SetTextColor(ps.hdc, RGB(255, 0, 0));
  123. else if(MmpData.jwSell[i] <HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
  124. SetTextColor(ps.hdc, RGB(0, 255, 0));
  125. else SetTextColor(ps.hdc, RGB(255, 255, 0));
  126. sprintf(tmp, "%.2f", MmpData.jwSell[i]);
  127. TextOut(ps.hdc, rc.right*3/5, (y+2)*(i+1),
  128. tmp, strlen(tmp));
  129. SetTextColor(ps.hdc, RGB(0, 255, 255));
  130. sprintf(tmp, "%ld", MmpData.slSell[i]);
  131. TextOut(ps.hdc, rc.right-8, (y+2)*(i+1),
  132. tmp, strlen(tmp));
  133. }
  134. SetTextColor(ps.hdc, RGB(255, 255, 0));
  135. TextOut(ps.hdc, rc.right/7, (y+2)*3, "卖:", 3);
  136. hPen =CreatePen(PS_SOLID, 2, RGB(180, 180, 180));
  137. SelectObject(ps.hdc, hPen);
  138. MoveTo(ps.hdc, 3, (y+2)*3+1);
  139. LineTo(ps.hdc, rc.right-3, (y+2)*3+1);
  140. SetTextAlign(ps.hdc, TA_TOP|TA_RIGHT);
  141. TextOut(ps.hdc, rc.right/7, (y+2)*4+2, "买:", 3);
  142. MoveTo(ps.hdc, 3, (y+2)*4+1);
  143. LineTo(ps.hdc, rc.right-3, (y+2)*4+1);
  144. SetTextAlign(ps.hdc, TA_TOP|TA_LEFT);            
  145.             //i =HqPaintData.sortData.key[HqPaintData.curSelRec+HqPaintData.curRecNum];
  146. sprintf(tmp,"%s%.2f","买进:",HqData[MmpData.jys].lpRefData[MmpData.recNum].zgjm);
  147. if(HqData[MmpData.jys].lpRefData[MmpData.recNum].zgjm>=
  148. HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
  149. SetTextColor(ps.hdc, RGB(255, 0, 255));
  150. else
  151.     SetTextColor(ps.hdc, RGB(0, 255, 255));    
  152. TextOut(ps.hdc, 6, (y+2)*3+2, tmp, strlen(tmp));
  153. sprintf(tmp,"%s%.2f","卖出:",HqData[MmpData.jys].lpRefData[MmpData.recNum].zdjm);
  154. if(HqData[MmpData.jys].lpRefData[MmpData.recNum].zdjm>=
  155. HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
  156. SetTextColor(ps.hdc, RGB(255, 0, 255));
  157. else
  158.     SetTextColor(ps.hdc, RGB(0, 255, 255));
  159. TextOut(ps.hdc, 2+(int)(rc.right-rc.left)/2, (y+2)*3+2, tmp, strlen(tmp));
  160.             
  161. MoveTo(ps.hdc, (int)(rc.right-rc.left)/2, (y+2)*3+1);
  162. LineTo(ps.hdc, (int)(rc.right-rc.left)/2, (y+2)*4+1);
  163.             
  164. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  165. DeleteObject(hPen);
  166. SetTextAlign(ps.hdc, TA_TOP|TA_RIGHT);
  167. for(i =0; i<3; i++)
  168. {
  169. wsprintf(tmp, "%d", i+1);
  170. SetTextColor(ps.hdc, RGB(255, 255, 0));
  171. TextOut(ps.hdc, rc.right*2/7, (y+2)*(i+3+1)+2, tmp, strlen(tmp));
  172. if(MmpData.jwBuy[i] >HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
  173. SetTextColor(ps.hdc, RGB(255, 0, 0));
  174. else if(MmpData.jwBuy[i] <HqData[MmpData.jys].lpPreData[MmpData.recNum].zrsp)
  175. SetTextColor(ps.hdc, RGB(0, 255, 0));
  176. else SetTextColor(ps.hdc, RGB(255, 255, 0));
  177. sprintf(tmp, "%.2f", MmpData.jwBuy[i]);
  178. TextOut(ps.hdc, rc.right*3/5, (y+2)*(i+3+1)+2,
  179. tmp, strlen(tmp));
  180. SetTextColor(ps.hdc, RGB(0, 255, 255));
  181. sprintf(tmp, "%ld", MmpData.slBuy[i]);
  182. TextOut(ps.hdc, rc.right-8, (y+2)*(i+3+1)+2,
  183. tmp, strlen(tmp));
  184. }
  185. EndPaint(hWnd, &ps);
  186. break;
  187. }
  188. return DefWindowProc(hWnd, message, wParam, lParam);
  189. }