Annotation of mstools/samples/ttfonts/toolbar.c, revision 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.