home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Internet Business Development Kit / PRODUCT_CD.iso / sqlsvr / odbcsdk / samples / admndemo / menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-07  |  5.4 KB  |  189 lines

  1. //*---------------------------------------------------------------------------------
  2. //|  ODBC System Administrator
  3. //|
  4. //|  This code is furnished on an as-is basis as part of the ODBC SDK and is
  5. //|  intended for example purposes only.
  6. //|
  7. //|    MENU.C
  8. //|        This module will take care of enabling and disabling menus.
  9. //*---------------------------------------------------------------------------------
  10. #include <windows.h>
  11. #include "menu.h"
  12. #include "standard.h" 
  13. #include "child.h"
  14. #include "admndemo.h"
  15.  
  16.  
  17.  
  18.  
  19. //*---------------------------------------------------------------------------------
  20. //|    Global variables
  21. //*---------------------------------------------------------------------------------
  22. extern lpCHILDINFO         lpActiveConn;
  23. extern lpRESULTSINFO        lpActiveResults;
  24. extern HWND                    hwndCurMDIChild;
  25.  
  26.  
  27. extern dCSEG(char)    szChildClass[];
  28.  
  29.  
  30.  
  31. UWORD    uMenuIDs[] = {
  32.     SQL_API_SQLTABLES,
  33.     SQL_API_SQLCOLUMNS,
  34.     SQL_API_SQLSTATISTICS,
  35.     SQL_API_SQLPRIMARYKEYS,
  36.     SQL_API_SQLFOREIGNKEYS,
  37.     SQL_API_SQLTABLEPRIVILEGES,
  38.     SQL_API_SQLCOLUMNPRIVILEGES,
  39.     SQL_API_SQLSPECIALCOLUMNS,
  40.     SQL_API_SQLPROCEDURES,
  41.     SQL_API_SQLPROCEDURECOLUMNS,
  42.     SQL_API_SQLTRANSACT,
  43.     };
  44.     
  45.  
  46.  
  47.  
  48. //*---------------------------------------------------------------------------------
  49. //| ResetMenu:
  50. //|    When user drops the menu, determine what items are to be enabled/disabled.
  51. //| Parms:    
  52. //|    hMenu                        Handle to the menu being displayed
  53. //|    iMenu                        Index to the menu
  54. //|    iCalledFrom                Where were we called from?
  55. //|                                    1        From main WndProc
  56. //|                                    2        From connection window
  57. //|                                    3        Test output window 
  58. //| Returns:
  59. //|    Nothing.
  60. //*---------------------------------------------------------------------------------
  61. VOID INTFUN ResetMenu(HMENU hMenu, int iMenu)
  62. {
  63.     switch(GETMENUNUM(iMenu)) {
  64.         case IDM_FILE_MENU:
  65.             {
  66.             UINT            uMnuFlag;
  67.             HWND            hwnd = GetEditWindow(lpActiveConn);
  68.  
  69.             uMnuFlag = MNU_HAVE_CONNECTS;
  70.  
  71.             // Is there an active connection
  72.             EnableMenuItem(hMenu, IDM_DISCONNECT, uMnuFlag);
  73.             EnableMenuItem(hMenu, IDM_EXECUTE_FILE, uMnuFlag);
  74.             EnableMenuItem(hMenu, IDM_OPEN, 
  75.                         (uMnuFlag == MF_ENABLED && !lpActiveResults) ?
  76.                                 MF_ENABLED : MF_GRAYED);
  77.             EnableMenuItem(hMenu, IDM_CLOSE,
  78.                         (lpActiveConn && lpActiveConn->hFile && !lpActiveResults) ? 
  79.                                 MF_ENABLED : MF_GRAYED);
  80.             EnableMenuItem(hMenu, IDM_SAVE,
  81.                         (lpActiveConn && lpActiveConn->hFile && !lpActiveResults) ? 
  82.                                 MF_ENABLED : MF_GRAYED);
  83.             EnableMenuItem(hMenu, IDM_SAVEAS,
  84.                         (lpActiveConn && 
  85.                          SendMessage(lpActiveConn->hwndIn, WM_GETTEXTLENGTH, 0, 0L) &&
  86.                          !lpActiveResults) ?
  87.                                  MF_ENABLED : MF_GRAYED);
  88.             }
  89.             break;
  90.                 
  91.         case IDM_EDIT_MENU:
  92.             {
  93.             HWND        hwnd = GetEditWindow(lpActiveConn);
  94.             DWORD        sel=0;
  95.                 
  96.             if(hwnd)
  97.                 sel = SendMessage(hwnd, EM_GETSEL, 0, 0L);
  98.                 
  99.             EnableMenuItem(hMenu, IDM_UNDO, 
  100.                         (lpActiveConn && hwnd &&
  101.                          SendMessage(hwnd, EM_CANUNDO, 0, 0L)) ? MF_ENABLED : MF_GRAYED);
  102.             EnableMenuItem(hMenu, IDM_CUT, 
  103.                         (lpActiveConn && hwnd &&
  104.                          HIWORD(sel) != LOWORD(sel)) ? MF_ENABLED : MF_GRAYED);
  105.             EnableMenuItem(hMenu, IDM_COPY, 
  106.                         (lpActiveConn && hwnd &&
  107.                          HIWORD(sel) != LOWORD(sel)) ? MF_ENABLED : MF_GRAYED);
  108.             EnableMenuItem(hMenu, IDM_PASTE, 
  109.                         (lpActiveConn && hwnd &&
  110.                          IsClipboardFormatAvailable(CF_TEXT)) ? MF_ENABLED : MF_GRAYED);
  111.             EnableMenuItem(hMenu, IDM_SELECT_ALL, 
  112.                         (lpActiveConn && hwnd &&
  113.                          SendMessage(hwnd, WM_GETTEXTLENGTH, 0, 0L)) ? MF_ENABLED : MF_GRAYED);
  114.             }
  115.             break;
  116.                 
  117.         case IDM_EXECUTE_MENU:
  118.             {
  119.             HWND        hwnd = GetEditWindow(lpActiveConn);
  120.             DWORD        sel=0;
  121.             UINT        utmp;
  122.                 
  123.             if(hwnd)
  124.                 sel = SendMessage(hwnd, EM_GETSEL, 0, 0L);
  125.  
  126.          EnableMenuItem(hMenu, IDM_EXECUTE_NOW,
  127.                     (lpActiveConn && hwnd &&
  128.                      hwnd == lpActiveConn->hwndIn &&
  129.                      SendMessage(hwnd, WM_GETTEXTLENGTH, 0, 0L)) ? MF_ENABLED : MF_GRAYED);
  130.                          
  131.                 
  132.             // Need to support commit and rollback to call them
  133.             utmp = (lpActiveConn && BitGet(lpActiveConn->fFunctions, MENU_SQLTRANSACT)) ?
  134.                             MF_ENABLED : MF_GRAYED; 
  135.             EnableMenuItem(hMenu, IDM_COMMIT, utmp);
  136.             EnableMenuItem(hMenu, IDM_ROLLBACK, utmp);
  137.             }
  138.             break;
  139.                 
  140.         case IDM_PIPE_MENU:
  141.             {
  142.             // Just look for active connection
  143.             UINT utmp = MNU_HAVE_CONNECTS;
  144.  
  145.             // Just look for active connections and results
  146.             EnableMenuItem(hMenu, IDM_PIPE_EDIT, utmp);
  147.             EnableMenuItem(hMenu, IDM_PIPE_DO, 
  148.                     (lpActiveResults) ? MF_ENABLED : MF_GRAYED);
  149.             }
  150.             break;
  151.             
  152.         case IDM_INFO_MENU:
  153.             {
  154.             // Just look for active connection
  155.             UINT utmp = MNU_HAVE_CONNECTS;
  156.  
  157.             EnableMenuItem(hMenu, IDM_DATA_SOURCES, utmp);
  158.             EnableMenuItem(hMenu, IDM_DATA_TYPES, utmp);
  159.             EnableMenuItem(hMenu, IDM_FUNCTIONS, utmp);
  160.             EnableMenuItem(hMenu, IDM_ODBC_INFO, utmp);
  161.             }
  162.             break;
  163.                 
  164.         case IDM_LIST_MENU:
  165.             {
  166.             int    idex;
  167.             
  168.             for(idex=0;  idex<NUM_MENU_FLAGS;  idex++)
  169.                 EnableMenuItem(hMenu, (IDM_TABLES + idex),
  170.                         (lpActiveConn && 
  171.                          BitGet(lpActiveConn->fFunctions, idex)) ?
  172.                             MF_ENABLED : MF_GRAYED);
  173.             }
  174.             break;
  175.                 
  176.         case IDM_WINDOW_MENU:
  177.             {
  178.             // Just look for active connection
  179.             UINT utmp = MNU_HAVE_CONNECTS;
  180.  
  181.             EnableMenuItem(hMenu, IDM_CASCADE, utmp);
  182.             EnableMenuItem(hMenu, IDM_TILE, utmp);
  183.             EnableMenuItem(hMenu, IDM_ARRANGE, utmp);
  184.             EnableMenuItem(hMenu, IDM_CLOSEALL, utmp);
  185.             }
  186.             break;
  187.         }
  188. }
  189.