home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sysmgmt / sms / smsapi / browser / browser.h < prev    next >
C/C++ Source or Header  |  1996-10-15  |  6KB  |  184 lines

  1. //***************************************************************************
  2. //
  3. //  browser.h
  4. //
  5. //  Sample Windows app for SMS API.
  6. //
  7. //  This program illustrates the use of most of the SMS API set in order to
  8. //  implement a generic Objectity browser.
  9. //  Since this program is statically linked with smsapi.lib/dll it acts as
  10. //  an SMS objectity browser only.
  11. //
  12. //  Using this program it is possible to view all containers and folders
  13. //  that are implemented in the SMS API.
  14. //
  15. //  Jonathan Shuval     September 1994.
  16. //
  17. //***************************************************************************
  18.  
  19.  
  20. // ==========================================================================
  21. //
  22. //      Function prototypes.
  23. //
  24. // ==========================================================================
  25.  
  26. extern "C" BOOL CALLBACK LoginDlg(  HWND hDlg,
  27.                                     UINT message,
  28.                                     WPARAM wParam,
  29.                                     LPARAM lParam);
  30.  
  31.  
  32. extern "C" BOOL CALLBACK MainDlg(   HWND hDlg,
  33.                                     UINT message,
  34.                                     WPARAM wParam,
  35.                                     LPARAM lParam);
  36.  
  37.  
  38. extern "C" BOOL CALLBACK ContainerViewDlg(
  39.                                     HWND hDlg,
  40.                                     UINT message,
  41.                                     WPARAM wParam,
  42.                                     LPARAM lParam);
  43.  
  44. extern "C" BOOL CALLBACK ConfigFilterDlg(
  45.                                     HWND hDlg,
  46.                                     UINT message,
  47.                                     WPARAM wParam,
  48.                                     LPARAM lParam);
  49.  
  50. extern "C" BOOL CALLBACK FolderViewDlg(
  51.                                     HWND hDlg,
  52.                                     UINT message,
  53.                                     WPARAM wParam,
  54.                                     LPARAM lParam);
  55.  
  56. extern "C" BOOL CALLBACK ScalarViewDlg(
  57.                                     HWND hDlg,
  58.                                     UINT message,
  59.                                     WPARAM wParam,
  60.                                     LPARAM lParam);
  61.  
  62. extern "C" BOOL CALLBACK ExpressionViewDlg(
  63.                                     HWND hDlg,
  64.                                     UINT message,
  65.                                     WPARAM wParam,
  66.                                     LPARAM lParam);
  67.  
  68. extern "C" BOOL CALLBACK ViewSelFiltersDlg(
  69.                                     HWND hDlg,
  70.                                     UINT message,
  71.                                     WPARAM wParam,
  72.                                     LPARAM lParam);
  73.  
  74. // ==========================================================================
  75. //
  76. //      Globals.
  77. //
  78. // ==========================================================================
  79.  
  80. char szMsg[100];            // Message buffer. Used in formatting MessageBox
  81.                             // strings.
  82.  
  83. static HINSTANCE _hInstance;
  84.  
  85.  
  86. // Get the available filter types and insert them into the menu
  87. FILTER_INFO    *gpAvailFilterList = NULL;
  88. DWORD ctFilters = 0;
  89.  
  90. // =============================================================
  91. // Define a structure that we use in the main dlg for selected
  92. // filters.
  93. // This is the same as FILTER_INFO but we have an additional
  94. // field for the filter handle. A handle of NULL means that the
  95. // filter has not been opened.
  96. typedef struct _MY_FILTER_INFO {
  97.     FILTER_INFO *pF;
  98.     HANDLE hFilter;
  99. } MY_FILTER_INFO;
  100.  
  101. // =============================================================
  102.  
  103. // Connection handle, make global.
  104. HANDLE ghConnect;
  105.  
  106. // Handle of current top-level folder/container.
  107. HANDLE ghFolder;
  108.  
  109. // Used to connect to datasource. Global so that LoginDlg can fill it in.
  110. DATASOURCE gdsParams;
  111. char gszServer[33];
  112. char gszDbName[33];
  113. char gszUserName[33];
  114. char gszPasswd[33];
  115.  
  116. FOLDER_INFO *gpCInfo;
  117. MY_FILTER_INFO *gpMyFilter;
  118.  
  119.  
  120.  
  121. HANDLE ghFilter;        // filter handle. Set in the filter stuff.
  122.                         // Use in main dlg.
  123.  
  124. HANDLE ghContainer;                 // Container handle.
  125.  
  126. // [02-May-96] Changed from struct into class.
  127. // Used in folder view.
  128. class CFrame {
  129. public:
  130.     CFrame() {
  131.         // Clear everything.
  132.         hFolder = NULL;
  133.         memset(szFolderID, 0, 256);
  134.         memset(szfType, 0, 256);
  135.         fType = 0;
  136.         ctScalars = 0;
  137.         ctFolders = 0;
  138.         ctFolderTypes = 0;
  139.         phFolders = NULL;
  140.         ctTokens = 0;
  141.     };
  142.     ~CFrame() {};
  143.  
  144.     HANDLE   hFolder;           // Make local copy of current folder.
  145.     char     szFolderID[256];   // This folder's ID.
  146.     char     szfType[256];      // Folder tag.
  147.     DWORD    fType;             // Folder type.
  148.     DWORD    ctScalars;         // Number of scalars.
  149.     DWORD    ctFolders;         // Number of sub-folders.
  150.     DWORD    ctFolderTypes;     // Number of sub-folder types.
  151.     HANDLE   *phFolders;        // Array of handles to the folders.
  152.     CObArray aszID;             // Array of sub-folder's IDs.
  153.     // 02-May-96
  154.     DWORD    ctTokens;          // Num of tokens in expression (if supported).
  155. };
  156. CFrame *CreateFolderFrame( HWND hDlg, HANDLE hFolder );
  157.  
  158. // Display the given folder frame. This is part of the Folder view dialogue.
  159. void DisplayFolderFrame( HWND hDlg, CFrame *pFrame );
  160.  
  161.  
  162.  
  163. class CFrameStack
  164. {
  165. public:
  166.     CFrameStack(HWND hDlg);
  167.  
  168.     ~CFrameStack();
  169.  
  170.     void push( CFrame *pFrame );
  171.  
  172.     CFrame *pop();
  173.  
  174.     void Dump( const char *psz );   // debug
  175.  
  176.     int sp;
  177.     CObArray stack;
  178.     HWND _hDlg;
  179.  
  180. };  /* CFrameStack */
  181.  
  182. /* EOF: browser.h */
  183.  
  184.