BROWSER.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:

Windows编程

开发平台:

Visual C++

  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. //      Function prototypes.
  21. //
  22. // ==========================================================================
  23. extern "C" BOOL CALLBACK LoginDlg(  HWND hDlg,
  24.                                     UINT message,
  25.                                     WPARAM wParam,
  26.                                     LPARAM lParam);
  27. extern "C" BOOL CALLBACK MainDlg(   HWND hDlg,
  28.                                     UINT message,
  29.                                     WPARAM wParam,
  30.                                     LPARAM lParam);
  31. extern "C" BOOL CALLBACK ContainerViewDlg(
  32.                                     HWND hDlg,
  33.                                     UINT message,
  34.                                     WPARAM wParam,
  35.                                     LPARAM lParam);
  36. extern "C" BOOL CALLBACK ConfigFilterDlg(
  37.                                     HWND hDlg,
  38.                                     UINT message,
  39.                                     WPARAM wParam,
  40.                                     LPARAM lParam);
  41. extern "C" BOOL CALLBACK FolderViewDlg(
  42.                                     HWND hDlg,
  43.                                     UINT message,
  44.                                     WPARAM wParam,
  45.                                     LPARAM lParam);
  46. extern "C" BOOL CALLBACK ScalarViewDlg(
  47.                                     HWND hDlg,
  48.                                     UINT message,
  49.                                     WPARAM wParam,
  50.                                     LPARAM lParam);
  51. extern "C" BOOL CALLBACK ExpressionViewDlg(
  52.                                     HWND hDlg,
  53.                                     UINT message,
  54.                                     WPARAM wParam,
  55.                                     LPARAM lParam);
  56. extern "C" BOOL CALLBACK ViewSelFiltersDlg(
  57.                                     HWND hDlg,
  58.                                     UINT message,
  59.                                     WPARAM wParam,
  60.                                     LPARAM lParam);
  61. // ==========================================================================
  62. //
  63. //      Globals.
  64. //
  65. // ==========================================================================
  66. char szMsg[100];            // Message buffer. Used in formatting MessageBox
  67.                             // strings.
  68. static HINSTANCE _hInstance;
  69. // Get the available filter types and insert them into the menu
  70. FILTER_INFO    *gpAvailFilterList = NULL;
  71. DWORD ctFilters = 0;
  72. // =============================================================
  73. // Define a structure that we use in the main dlg for selected
  74. // filters.
  75. // This is the same as FILTER_INFO but we have an additional
  76. // field for the filter handle. A handle of NULL means that the
  77. // filter has not been opened.
  78. typedef struct _MY_FILTER_INFO {
  79.     FILTER_INFO *pF;
  80.     HANDLE hFilter;
  81. } MY_FILTER_INFO;
  82. // =============================================================
  83. // Connection handle, make global.
  84. HANDLE ghConnect;
  85. // Handle of current top-level folder/container.
  86. HANDLE ghFolder;
  87. // Used to connect to datasource. Global so that LoginDlg can fill it in.
  88. DATASOURCE gdsParams;
  89. char gszServer[33];
  90. char gszDbName[33];
  91. char gszUserName[33];
  92. char gszPasswd[33];
  93. FOLDER_INFO *gpCInfo;
  94. MY_FILTER_INFO *gpMyFilter;
  95. HANDLE ghFilter;        // filter handle. Set in the filter stuff.
  96.                         // Use in main dlg.
  97. HANDLE ghContainer;                 // Container handle.
  98. // [02-May-96] Changed from struct into class.
  99. // Used in folder view.
  100. class CFrame {
  101. public:
  102.     CFrame() {
  103.         // Clear everything.
  104.         hFolder = NULL;
  105.         memset(szFolderID, 0, 256);
  106.         memset(szfType, 0, 256);
  107.         fType = 0;
  108.         ctScalars = 0;
  109.         ctFolders = 0;
  110.         ctFolderTypes = 0;
  111.         phFolders = NULL;
  112.         ctTokens = 0;
  113.     };
  114.     ~CFrame() {};
  115.     HANDLE   hFolder;           // Make local copy of current folder.
  116.     char     szFolderID[256];   // This folder's ID.
  117.     char     szfType[256];      // Folder tag.
  118.     DWORD    fType;             // Folder type.
  119.     DWORD    ctScalars;         // Number of scalars.
  120.     DWORD    ctFolders;         // Number of sub-folders.
  121.     DWORD    ctFolderTypes;     // Number of sub-folder types.
  122.     HANDLE   *phFolders;        // Array of handles to the folders.
  123.     CObArray aszID;             // Array of sub-folder's IDs.
  124.     // 02-May-96
  125.     DWORD    ctTokens;          // Num of tokens in expression (if supported).
  126. };
  127. CFrame *CreateFolderFrame( HWND hDlg, HANDLE hFolder );
  128. // Display the given folder frame. This is part of the Folder view dialogue.
  129. void DisplayFolderFrame( HWND hDlg, CFrame *pFrame );
  130. class CFrameStack
  131. {
  132. public:
  133.     CFrameStack(HWND hDlg);
  134.     ~CFrameStack();
  135.     void push( CFrame *pFrame );
  136.     CFrame *pop();
  137.     void Dump( const char *psz );   // debug
  138.     int sp;
  139.     CObArray stack;
  140.     HWND _hDlg;
  141. };  /* CFrameStack */
  142. /* EOF: browser.h */