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

金融证券系统

开发平台:

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 "zs.h"
  9. #include "toolbar.h"
  10. #define ZS_CLASS "CZS"
  11. extern HINSTANCE ghInstance;
  12. extern HWND ghWndMain, ghWndZs;
  13. extern BOOL ErrMsg(HWND, LPSTR);
  14. extern BOOL IsZsRec(int jys, int rec_num);
  15. BOOL RegisterZs(void)
  16. {
  17. WNDCLASS wc;
  18. memset(&wc, 0, sizeof(wc));
  19. wc.lpfnWndProc =ZsWndProc;
  20. wc.lpszClassName =ZS_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 CreateWndZs(HWND hWnd)
  28. {                          
  29. int x ,x0,y0,x1,y1;
  30. HWND hwnd;
  31. HDC hDC;
  32. TEXTMETRIC tm;
  33. RECT rc;
  34. x =GetSystemMetrics(SM_CXSCREEN);
  35. hDC =GetDC(hWnd);
  36. GetTextMetrics(hDC, &tm);
  37. ReleaseDC(hWnd, hDC);
  38. GetWindowRect(ghWndXlt,&rc);
  39.     x0 =rc.right;
  40.     y0 =STATUS_HEIGHT +TOOLBAR_HEIGHT;
  41.     x1 =x*1/3-30-1;
  42.     y1 =tm.tmHeight*8; //+STATUS_HEIGHT;
  43.     
  44.     if(ghWndZs==NULL)
  45.     {
  46. hwnd =CreateWindow(ZS_CLASS, NULL, WS_CHILD|WS_CLIPSIBLINGS,
  47. x0, y0, x1, y1,hWnd, NULL, ghInstance, NULL);
  48.     
  49. if(hwnd ==NULL)
  50. {
  51. ErrMsg(hWnd, "Error create zs window");
  52. return FALSE;
  53. }
  54. ghWndZs =hwnd;
  55. }
  56. else
  57. {
  58. SetWindowPos(ghWndZs, (HWND) NULL,x0, y0, x1, y1,NULL);
  59. }
  60. return TRUE;
  61. }
  62. LPSTR SzZsTitles[]=
  63. {
  64. "成分", "成A", "成B", "工业", "商业", "金融", "地产",
  65. "公用", "综企", "综合", "A股", "B股", "基金", NULL
  66. };
  67. LPSTR ShZsTitles[]=
  68. {
  69. "上证", "A股", "B股", "工业", "商业", "地产",
  70. "公用", "综合", "上30", NULL
  71. };
  72. //LPSTR ZsTitles[2] ={(LPSTR)&SzZsTitles[0], (LPSTR)&ShZsTitles[0]};
  73. extern HFONT ghFontSmall;
  74. LRESULT CALLBACK ZsWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  75. {
  76. char tmp[256];
  77. PAINTSTRUCT ps;
  78. DWORD dw;
  79. int i, j, k, m, y, height;
  80. RECT rc;
  81. HPEN hPen;
  82. static int showSd =0;
  83. switch(message)
  84. {
  85. case WM_SETFOCUS:
  86. SetFocus(ghWndMain);
  87. break;
  88. case WM_KEYDOWN:
  89. switch(wParam)
  90. {
  91. case VK_UP:
  92. case VK_DOWN:
  93. showSd =(showSd+1)%2;
  94. InvalidateRect(hWnd, NULL, TRUE);
  95. break;
  96. }
  97. break;
  98. case WM_SIZE:
  99. if(IsWindowVisible)
  100.               InvalidateRect(hWnd, NULL, TRUE);
  101. break;
  102. case WM_PAINT:
  103. GetClientRect(hWnd, &rc);
  104. if(GraphData.jys ==0)
  105. j =13;
  106. else
  107. j =9;
  108. BeginPaint(hWnd, &ps);
  109. hPen =CreatePen(PS_SOLID, 2, RGB(180, 180, 180));
  110. SelectObject(ps.hdc, hPen);
  111. SelectObject(ps.hdc, GetStockObject(NULL_BRUSH));
  112. Rectangle(ps.hdc, 2, 2, rc.right-2, rc.bottom-1);
  113. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  114. DeleteObject(hPen);
  115. MoveTo(ps.hdc, rc.right, 0);
  116. LineTo(ps.hdc, 0, 0);
  117. LineTo(ps.hdc, 0, rc.bottom);
  118. hPen =CreatePen(PS_SOLID, 2, RGB(80, 80, 80));
  119. SelectObject(ps.hdc, hPen);
  120. LineTo(ps.hdc, rc.right-1, rc.bottom-1);
  121. LineTo(ps.hdc, rc.right-1, 0);
  122. SelectObject(ps.hdc, GetStockObject(WHITE_PEN));
  123. DeleteObject(hPen);
  124. strcpy(tmp, "指数");
  125. SelectObject(ps.hdc, ghFontSmall);
  126. dw =GetTextExtent(ps.hdc, tmp, strlen(tmp));
  127. height =HIWORD(dw)-1;
  128. SetBkMode(ps.hdc, TRANSPARENT);
  129. SetTextColor(ps.hdc, RGB(255, 255, 0));
  130. SetTextAlign(ps.hdc, TA_LEFT|TA_TOP);
  131. k = GraphData.recNum;
  132. y =3;
  133. m =0;
  134. for(i =0; i<j; i++)
  135. {
  136. SetTextAlign(ps.hdc, TA_LEFT|TA_TOP);
  137. SetTextColor(ps.hdc, RGB(255, 255, 0));
  138. if(y+height >rc.bottom -3){ m =1; y=3;}
  139. //TextOut(ps.hdc, rc.right*m/2+5, y,
  140. // ((LPSTR *)ZsTitles[GraphData.jys])[i],
  141. // strlen(((LPSTR *)ZsTitles[GraphData.jys])[i]));
  142. if(GraphData.jys ==0)
  143. TextOut(ps.hdc, rc.right*m/2+5, y,
  144. SzZsTitles[i], strlen(SzZsTitles[i]));
  145. else
  146. TextOut(ps.hdc, rc.right*m/2+5, y,
  147. ShZsTitles[i], strlen(ShZsTitles[i]));
  148. if(showSd)
  149. sprintf(tmp, "%.2f", DpData[GraphData.jys].sd[i]);
  150. else
  151. sprintf(tmp, "%.2f", DpData[GraphData.jys].zs[i]);
  152. SetTextAlign(ps.hdc, TA_RIGHT|TA_TOP);
  153. if(DpData[GraphData.jys].sd[i] >0)
  154. SetTextColor(ps.hdc, RGB(255, 0, 0));
  155. else if(DpData[GraphData.jys].sd[i] <0)
  156. SetTextColor(ps.hdc, RGB(0, 255, 0));
  157. else
  158. SetTextColor(ps.hdc, RGB(255, 255, 255));
  159. TextOut(ps.hdc, rc.right/2+rc.right*m/2-5, y,
  160. tmp, strlen(tmp));
  161. y +=height;
  162. }
  163. EndPaint(hWnd, &ps);
  164. break;
  165. }
  166. return DefWindowProc(hWnd, message, wParam, lParam);
  167. }