GUTILS.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:
Windows编程
开发平台:
Visual C++
- /******************************************************************************
- * This is a part of the Microsoft Source Code Samples.
- * Copyright (C) 1993-1997 Microsoft Corporation.
- * All rights reserved.
- * This source code is only intended as a supplement to
- * Microsoft Development Tools and/or WinHelp documentation.
- * See these sources for detailed information regarding the
- * Microsoft samples programs.
- ******************************************************************************/
- /*
- * GUTILS.H
- */
- /* win32 msg crackers */
- #define GET_WM_COMMAND_ID(w, l) (LOWORD(w))
- #define GET_WM_COMMAND_CMD(w, l) (HIWORD(w))
- #define GET_WM_COMMAND_HWND(w, l) (l)
- #define GET_SCROLL_OPCODE(w, l) (LOWORD(w))
- #define GET_SCROLL_POS(w, l) (HIWORD(w))
- /* ------- memory allocator ------------------------------------------*/
- HANDLE APIENTRY gmem_init(void);
- LPSTR APIENTRY gmem_get(HANDLE hHeap, int len);
- void APIENTRY gmem_free(HANDLE hHeap, LPSTR ptr, int len);
- void APIENTRY gmem_freeall(HANDLE hHeap);
- /* --------- date conversion functions -----------------------*/
- void APIENTRY gdate_daytodmy(LONG days,
- int FAR* yrp, int FAR* monthp, int FAR* dayp);
- LONG APIENTRY gdate_dmytoday(int yr, int month, int day);
- int APIENTRY gdate_monthdays(int month, int year);
- int APIENTRY gdate_weekday(long daynr);
- /* --- status line window class ---------------------------------- */
- /* The status line is a bar across the top or bottom of the window.
- * It can hold a number of fields which can be either static text
- * or buttons. The so called "static" text can be changed at any time.
- * The fields can be left or right aligned (default is RIGHT).
- * If the text is marked as VAR then the screen real estate allocated
- * for it will be adjusted whenever the text changes. VAR fields
- * can be given minimum or maximum sizes (but not both).
- *
- * STATIC text fields can be drawn as raised or lowered rectangles (using
- * shades of grey), or (default) without a border. BUTTON fields will
- * always be drawn as raised rectangles, and will lower when pressed.
- *
- * Button fields will send WM_COMMAND messages when clicked including the
- * field id and the WM_LBUTTONUP notification code. Note that that this
- * is not a full implementation of the button class, and no other messages
- * will be sent. In general, none of the fields of a status bar are
- * implemented as separate windows, so GetDlgItem() and similar calls will not
- * work. Buttons only respond to mouse down events, and there is no handling
- * of the focus or of keyboard events.
- *
- * To use:
- * call StatusAlloc giving the number of items you are going to add to the
- * status bar. This returns a handle to use in subsequent calls.
- *
- * Then call StatusAddItem to define each item in turn.
- * Buttons are placed in order of definition along the bar starting from
- * the left (SF_LEFT) and from the right (SF_RIGHT) until the two
- * sides meet.
- *
- * Call StatusHeight to find the expected height of this status bar, and
- * set its position within the parent window, then call StatusCreate to
- * create the window.
- *
- * Having created the window, send SM_SETTEXT messages to set the new
- * text of a field (static or button), or SM_NEW with a handle (obtained from
- * StatusAlloc) to change the contents of the status line.
- */
- /* values for type argument to StatusAddItem */
- #define SF_BUTTON 1
- #define SF_STATIC 2
- /* bits in flags argument to StatusAddItem */
- #define SF_RAISE 1 /* paint static as raised 3D rectangle */
- #define SF_LOWER 2 /* paint static as lowered 3D rectangle */
- #define SF_LEFT 4 /* align field on left of status bar */
- #define SF_RIGHT 8 /* align field on right (DEFAULT) */
- #define SF_VAR 0x10 /* size of field depends on actual text extent*/
- #define SF_SZMAX 0x20 /* (with SF_VAR): width argument is maximum */
- #define SF_SZMIN 0x40 /* (with SF_VAR) width arg is minimum size */
- HWND APIENTRY StatusCreate(HANDLE hInst, HWND hParent, int id,
- LPRECT rcp, HANDLE hmem);
- int APIENTRY StatusHeight(HANDLE hmem);
- HANDLE APIENTRY StatusAlloc(int nitems);
- BOOL APIENTRY StatusAddItem(HANDLE hmem, int itemnr, int type, int flags,
- int id, int width, LPSTR text);
- /* send these window messages to the class */
- #define SM_NEW (WM_USER+1) /* wParam handle for new status line */
- #define SM_SETTEXT (WM_USER+2) /* wparam: item id, lparam new label*/
- void APIENTRY gbit_init(DWORD FAR * map, long nblks);
- BOOL APIENTRY gbit_alloc(DWORD FAR * map, long blknr, long nblks);
- BOOL APIENTRY gbit_free(DWORD FAR * map, long blknr, long nblks);
- long APIENTRY gbit_findfree(DWORD FAR* map, long nblks,
- long mapsize, long FAR * blknr);
- /* ----- buffered line input ----------------------------------*/
- /* handle to a file buffer */
- typedef struct filebuffer * FILEBUFFER;
- FILEBUFFER APIENTRY readfile_new(int fh);
- LPSTR APIENTRY readfile_next(FILEBUFFER fb, int FAR * plen);
- void APIENTRY readfile_delete(FILEBUFFER fb);
- LPTSTR APIENTRY LoadRcString(UINT);
- LPTSTR APIENTRY LoadRcString2(UINT);
- /* ------ hashing ------------------------------------------- */
- DWORD APIENTRY hash_string(LPSTR string, BOOL bIgnoreBlanks);
- BOOL APIENTRY utils_isblank(LPSTR string);
- int APIENTRY utils_CompPath(LPSTR left, LPSTR right);
- /* --- simple input ------------------------------------------------------*/
- int APIENTRY StringInput(LPSTR result, int resultsize, LPSTR prompt,
- LPSTR caption, LPSTR def_input);
- // DBCS friendly versions of string library functions
- // These are for both WINDIFF.EXE and GUTILS.DLL.
- #define strchr My_mbschr
- #define Old_strncpy strncpy
- #define strncpy My_mbsncpy
- unsigned char * _CRTAPI1 My_mbschr(unsigned char *, unsigned short);
- unsigned char * _CRTAPI1 My_mbsncpy(
- unsigned char *, const unsigned char *, size_t);
- // These are for WINDIFF.EXE.
- #define strrchr My_mbsrchr
- #define strncmp My_mbsncmp
- unsigned char * _CRTAPI1 My_mbsrchr(unsigned char *, unsigned short);
- int _CRTAPI1 My_mbsncmp(const unsigned char *, const unsigned char *, size_t);