home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / pc / workshop / prog / msconf / confsdk.exe / TBAR.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-23  |  5.8 KB  |  204 lines

  1. /* ----------------------------------------------------------------------
  2.  
  3.     CNFTEST sample for Microsoft ActiveX Conferencing
  4.  
  5.     Unpublished work.
  6.     Copyright (c) 1996, Microsoft Corporation
  7.     All rights reserved.
  8.  
  9.  
  10.     tbar.c
  11.  
  12.   ---------------------------------------------------------------------- */
  13.  
  14. #include "main.h"
  15.  
  16.  
  17. TBBUTTON _rgtbb[] =
  18. {
  19.     {0,  0,                      TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, 0},
  20.     {1,  IDM_CMD_CONNECT,        TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_CONNECT, 0},
  21.     {2,  IDM_CMD_DISCONNECT,     TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_DISCONNECT, 0},
  22.     {0,  0,                      TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, 0},
  23.     {3,  IDM_CMD_GETINFO,        TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_GETINFO, 0},
  24.     {4,  IDM_CMD_SETINFO,        TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_SETINFO, 0},
  25.     {0,  0,                      TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, 0},
  26.     {5,  IDM_CMD_SHAREWINDOW,    TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_SHAREWINDOW, 0},
  27.     {7,  IDM_CMD_ISWINDOWSHARED, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_ISWINDOWSHARED, 0},
  28.     {6,  IDM_CMD_UNSHAREWINDOW,  TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_UNSHAREWINDOW, 0},
  29.     {0,  0,                      TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, 0},
  30.     {8,  IDM_CMD_SENDDATA,       TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_SENDDATA, 0},
  31.     {9,  IDM_CMD_SENDFILE,       TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_SENDFILE, 0},
  32.     {10, IDM_CMD_LAUNCHREMOTE,   TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_CMD_LAUNCHREMOTE, 0},
  33.     {0,  0,                      TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, 0},
  34.     {0,  IDM_ABOUT,              TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, IDT_ABOUT, 0},
  35. };
  36.  
  37. #define cTbb sizeof(_rgtbb)/sizeof(TBBUTTON)
  38.  
  39. /* F  C R E A T E  T B A R */
  40. /*----------------------------------------------------------------------------
  41.     %%Function: FCreateTbar
  42.  
  43.     Create the toolbar
  44. ----------------------------------------------------------------------------*/
  45. BOOL FCreateTbar(void)
  46. {
  47.     RECT rc;
  48.     DWORD dyTbar;
  49.  
  50.     ghwndTbar = CreateToolbarEx(ghwndMain,
  51.         WS_CHILD | WS_VISIBLE | CCS_ADJUSTABLE |
  52.             TBSTYLE_TOOLTIPS | TBSTYLE_WRAPABLE | TBSTYLE_ALTDRAG,
  53.         IDW_TBAR,
  54.         NUMIMAGES,
  55.         ghInst,
  56.         IDB_TBAR,
  57.         _rgtbb,
  58.         0,
  59.         BUTTONWIDTH,
  60.         BUTTONHEIGHT,
  61.         IMAGEWIDTH,
  62.         IMAGEHEIGHT,
  63.         sizeof(TBBUTTON));
  64.  
  65.     if (ghwndTbar == NULL)
  66.         return fFalse;
  67.  
  68.  
  69.     GetClientRect(ghwndTbar, &rc);
  70.     dyTbar = rc.bottom;
  71.  
  72.     SendMessage(ghwndTbar, TB_ADDBUTTONS, cTbb, (LPARAM) _rgtbb);
  73.  
  74.     return fTrue;
  75. }
  76.  
  77.  
  78.  
  79.  
  80. /* M S G  N O T I F Y */
  81. /*----------------------------------------------------------------------------
  82.     %%Function: MsgNotify
  83.  
  84. ----------------------------------------------------------------------------*/
  85. LRESULT MsgNotify(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
  86. {
  87.     LPTOOLTIPTEXT lpToolTipText;
  88.     static char szBuffer[cbMaxSz];
  89.  
  90.     lpToolTipText = (LPTOOLTIPTEXT)lparam;
  91.     switch (lpToolTipText->hdr.code)
  92.         {
  93.     case TTN_NEEDTEXT:
  94.     {
  95.         int cb;
  96.  
  97.         // Try special toolbar version first
  98.         cb = LoadString(ghInst, lpToolTipText->hdr.idFrom - 10000,
  99.             szBuffer, sizeof(szBuffer));
  100.         if (cb == 0)
  101.         {
  102.             cb = LoadString(ghInst, lpToolTipText->hdr.idFrom,   // string ID == command ID
  103.                 szBuffer, sizeof(szBuffer));
  104.         }
  105.         if (cb == 0)
  106.         {
  107.             szBuffer[0] = '\0';
  108.         }
  109.  
  110.         lpToolTipText->lpszText = szBuffer;
  111.         break;
  112.     }
  113.     case TBN_QUERYINSERT:
  114.     case TBN_QUERYDELETE:
  115.         return 1;
  116.     case PSM_SETCURSEL:
  117.         return 1;
  118.     default:
  119.         break;
  120.         }
  121.  
  122.     return 0;
  123. }
  124.  
  125.  
  126. /* F  C R E A T E  S B A R */
  127. /*----------------------------------------------------------------------------
  128.     %%Function: FCreateSbar
  129.  
  130.     Create the status bar.
  131.  
  132. ----------------------------------------------------------------------------*/
  133. BOOL FCreateSbar(void)
  134. {
  135.     ghwndSbar = CreateWindow(STATUSCLASSNAME, NULL,
  136.         WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP,
  137.         0, 0, 0, 0,
  138.         ghwndMain, (HMENU) IDW_SBAR, ghInst, NULL);
  139.  
  140.     return (ghwndSbar != NULL);
  141. }
  142.  
  143.  
  144.  
  145. /* U P D A T E  S T A T U S  B A R */
  146. /*----------------------------------------------------------------------------
  147.     %%Function: UpdateStatusBar
  148.  
  149.     Update the text for part of the status bar
  150.  
  151. ----------------------------------------------------------------------------*/
  152. void UpdateStatusBar(LPSTR lpsz, WORD wPart, WORD wFlags)
  153. {
  154.     SendMessage(ghwndSbar, SB_SETTEXT, wPart | wFlags, (LPARAM) lpsz);
  155. }
  156.  
  157.  
  158.  
  159. /* M S G  M E N U  S E L E C T */
  160. /*----------------------------------------------------------------------------
  161.     %%Function: MsgMenuSelect
  162.  
  163.     Change the status bar text to display the menu help.
  164.  
  165. ----------------------------------------------------------------------------*/
  166. LRESULT MsgMenuSelect(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
  167. {
  168.     static char szBuffer[cbMaxSz];
  169.     UINT   nStringID;
  170.     UINT   fuFlags = GET_WM_MENUSELECT_FLAGS(wparam, lparam) & 0xffff;
  171.     UINT   uCmd    = GET_WM_MENUSELECT_CMD(wparam, lparam);
  172.     HMENU  hMenu   = GET_WM_MENUSELECT_HMENU(wparam, lparam);
  173.  
  174.     szBuffer[0] = 0;
  175.     nStringID = 0;
  176.  
  177.     if (fuFlags == 0xffff && hMenu == NULL)     // Menu has been closed
  178.     {
  179.         return 0;
  180.     }
  181.     else if (fuFlags & MFT_SEPARATOR)           // Ignore separators
  182.     {
  183.         nStringID = 0;
  184.     }
  185.     else if (fuFlags & MF_POPUP)                // Popup menu
  186.     {
  187.         if (fuFlags & MF_SYSMENU)               // System menu
  188.             nStringID = IDS_SYSMENU;
  189.     }
  190.     else                                        // Must be a command item
  191.     {
  192.         nStringID = uCmd;               // String ID == Command ID
  193.     }
  194.  
  195.     // Load the string if we have an ID
  196.     if (nStringID != 0)
  197.         LoadString(ghInst, nStringID, szBuffer, sizeof(szBuffer));
  198.  
  199.     // Finally... send the string to the status bar
  200.     UpdateStatusBar(szBuffer, 0, 0);
  201.  
  202.     return 0;
  203. }
  204.