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

金融证券系统

开发平台:

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 "cj.h"
  8. #include "hq_cl.h"
  9. #include "toolbar.h"
  10. #include "appmain.h"
  11. #define CJ_CLASS "CCJ"
  12. extern HINSTANCE ghInstance;
  13. extern HWND ghWndMain, ghWndCj;
  14. extern BOOL ErrMsg(HWND, LPSTR);
  15. extern BOOL IsZsRec(int jys, int rec_num);
  16. BOOL RegisterCj(void)
  17. {
  18. WNDCLASS wc;
  19. memset(&wc, 0, sizeof(wc));
  20. wc.lpfnWndProc =CjWndProc;
  21. wc.lpszClassName =CJ_CLASS;
  22. wc.hbrBackground =GetStockObject(BLACK_BRUSH);
  23. wc.hInstance = ghInstance;
  24. wc.hCursor = LoadCursor(NULL, IDC_ARROW);        
  25. if(!RegisterClass(&wc)) return FALSE;
  26. return TRUE;
  27. }
  28. extern int CapHig ;
  29. BOOL CreateWndCj(HWND hWnd)
  30. {                          
  31. int x, y;
  32. HWND hwnd;
  33. int x0,y0,x1,y1;
  34. TEXTMETRIC tm;
  35. HDC hDC;
  36. RECT rc,rc1;
  37. x =GetSystemMetrics(SM_CXSCREEN);
  38. GetClientRect(ghWndMain,&rc);
  39. y =rc.bottom -rc.top;
  40. GetWindowRect(ghWndXlt,&rc1);
  41. hDC =GetDC(hWnd);
  42. GetTextMetrics(hDC, &tm);
  43. ReleaseDC(hWnd, hDC);
  44.     x0 =rc1.right;
  45.     y0 =tm.tmHeight*14+STATUS_HEIGHT +TOOLBAR_HEIGHT+2;
  46.     x1 =x*1/3-30-1;
  47.     //y1 =y-y0 -STATUS_HEIGHT -6 -GetSystemMetrics(SM_CYCAPTION);
  48.     y1 =rc.bottom -STATUS_HEIGHT-y0 -MSG_HEIGHT;
  49.     
  50. if(y1<=tm.tmHeight*2) y1 =tm.tmHeight*2;
  51. if(ghWndCj ==NULL)
  52. {
  53. hwnd =CreateWindow(CJ_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,
  54. x0, y0, x1, y1,
  55. hWnd, NULL, ghInstance, NULL);
  56. if(hwnd ==NULL)
  57. {
  58. ErrMsg(hWnd, "不能建立成交明细窗口");
  59. return FALSE;
  60. }
  61. ghWndCj =hwnd;
  62. }
  63. else
  64. {
  65. SetWindowPos(ghWndCj, (HWND) NULL,x0, y0, x1, y1,NULL);
  66. }
  67. return TRUE;
  68. }
  69. LRESULT CALLBACK CjWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  70. {
  71. int i, k;
  72. long lc;
  73. char tmp[256];
  74. PAINTSTRUCT ps;
  75. DWORD dw;
  76. int x, y;
  77. RECT rc;
  78. HPEN hPen;
  79. static int cjRecNum =0;
  80. static BOOL fInBottom =FALSE;
  81. BOOL isb;
  82. float zjjg;
  83. TEXTMETRIC tm;           
  84. LPSTR lpCjTitles[] ={"时间","价格","数量",NULL};
  85.            
  86. switch(message)
  87. {
  88. case WM_CREATE:
  89. cjRecNum =0;
  90. break;
  91. case WM_SETFOCUS:
  92. SetFocus(ghWndMain);
  93. break;
  94. case WM_TIMER:
  95. break;
  96. case WM_READ_OK:
  97. cjRecNum =0;
  98. fInBottom =FALSE;
  99. InvalidateRect(hWnd, NULL, TRUE);
  100. break;
  101. case WM_SIZE:
  102. if(IsWindowVisible)
  103. InvalidateRect(hWnd, NULL, TRUE);
  104. break;
  105. case WM_KEYDOWN:
  106. switch(wParam)
  107. {
  108. case VK_UP:
  109. fInBottom =FALSE;
  110. if(--cjRecNum <0)
  111. {
  112. cjRecNum =0;
  113. return 0L;
  114. }
  115. break;
  116. case VK_DOWN:
  117. if(fInBottom) return 0L;
  118. k =0;
  119. for(i =0; i<GraphData.minEnd; i++)
  120. if(GraphData.lpGraData[i].lc) k++;
  121. if(++cjRecNum >=k)
  122. cjRecNum =k-1;
  123. break;                                
  124. default: return 0L;
  125. }
  126. InvalidateRect(hWnd, NULL, TRUE);
  127. break;
  128. case WM_PAINT:
  129. BeginPaint(hWnd, &ps);
  130. GetClientRect(hWnd, &rc);
  131. hPen =CreatePen(PS_SOLID, 2, RGB(180, 180, 180));
  132. SelectObject(ps.hdc, hPen);
  133. SelectObject(ps.hdc, GetStockObject(NULL_BRUSH));
  134. Rectangle(ps.hdc, 2, 2, rc.right-2, rc.bottom-1);
  135. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  136. DeleteObject(hPen);
  137. MoveTo(ps.hdc, rc.right, 0);
  138. LineTo(ps.hdc, 0, 0);
  139. LineTo(ps.hdc, 0, rc.bottom);
  140. hPen =CreatePen(PS_SOLID, 2, RGB(80, 80, 80));
  141. SelectObject(ps.hdc, hPen);
  142. LineTo(ps.hdc, rc.right-1, rc.bottom-1);
  143. LineTo(ps.hdc, rc.right-1, 0);
  144. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  145. DeleteObject(hPen);
  146. strcpy(tmp, "成交");
  147. dw =GetTextExtent(ps.hdc, tmp, strlen(tmp));
  148. x =LOWORD(dw); y =HIWORD(dw);
  149. SetBkMode(ps.hdc, OPAQUE);
  150. SetBkColor(ps.hdc, RGB(0, 0, 0));
  151. k =0;
  152. i =0;
  153. isb =FALSE;
  154. if(GraphData.minEnd)
  155. {
  156. GetTextMetrics(ps.hdc, &tm);
  157. while(1)
  158. {
  159. if(k >=GraphData.minEnd)
  160. {
  161. fInBottom =TRUE;
  162. break;
  163. }
  164. lc =GraphData.lpGraData[GraphData.minEnd-1-k].lc;
  165. zjjg =GraphData.lpGraData[GraphData.minEnd-1-k].zjjg;
  166. isb =GraphData.lpGraData[GraphData.minEnd-1-k].BS;
  167. if((y+1)*(i-cjRecNum) +tm.tmHeight> rc.bottom) break;
  168. if(i<cjRecNum){i++;k++; continue;}
  169. // time
  170. SetTextColor(ps.hdc, RGB(0, 180, 180));
  171. wsprintf(tmp, "%02d:%02d",
  172. GraphData.lpGraData[GraphData.minEnd-1-k].tim/60,
  173. GraphData.lpGraData[GraphData.minEnd-1-k].tim%60);
  174. SetTextAlign(ps.hdc, TA_LEFT|TA_TOP);
  175. TextOut(ps.hdc, 10, (y)*(i-cjRecNum)+5, tmp, strlen(tmp));
  176. //zjjg
  177. if(zjjg >0)
  178. SetTextColor(ps.hdc, RGB(255, 0, 0));
  179. else if(zjjg <0) SetTextColor(ps.hdc, RGB(0, 255, 0));
  180. else SetTextColor(ps.hdc, RGB(255, 255, 0));
  181. sprintf(tmp, "%.2f", zjjg+GraphData.GraHead.zrsp);
  182. SetTextAlign(ps.hdc, TA_RIGHT|TA_TOP);
  183. TextOut(ps.hdc, rc.right/2+10, (y)*(i-cjRecNum)+5, tmp, strlen(tmp));
  184. //lc
  185. strcpy(tmp, " ");
  186. sprintf(&tmp[1], "%ld", lc);
  187. if(isb)
  188. SetTextColor(ps.hdc, RGB(255, 0, 0));
  189. else SetTextColor(ps.hdc, RGB(0, 255, 0));
  190. TextOut(ps.hdc, rc.right-10, (y)*(i-cjRecNum)+5, tmp, strlen(tmp));
  191. i++;k++;
  192. }
  193. }
  194. EndPaint(hWnd, &ps);
  195. break;
  196. }
  197. return DefWindowProc(hWnd, message, wParam, lParam);
  198. }