|
|
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: * GUTILS.H ! 14: */ ! 15: ! 16: /* win32 msg crackers */ ! 17: #define GET_WM_COMMAND_ID(w, l) (LOWORD(w)) ! 18: #define GET_WM_COMMAND_CMD(w, l) (HIWORD(w)) ! 19: #define GET_WM_COMMAND_HWND(w, l) (l) ! 20: #define GET_SCROLL_OPCODE(w, l) (LOWORD(w)) ! 21: #define GET_SCROLL_POS(w, l) (HIWORD(w)) ! 22: ! 23: /* ------- memory allocator ------------------------------------------*/ ! 24: HANDLE APIENTRY gmem_init(void); ! 25: LPSTR APIENTRY gmem_get(HANDLE hHeap, int len); ! 26: void APIENTRY gmem_free(HANDLE hHeap, LPSTR ptr, int len); ! 27: void APIENTRY gmem_freeall(HANDLE hHeap); ! 28: ! 29: ! 30: /* --------- date conversion functions -----------------------*/ ! 31: void APIENTRY gdate_daytodmy(LONG days, ! 32: int FAR* yrp, int FAR* monthp, int FAR* dayp); ! 33: LONG APIENTRY gdate_dmytoday(int yr, int month, int day); ! 34: int APIENTRY gdate_monthdays(int month, int year); ! 35: int APIENTRY gdate_weekday(long daynr); ! 36: ! 37: ! 38: /* --- status line window class ---------------------------------- */ ! 39: /* The status line is a bar across the top or bottom of the window. ! 40: * It can hold a number of fields which can be either static text ! 41: * or buttons. The so called "static" text can be changed at any time. ! 42: * The fields can be left or right aligned (default is RIGHT). ! 43: * If the text is marked as VAR then the screen real estate allocated ! 44: * for it will be adjusted whenever the text changes. VAR fields ! 45: * can be given minimum or maximum sizes (but not both). ! 46: * ! 47: * STATIC text fields can be drawn as raised or lowered rectangles (using ! 48: * shades of grey), or (default) without a border. BUTTON fields will ! 49: * always be drawn as raised rectangles, and will lower when pressed. ! 50: * ! 51: * Button fields will send WM_COMMAND messages when clicked including the ! 52: * field id and the WM_LBUTTONUP notification code. Note that that this ! 53: * is not a full implementation of the button class, and no other messages ! 54: * will be sent. In general, none of the fields of a status bar are ! 55: * implemented as separate windows, so GetDlgItem() and similar calls will not ! 56: * work. Buttons only respond to mouse down events, and there is no handling ! 57: * of the focus or of keyboard events. ! 58: * ! 59: * To use: ! 60: * call StatusAlloc giving the number of items you are going to add to the ! 61: * status bar. This returns a handle to use in subsequent calls. ! 62: * ! 63: * Then call StatusAddItem to define each item in turn. ! 64: * Buttons are placed in order of definition along the bar starting from ! 65: * the left (SF_LEFT) and from the right (SF_RIGHT) until the two ! 66: * sides meet. ! 67: * ! 68: * Call StatusHeight to find the expected height of this status bar, and ! 69: * set its position within the parent window, then call StatusCreate to ! 70: * create the window. ! 71: * ! 72: * Having created the window, send SM_SETTEXT messages to set the new ! 73: * text of a field (static or button), or SM_NEW with a handle (obtained from ! 74: * StatusAlloc) to change the contents of the status line. ! 75: */ ! 76: ! 77: /* values for type argument to StatusAddItem */ ! 78: #define SF_BUTTON 1 ! 79: #define SF_STATIC 2 ! 80: ! 81: /* bits in flags argument to StatusAddItem */ ! 82: #define SF_RAISE 1 /* paint static as raised 3D rectangle */ ! 83: #define SF_LOWER 2 /* paint static as lowered 3D rectangle */ ! 84: #define SF_LEFT 4 /* align field on left of status bar */ ! 85: #define SF_RIGHT 8 /* align field on right (DEFAULT) */ ! 86: #define SF_VAR 0x10 /* size of field depends on actual text extent*/ ! 87: #define SF_SZMAX 0x20 /* (with SF_VAR): width argument is maximum */ ! 88: #define SF_SZMIN 0x40 /* (with SF_VAR) width arg is minimum size */ ! 89: ! 90: HWND APIENTRY StatusCreate(HANDLE hInst, HWND hParent, int id, ! 91: LPRECT rcp, HANDLE hmem); ! 92: int APIENTRY StatusHeight(HANDLE hmem); ! 93: HANDLE APIENTRY StatusAlloc(int nitems); ! 94: BOOL APIENTRY StatusAddItem(HANDLE hmem, int itemnr, int type, int flags, ! 95: int id, int width, LPSTR text); ! 96: ! 97: /* send these window messages to the class */ ! 98: ! 99: #define SM_NEW (WM_USER+1) /* wParam handle for new status line */ ! 100: #define SM_SETTEXT (WM_USER+2) /* wparam: item id, lparam new label*/ ! 101: ! 102: void APIENTRY gbit_init(DWORD FAR * map, long nblks); ! 103: BOOL APIENTRY gbit_alloc(DWORD FAR * map, long blknr, long nblks); ! 104: BOOL APIENTRY gbit_free(DWORD FAR * map, long blknr, long nblks); ! 105: long APIENTRY gbit_findfree(DWORD FAR* map, long nblks, ! 106: long mapsize, long FAR * blknr); ! 107: ! 108: ! 109: /* ----- buffered line input ----------------------------------*/ ! 110: /* handle to a file buffer */ ! 111: typedef struct filebuffer * FILEBUFFER; ! 112: ! 113: FILEBUFFER APIENTRY readfile_new(int fh); ! 114: LPSTR APIENTRY readfile_next(FILEBUFFER fb, int FAR * plen); ! 115: void APIENTRY readfile_delete(FILEBUFFER fb); ! 116: ! 117: ! 118: /* ------ hashing ------------------------------------------- */ ! 119: DWORD APIENTRY hash_string(LPSTR string, BOOL bIgnoreBlanks); ! 120: BOOL APIENTRY utils_isblank(LPSTR string); ! 121: int APIENTRY ! 122: utils_CompPath(LPSTR left, LPSTR right); ! 123: ! 124: /* --- simple input ------------------------------------------------------*/ ! 125: int APIENTRY StringInput(LPSTR result, int resultsize, LPSTR prompt, ! 126: LPSTR caption, LPSTR def_input); ! 127: ! 128: ! 129: ! 130:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.