Annotation of mstools/samples/ttfonts/toolbar.c, revision 1.1.1.1

1.1       root        1: 
                      2: /******************************************************************************\
                      3: *       This is a part of the Microsoft Source Code Samples. 
                      4: *       Copyright (C) 1993 Microsoft Corporation.
                      5: *       All rights reserved. 
                      6: *       This source code is only intended as a supplement to 
                      7: *       Microsoft Development Tools and/or WinHelp documentation.
                      8: *       See these sources for detailed information regarding the 
                      9: *       Microsoft samples programs.
                     10: \******************************************************************************/
                     11: 
                     12: /**************************************************************************\
                     13: *  toolbar.c -- module for the "toolbar" on top of the main window.
                     14: *   Includes the window procedure and an initialization routine.
                     15: \**************************************************************************/
                     16: #define UNICODE
                     17: 
                     18: #include <windows.h>
                     19: #include "ttfonts.h"
                     20: 
                     21: 
                     22: /* for the initial positioning of the buttons within the toolbar. */
                     23: #define SPACEBUTTON 8
                     24: #define CXBUTTON ((GetSystemMetrics (SM_CXFULLSCREEN)) /5 -2*SPACEBUTTON)
                     25: #define BUTTONTOP    TOOLBARHEIGHT/8
                     26: #define BUTTONHEIGHT TOOLBARHEIGHT*3/4
                     27: #define BUTTONLEFT(x) ((2*x+1)*SPACEBUTTON + x*CXBUTTON)
                     28: 
                     29: #define BORDER     2
                     30: 
                     31: 
                     32: 
                     33: int initTB (HWND hwndParent)
                     34: {
                     35: WNDCLASS  wc;
                     36: 
                     37:   wc.style = 0;
                     38:   wc.lpfnWndProc = (WNDPROC)ToolBarWndProc;
                     39:   wc.cbClsExtra = 0;
                     40:   wc.cbWndExtra = 0;
                     41:   wc.hInstance = hInst;
                     42:   wc.hIcon = NULL;
                     43:   wc.hCursor = LoadCursor(NULL, IDC_ARROW);
                     44:   wc.hbrBackground = GetStockObject(LTGRAY_BRUSH);
                     45:   wc.lpszMenuName = NULL;
                     46:   wc.lpszClassName = TEXT("ToolBar");
                     47: 
                     48:   if (!RegisterClass(&wc)) return (FALSE);
                     49: 
                     50:   hwndTB = CreateWindow(
                     51:       TEXT("ToolBar"),
                     52:       NULL,
                     53:       WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,
                     54:       0,0,
                     55:       GetSystemMetrics (SM_CXFULLSCREEN),
                     56:       TOOLBARHEIGHT,
                     57:       hwndParent, NULL, hInst, NULL);
                     58: 
                     59:   if (!hwndTB) return (FALSE);
                     60: 
                     61:   return TRUE;
                     62: }
                     63: 
                     64: 
                     65: /**************************************************************************\
                     66: *
                     67: *  function:  ToolBarWndProc
                     68: *
                     69: *  input parameters:  normal window procedure parameters.
                     70: *
                     71: *  global variables:
                     72: *   hwndMain - parent of the toolbar.
                     73: *
                     74: * When the window is created, create the various buttons.  When those
                     75: *  buttons send WM_COMMAND messages later, send the messages back to hwndMain.
                     76: *
                     77: \**************************************************************************/
                     78: LRESULT CALLBACK ToolBarWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     79: {
                     80: static HWND  hwndButton, hwndEnumPrinter;
                     81:   switch (message) {
                     82: 
                     83:     /**********************************************************************\
                     84:     *  WM_CREATE
                     85:     *
                     86:     * Create the various buttons which are on the toolbar.  Once the buttons
                     87:     *  are created, set the window ID so that the WM_COMMANDS may be
                     88:     *  distinguished.
                     89:     \**********************************************************************/
                     90:     case WM_CREATE: {
                     91:       hwndButton = CreateWindow(
                     92:         TEXT("BUTTON"),TEXT("EnumFonts"),
                     93:         WS_CHILD | WS_VISIBLE,
                     94:         BUTTONLEFT(0),BUTTONTOP, CXBUTTON, BUTTONHEIGHT,
                     95:         hwnd, NULL, hInst, NULL);
                     96:       SetWindowLong (hwndButton, GWL_ID, TBID_ENUM);
                     97: 
                     98:       hwndButton = CreateWindow(
                     99:         TEXT("BUTTON"),TEXT("CreateFont"),
                    100:         WS_CHILD | WS_VISIBLE,
                    101:         BUTTONLEFT(1),BUTTONTOP, CXBUTTON, BUTTONHEIGHT,
                    102:         hwnd, NULL, hInst, NULL);
                    103:       SetWindowLong (hwndButton, GWL_ID, TBID_CREATE);
                    104: 
                    105:       hwndButton = CreateWindow(
                    106:         TEXT("BUTTON"),TEXT("GetMetrics"),
                    107:         WS_CHILD | WS_VISIBLE ,
                    108:         BUTTONLEFT(2),BUTTONTOP, CXBUTTON, BUTTONHEIGHT,
                    109:         hwnd, NULL, hInst, NULL);
                    110:       SetWindowLong (hwndButton, GWL_ID, TBID_GETTM);
                    111: 
                    112:       hwndButton = CreateWindow(
                    113:         TEXT("BUTTON"),TEXT("GetFontData"),
                    114:         WS_CHILD | WS_VISIBLE ,
                    115:         BUTTONLEFT(3),BUTTONTOP, CXBUTTON, BUTTONHEIGHT,
                    116:         hwnd, NULL, hInst, NULL);
                    117:       SetWindowLong (hwndButton, GWL_ID, TBID_GETFONTDATA);
                    118: 
                    119:       hwndEnumPrinter = CreateWindow(
                    120:         TEXT("BUTTON"),TEXT("Enum(Printer)"),
                    121:         WS_CHILD | WS_VISIBLE,
                    122:         BUTTONLEFT(4),BUTTONTOP, CXBUTTON, BUTTONHEIGHT,
                    123:         hwnd, NULL, hInst, NULL);
                    124:       SetWindowLong (hwndEnumPrinter, GWL_ID, TBID_PRINT);
                    125: 
                    126:     } break;
                    127: 
                    128: 
                    129:     /**********************************************************************\
                    130:     *  WM_COMMAND
                    131:     *
                    132:     * Send the command messages back to hwndMain.
                    133:     *  except for the one to disable the printer button.
                    134:     \**********************************************************************/
                    135:     case WM_COMMAND:
                    136:       if (wParam == IDU_NOPRINTER)
                    137:         EnableWindow (hwndEnumPrinter, FALSE);
                    138:       else
                    139:         PostMessage (hwndMain,message, wParam, lParam);
                    140:     break;
                    141: 
                    142: 
                    143:     /**********************************************************************\
                    144:     *  WM_PAINT
                    145:     *
                    146:     * Paint two rectangular strips, one on top, one on bottom.
                    147:     \**********************************************************************/
                    148:     case WM_PAINT : {
                    149:       PAINTSTRUCT ps;
                    150:       RECT rect;
                    151:       HDC hdc;
                    152: 
                    153:       hdc = BeginPaint(hwnd, &ps);
                    154:       GetClientRect (hwnd, &rect);
                    155:       rect.right --;
                    156:       rect.bottom --;
                    157: 
                    158:       SelectObject (hdc, GetStockObject (BLACK_PEN));
                    159:       MoveToEx (hdc, rect.right, rect.top, NULL);
                    160:       LineTo (hdc, rect.right, rect.bottom);
                    161:       LineTo (hdc, rect.left, rect.bottom);
                    162:       SelectObject (hdc, GetStockObject (WHITE_PEN));
                    163:       LineTo (hdc, rect.left, rect.top);
                    164:       LineTo (hdc, rect.right, rect.top);
                    165: 
                    166:       EndPaint (hwnd, &ps);
                    167:     } break;
                    168: 
                    169: 
                    170:   } /* end switch */
                    171:   return (DefWindowProc(hwnd, message, wParam, lParam));
                    172: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.