home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Unleashed / Visual_Basic_4_Unleashed_SAMS_Publishing_1995.iso / chartfx / cfxvbx / cfxvbx.cpp < prev    next >
C/C++ Source or Header  |  1995-01-24  |  7KB  |  200 lines

  1. // cfxvbx.cpp : implementation of the CFXVBX struct
  2. // This file permits C++ applications to use CHARTFX functions with the VBX version
  3. // You don't need to include any LIB files to use these functions
  4.  
  5. // MFC USERS: Do not use the precompiled header for this file. Use Automatic Pre-Compiler Headers Instead.
  6. // IF you want to use Precompiled headers (stdafx) for all files, you must add this line:
  7. // #include "stdafx.h"
  8. #include <windows.h>
  9.  
  10. // Function prototypes in Chart FX
  11. typedef HWND    (far pascal *PFNCFX_CREATE)(long,long,HWND,int,int,int,int,int,int,UINT,DWORD);
  12. typedef long    (far pascal *PFNCFX_SEND)(HWND,UINT,WPARAM,LPARAM);
  13. typedef long    (far pascal *PFNCFX_OPENDATA)(HWND,UINT,DWORD);
  14. typedef BOOL    (far pascal *PFNCFX_CLOSEDATA)(HWND,UINT);
  15. typedef long    (far pascal *PFNCFX_SETVALUE)(HWND,int,int,double);
  16. typedef long    (far pascal *PFNCFX_SETINIVALUE)(HWND,int,int,double);
  17. typedef long    (far pascal *PFNCFX_SETXVALUE)(HWND,int,int,double);
  18. typedef long    (far pascal *PFNCFX_SETCONST)(HWND,int,double);
  19. typedef long    (far pascal *PFNCFX_SETCOLOR)(HWND,int,DWORD,BOOL);
  20. typedef void    (far pascal *PFNCFX_SETADM)(HWND,int,double);
  21. typedef long    (far pascal *PFNCFX_SETSTRIPE)(HWND,int,double,double,DWORD);
  22. typedef long    (far pascal *PFNCFX_SETSTATUSITEM)(HWND,int,BOOL,UINT,BOOL,int,int,int,DWORD);
  23. typedef long    (far pascal *PFNCFX_GET)(HWND,long,UINT);
  24. typedef double    (far pascal *PFNCFX_GET2)(HWND,long,UINT,double far *);
  25. typedef long    (far pascal *PFNCFX_PAINT)(HWND,HDC,int,int,int,int, BOOL, LPPAINTSTRUCT);
  26. typedef double    (far pascal *PFNCFX_GETEX)(HWND,int,int,UINT);
  27. typedef void    (far pascal *PFNCFX_GETEX2)(HWND,int,int,UINT,double far *);
  28. typedef long    (far pascal *PFNCFX_OPENDATAEX)(HWND,UINT,int,int);
  29. typedef double    (far pascal *PFNCFX_GETADM)(HWND,int);
  30. typedef void    (far pascal *PFNCFX_GETADM2)(HWND,int,double far *);
  31.  
  32. // Function Ordinals in DLL and VBX
  33. enum {
  34.     CFX_CREATE=2,
  35.     CFX_SEND,
  36.     CFX_PAINT,
  37.     CFX_OPENDATA,
  38.     CFX_CLOSEDATA,
  39.     CFX_SETVALUE,
  40.     CFX_SETINIVALUE,
  41.     CFX_SETCONST,
  42.     CFX_SETCOLOR,
  43.     CFX_SETSTRIPE,
  44.     CFX_SETADM,
  45.     CFX_SETXVALUE,
  46.     CFX_SETSTATUSITEM,
  47.     CFX_GET,
  48.     CFX_GET2,
  49.     CFX_OPENDATAEX,
  50.     CFX_GETADM,
  51.     CFX_GETADM2,
  52.     CFX_GETPAINTINFO,
  53.     CFX_GETEX,
  54.     CFX_GETEX2,
  55. };
  56.  
  57. #define CFX_FIRST        CFX_CREATE
  58. #define CFX_LAST        CFX_GET2
  59.  
  60. // Struct used to encapsulate LoadLibrary - FreeLibrary
  61. struct CFXVBX {
  62.  
  63.     HINSTANCE hInstance;                                    // Instance of ChartFX
  64.     FARPROC pFunction[CFX_LAST - CFX_FIRST + 1];            // Array of Pointer to functions
  65.  
  66. // Implementation
  67.     CFXVBX();                                                // Constructor
  68.     ~CFXVBX();                                                // Destructor
  69. };
  70.  
  71. // Static Variable for automatic startup/cleanup
  72. static CFXVBX cfxVbx;
  73.  
  74. // Initialization code
  75. CFXVBX::CFXVBX()
  76. {
  77.     int i;
  78.     
  79.     // Load CHART2FX.VBX (Increment module count)
  80.     hInstance = LoadLibrary("CHART2FX.VBX");
  81.  
  82.     // Load Function Pointers by Ordinal
  83.     for(i=CFX_FIRST;i<=CFX_LAST;i++)
  84.         pFunction[i-CFX_FIRST] = GetProcAddress(hInstance,(LPCSTR) i);
  85. }
  86.  
  87. // Termination code
  88. CFXVBX::~CFXVBX()
  89. {
  90.     // Free CHART2FX.VBX (Decrement module count)
  91.     FreeLibrary(hInstance);
  92. }
  93.  
  94. extern "C" {
  95.  
  96. // All ChartFX Functions must be C (and FAR PASCAL) code for chart2fx.hpp header file compatibility
  97.  
  98. HWND WINAPI chart_Create(long lType,long lStyle,HWND hDad,int x,int y,int w,int h,int nPoint,
  99.                          int nSerie,UINT wID,DWORD dwStyle)
  100. {
  101.     return ((PFNCFX_CREATE) (cfxVbx.pFunction[CFX_CREATE-CFX_FIRST]))(lType,lStyle,hDad,x,y,w,h,nPoint,nSerie,wID,dwStyle);
  102. }
  103.  
  104. long WINAPI chart_Send(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam)
  105. {
  106.     return ((PFNCFX_SEND) (cfxVbx.pFunction[CFX_SEND-CFX_FIRST]))(hWnd,wMsg,wParam,lParam);
  107. }
  108.  
  109. long WINAPI chart_OpenData(HWND hWnd,UINT nCode,DWORD dwData)
  110. {
  111.     return ((PFNCFX_OPENDATA) (cfxVbx.pFunction[CFX_OPENDATA-CFX_FIRST]))(hWnd,nCode,dwData);
  112. }
  113.  
  114. BOOL WINAPI chart_CloseData(HWND hWnd,UINT nCode)
  115. {
  116.     return ((PFNCFX_CLOSEDATA) (cfxVbx.pFunction[CFX_CLOSEDATA-CFX_FIRST]))(hWnd,nCode);
  117. }
  118.  
  119. long WINAPI chart_SetValue(HWND hWnd,int nSeries,int nPoint,double dValue)
  120. {
  121.     return ((PFNCFX_SETVALUE) (cfxVbx.pFunction[CFX_SETVALUE-CFX_FIRST]))(hWnd,nSeries,nPoint,dValue);
  122. }
  123.  
  124. long WINAPI chart_SetIniValue(HWND hWnd,int nSeries,int nPoint,double dValue)
  125. {
  126.     return ((PFNCFX_SETINIVALUE) (cfxVbx.pFunction[CFX_SETINIVALUE-CFX_FIRST]))(hWnd,nSeries,nPoint,dValue);
  127. }
  128.  
  129. long WINAPI chart_SetXvalue(HWND hWnd,int nSeries,int nPoint,double dValue)
  130. {
  131.     return ((PFNCFX_SETXVALUE) (cfxVbx.pFunction[CFX_SETXVALUE-CFX_FIRST]))(hWnd,nSeries,nPoint,dValue);
  132. }
  133.  
  134. long WINAPI chart_SetConst(HWND hWnd,int n,double dValue)
  135. {
  136.     return ((PFNCFX_SETCONST) (cfxVbx.pFunction[CFX_SETCONST-CFX_FIRST]))(hWnd,n,dValue);
  137. }
  138.  
  139. long WINAPI chart_SetColor(HWND hWnd,int nColor,DWORD rgb,BOOL bBack)
  140. {
  141.     return ((PFNCFX_SETCOLOR) (cfxVbx.pFunction[CFX_SETCOLOR-CFX_FIRST]))(hWnd,nColor,rgb,bBack);
  142. }
  143.  
  144. void WINAPI chart_SetAdm(HWND hWnd,int nCode,double dValue)
  145. {
  146.     ((PFNCFX_SETADM) (cfxVbx.pFunction[CFX_SETADM-CFX_FIRST]))(hWnd,nCode,dValue);
  147. }
  148.  
  149. long WINAPI chart_SetStripe(HWND hWnd,int nStripe,double dBegin,double dEnd,DWORD rgb)
  150. {
  151.     return ((PFNCFX_SETSTRIPE) (cfxVbx.pFunction[CFX_SETSTRIPE-CFX_FIRST]))(hWnd,nStripe,dBegin,dEnd,rgb);
  152. }
  153.  
  154. long WINAPI chart_SetStatusItem(HWND hWnd,int nItem,BOOL bText,UINT wID,BOOL bFrame,int nWidth,int nMin,int nDesp,DWORD dwStyle)
  155. {
  156.     return ((PFNCFX_SETSTATUSITEM) (cfxVbx.pFunction[CFX_SETSTATUSITEM-CFX_FIRST]))(hWnd,nItem,bText,wID,bFrame,nWidth,nMin,nDesp,dwStyle);
  157. }
  158.  
  159. double WINAPI chart_Get(HWND hWnd,long l,UINT wCode)
  160. {
  161.     return ((PFNCFX_GET) (cfxVbx.pFunction[CFX_GET-CFX_FIRST]))(hWnd,l,wCode);
  162. }
  163.  
  164. void WINAPI chart_Get2(HWND hWnd,long l,UINT wCode,double far *dValue)
  165. {
  166.     ((PFNCFX_GET2) (cfxVbx.pFunction[CFX_GET2-CFX_FIRST]))(hWnd,l,wCode,dValue);
  167. }
  168.  
  169. void WINAPI chart_Paint(HWND hWnd,HDC hDC,int xLeft,int yTop,int xRight,int yBottom, BOOL bPrint, LPPAINTSTRUCT lps)
  170. {
  171.     ((PFNCFX_PAINT) (cfxVbx.pFunction[CFX_PAINT-CFX_FIRST]))(hWnd,hDC,xLeft,yTop,xRight,yBottom,bPrint,lps);
  172. }
  173.  
  174. double WINAPI chart_GetEx(HWND hWnd,int nSerie,int nPoint,UINT wCode)
  175. {
  176.     return ((PFNCFX_GETEX) (cfxVbx.pFunction[CFX_GETEX-CFX_FIRST]))(hWnd,nSerie,nPoint,wCode);
  177. }
  178.  
  179. void WINAPI chart_GetEx2(HWND hWnd,int nSerie,int nPoint,UINT wCode, double far *pfResult)
  180. {
  181.     ((PFNCFX_GETEX2) (cfxVbx.pFunction[CFX_GETEX2-CFX_FIRST]))(hWnd,nSerie,nPoint,wCode,pfResult);
  182. }
  183.  
  184. long WINAPI chart_OpenDataEx (HWND hWnd,UINT wType,int nSerie,int nPoint)
  185. {
  186.     return ((PFNCFX_OPENDATAEX) (cfxVbx.pFunction[CFX_OPENDATAEX-CFX_FIRST]))(hWnd,wType,nSerie,nPoint);
  187.  
  188. double WINAPI chart_GetAdm(HWND hWnd,UINT wCode)
  189. {
  190.     return ((PFNCFX_GETADM) (cfxVbx.pFunction[CFX_GETADM-CFX_FIRST]))(hWnd,wCode);
  191. }
  192.  
  193. void WINAPI chart_GetAdm2(HWND hWnd,UINT wCode,double far *pfResult)
  194. {
  195.     ((PFNCFX_GETADM2) (cfxVbx.pFunction[CFX_GETADM2-CFX_FIRST]))(hWnd,wCode,pfResult);
  196. }
  197.  
  198. }; // Extern C
  199.