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

金融证券系统

开发平台:

Visual C++

  1. #include <windows.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include "resource.h"
  5. #include "global.h"
  6. #include "hq.h"
  7. #include "hq_cl.h"
  8. #include "status.h"
  9. #include "appmain.h"
  10. #define STATUS_CLASS "CSTATUS"
  11. extern HINSTANCE ghInstance;
  12. extern HWND ghWndMain, ghWndStatus;
  13. extern BOOL ErrMsg(HWND, LPSTR);
  14. extern int UDP_Send_Dp(void);
  15. extern int UDP_Send_Gra00(int jys, int rec_num);
  16. extern BOOL IsSzRead,IsShRead;
  17. BOOL RegisterStatus(void)
  18. {
  19. WNDCLASS wc;
  20. memset(&wc, 0, sizeof(wc));
  21. wc.style =CS_HREDRAW | CS_VREDRAW;
  22. wc.lpfnWndProc =StatusWndProc;
  23. wc.lpszClassName =STATUS_CLASS;
  24. wc.hbrBackground =GetStockObject(BLACK_BRUSH);
  25. wc.hInstance = ghInstance;
  26. wc.lpszMenuName = NULL;
  27. wc.hCursor = LoadCursor(NULL, IDC_ARROW);        
  28. wc.hIcon = LoadIcon(ghInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
  29. if(!RegisterClass(&wc)) return FALSE;
  30. return TRUE;
  31. }
  32. BOOL CreateWndStatus(HWND hWnd)
  33. {                          
  34. int x ;
  35. HWND hwnd;
  36. RECT rc;
  37. GetClientRect(ghWndMain, &rc);
  38. x =GetSystemMetrics(SM_CXSCREEN);
  39. if(ghWndStatus==NULL)
  40. {
  41. hwnd =CreateWindow(STATUS_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,
  42. 0, 
  43. rc.bottom -STATUS_HEIGHT-MSG_HEIGHT,
  44. x, 
  45. STATUS_HEIGHT,
  46. hWnd, NULL, ghInstance, NULL);
  47. if(hwnd ==NULL)
  48. {
  49. ErrMsg(hWnd, "不能建立状态条");
  50. return FALSE;
  51. }
  52. ghWndStatus =hwnd;
  53. }
  54. SetWindowPos(ghWndStatus, HWND_TOP,0,rc.bottom -STATUS_HEIGHT-MSG_HEIGHT,
  55. 0,0,SWP_NOSIZE);
  56. ShowWindow(hwnd, SW_SHOW);
  57. return TRUE;
  58. }
  59. LRESULT CALLBACK StatusWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  60. {
  61. PAINTSTRUCT ps;
  62. RECT rc;
  63. HPEN hPen;
  64. char tmp[100];
  65. int i, x, x1, width;
  66. TEXTMETRIC tm;
  67. HBRUSH hBrush;
  68. LOGFONT lf;
  69. static HFONT hFont =NULL;
  70. HDC hMemDC;
  71. switch(message)
  72. {
  73. case WM_CREATE:
  74. GetClientRect(hWnd, &rc);
  75. break;
  76. break;
  77. case WM_SETFOCUS:
  78. SetFocus(ghWndMain);
  79. break;
  80. case WM_COMMAND:
  81. if(wParam ==100)
  82. {
  83. switch(HIWORD(lParam))
  84. {
  85. case EN_SETFOCUS:
  86. SetFocus(ghWndMain);
  87. break;
  88. }
  89. }
  90. break;
  91. case WM_LBUTTONDOWN:
  92. if(IsSzRead&&IsShRead)
  93. {
  94. if(wParam == MK_LBUTTON)
  95. {
  96. GetClientRect(hWnd, &rc);
  97. if((int)LOWORD(lParam)> (int)((int)rc.right /2-30))
  98. SendMessage(ghWndHq, WM_COMMAND, IDM_HQ_SH, 0L);
  99. else
  100. SendMessage(ghWndHq, WM_COMMAND, IDM_HQ_SZ, 0L);
  101. }
  102. }
  103. break; 
  104. case WM_RBUTTONDOWN:
  105.     if(IsWindowVisible(ghWndHq))
  106. SendMessage(ghWndHq, WM_KEYDOWN, VK_NEXT, 0L);
  107. break; 
  108. case WM_PAINT:
  109. if(HqPaintData.recCount <=0) break;
  110. BeginPaint(hWnd, &ps);
  111. if(hFont==NULL)
  112. {
  113. memset(&lf, 0, sizeof(lf));
  114. lf.lfHeight =10;
  115. lf.lfWeight =FW_NORMAL;               
  116. strcpy(lf.lfFaceName, "Ms Sans Serif");
  117. hFont =CreateFontIndirect(&lf);
  118. }
  119. GetClientRect(hWnd, &rc);
  120. GetTextMetrics(ps.hdc, &tm);
  121. x1 =rc.right/2-4;//-30;
  122. hPen=CreatePen(PS_SOLID, 1, RGB(180, 180, 180));
  123. SelectObject(ps.hdc, hPen);
  124. MoveTo(ps.hdc, 0, rc.bottom);//tm.tmHeight+6);
  125. LineTo(ps.hdc, rc.right, rc.bottom);//tm.tmHeight+6);
  126. MoveTo(ps.hdc, 0, 1);
  127. LineTo(ps.hdc, rc.right, 1);
  128. MoveTo(ps.hdc, x1+1, 2);
  129. LineTo(ps.hdc, x1+1, rc.bottom-1);//tm.tmHeight+5);
  130. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  131. DeleteObject(hPen);
  132. MoveTo(ps.hdc, 0, 0);
  133. LineTo(ps.hdc, rc.right, 0);
  134. MoveTo(ps.hdc, 0, rc.bottom-1);//tm.tmHeight+5);
  135. LineTo(ps.hdc, rc.right, rc.bottom-1);//tm.tmHeight+5);
  136. MoveTo(ps.hdc, x1, 2);
  137. LineTo(ps.hdc, x1, rc.bottom-1);//tm.tmHeight+5);
  138. SetTextColor(ps.hdc, RGB(255, 0, 255));
  139. SetBkColor(ps.hdc, RGB(0, 0, 0));
  140. SetTextAlign(ps.hdc, TA_RIGHT|TA_TOP);
  141. x =tm.tmAveCharWidth*2+4+1;
  142. TextOut(ps.hdc, x, (rc.bottom-tm.tmHeight)/2, "深", 2);
  143. TextOut(ps.hdc, x1+x, (rc.bottom-tm.tmHeight)/2, "沪", 2);
  144. x +=tm.tmAveCharWidth*8+1;
  145. //指数
  146. SetBkColor(ps.hdc, RGB(0, 0, 0));
  147. for(i =0; i<2; i++)
  148. {
  149. sprintf(tmp, "%.2f", DpData[i].zs[0]);
  150. if(DpData[i].sd[0] <0)
  151. {
  152. SetTextColor(ps.hdc, RGB(0, 255, 0));
  153. //strcat(tmp, "↓");
  154. }
  155. else if(DpData[i].sd[0] >0)
  156. {
  157. SetTextColor(ps.hdc, RGB(255, 0, 0));
  158. //strcat(tmp, "↑");
  159. }
  160. else
  161. SetTextColor(ps.hdc, RGB(255, 255, 255));
  162. TextOut(ps.hdc, x1*i+x, 2, tmp, strlen(tmp));
  163. }
  164. //指数升跌
  165. x +=tm.tmAveCharWidth*6+5;
  166. for(i =0; i<2; i++)
  167. {
  168. //if(i==1)
  169. //{
  170. // if(HqData[1].recCount!=0)
  171. // {
  172. // DpData[1].sd[0]=
  173. //   DpData[1].zs[0]-HqData[1].lpPreData[0].zrsp;
  174. // }
  175. //}
  176. if(DpData[i].sd[0] <0)
  177. {
  178. SetTextColor(ps.hdc, RGB(0, 255, 0));
  179. //strcat(tmp, "↓");
  180. }
  181. else if(DpData[i].sd[0] >0)
  182. {
  183. SetTextColor(ps.hdc, RGB(255, 0, 0));
  184. //strcat(tmp, "↑");
  185. }
  186. else
  187. SetTextColor(ps.hdc, RGB(255, 255, 255));
  188. sprintf(tmp, "  %.2f", DpData[i].sd[0]);
  189. TextOut(ps.hdc, x1*i+x+10, 2, tmp, strlen(tmp));
  190. }
  191. //总成交金额
  192. x +=tm.tmAveCharWidth*12+3;
  193. SetTextColor(ps.hdc, RGB(0, 180, 180));
  194. for(i =0; i<2; i++)
  195. {
  196. sprintf(tmp, "%.1f万", (float)DpData[i].cjzje/10);
  197. TextOut(ps.hdc, x1*i+x, 2, tmp, strlen(tmp));
  198. }
  199. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  200. hBrush =CreateSolidBrush(RGB(0, 255, 0));
  201. SelectObject(ps.hdc, hBrush);
  202. x+=2;
  203. width =x1 -2-x;
  204. //内外盘比
  205. for(i =0; i<2; i++)
  206. Rectangle(ps.hdc, x1*i+x, (rc.bottom-tm.tmHeight)/3-1,
  207. x1*i+x+width, (rc.bottom+tm.tmHeight)/3);
  208. SelectObject(ps.hdc, GetStockObject(WHITE_BRUSH));
  209. DeleteObject(hBrush);
  210. SelectObject(ps.hdc, GetStockObject(NULL_PEN));
  211. hBrush =CreateSolidBrush(RGB(255, 0, 0));
  212. SelectObject(ps.hdc, hBrush);
  213. for(i =0; i<2; i++)
  214. Rectangle(ps.hdc, x1*i+x+1, (rc.bottom-tm.tmHeight)/3,
  215. x1*i+x+1+(int)(DpData[i].npbl*width), (rc.bottom+tm.tmHeight)/3);
  216. SelectObject(ps.hdc, GetStockObject(WHITE_BRUSH));
  217. DeleteObject(hBrush);
  218. SelectObject(ps.hdc, hFont);
  219. SetBkColor(ps.hdc, RGB(0, 0, 0));
  220. SetTextAlign(ps.hdc, TA_LEFT|TA_BOTTOM);
  221. hMemDC =CreateCompatibleDC(ps.hdc);
  222. for(i =0; i<2; i++)
  223. {
  224. SelectObject(hMemDC, hBmpUp);
  225. BitBlt(ps.hdc, x1*i+25, rc.bottom-12,
  226. 10, tm.tmHeight, hMemDC, 0, 0, SRCCOPY);
  227. sprintf(tmp, "%d", DpData[i].upCount);
  228. SetTextColor(ps.hdc, RGB(255, 0, 0));
  229. TextOut(ps.hdc, x1*i+30+tm.tmAveCharWidth, rc.bottom-1, tmp, strlen(tmp));
  230. SelectObject(hMemDC, hBmpDown);
  231. BitBlt(ps.hdc, x1*i+25+tm.tmAveCharWidth*5, rc.bottom-12,
  232. 10, tm.tmHeight, hMemDC, 0, 0, SRCCOPY);
  233. sprintf(tmp, "%d", DpData[i].downCount);
  234. SetTextColor(ps.hdc, RGB(0, 255, 0));
  235. TextOut(ps.hdc, x1*i+30+tm.tmAveCharWidth*6, rc.bottom-1, tmp, strlen(tmp)); 
  236. SelectObject(hMemDC, hBmpEqual);
  237. BitBlt(ps.hdc, x1*i+25+tm.tmAveCharWidth*10, rc.bottom-12,
  238. 10, tm.tmHeight, hMemDC, 0, 0, SRCCOPY);
  239. sprintf(tmp, "%d", DpData[i].equalCount);
  240. SetTextColor(ps.hdc, RGB(255, 255, 0));
  241. TextOut(ps.hdc, x1*i+30+tm.tmAveCharWidth*11, rc.bottom-1, tmp, strlen(tmp));
  242. }
  243. DeleteObject(hMemDC);
  244. SetTextColor(ps.hdc, RGB(0, 180, 180));
  245. SetTextAlign(ps.hdc, TA_RIGHT|TA_BOTTOM);
  246. for(i =0; i<2; i++)
  247. {
  248. sprintf(tmp, "%ld手", DpData[i].cjss);
  249. TextOut(ps.hdc, x1*i+x-25, rc.bottom-2, tmp, strlen(tmp));
  250. }
  251. SetTextColor(ps.hdc, RGB(255, 255, 0));
  252. TextOut(ps.hdc, x1-2, rc.bottom-2, "Esc:菜单", strlen("Esc:菜单"));
  253. TextOut(ps.hdc, x1*2, rc.bottom-2, "F1:帮助", strlen("F1 帮助"));
  254. EndPaint(hWnd, &ps);
  255. break;
  256. case WM_DESTROY:
  257. if(hFont) DeleteObject(hFont);
  258. hFont =NULL;
  259. break;
  260. default:
  261. break;
  262. }
  263. return DefWindowProc(hWnd, message, wParam, lParam);
  264. }