GIZMO.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * GIZMO.H
  3.  * GizmoBar Version 1.01
  4.  *
  5.  * Data structure and type definitions for the GIZMO data structure.
  6.  * Each gizmo on a gizmobar has one of these structures associated
  7.  * with it.
  8.  *
  9.  * Copyright (c)1993-1996 Microsoft Corporation, All Rights Reserved
  10.  *
  11.  * Kraig Brockschmidt, Software Design Engineer
  12.  * Microsoft Systems Developer Relations
  13.  *
  14.  * Internet  :  kraigb@microsoft.com
  15.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  16.  */
  17. #ifndef _GIZMO_H_
  18. #define _GIZMO_H_
  19. #ifdef __cplusplus
  20. extern "C"
  21.     {
  22. #endif
  23. typedef struct tagGIZMO
  24.     {
  25.     struct tagGIZMO     *pPrev;
  26.     struct tagGIZMO     *pNext;
  27.     UINT                 iType;
  28.     HWND                 hWnd;       //Texts, edits, lists, combos
  29.     UINT                 uID;
  30.     UINT                 x, y;
  31.     UINT                 dx, dy;
  32.     UINT                 cxImage;    //From UIToolConfigureForDisplay
  33.     UINT                 cyImage;
  34.     HBITMAP              hBmp;       //Buttons only.
  35.     UINT                 iBmp;
  36.     BOOL                 fNotify;    //Send WM_COMMANDs?
  37.     BOOL                 fHidden;    //Independent of state
  38.     BOOL                 fDisabled;
  39.     UINT                 uState;
  40.     UINT                 uStateOrg;
  41.     DWORD                dwData;     //Application-supplied data.
  42.     } GIZMO, * PGIZMO;
  43. typedef PGIZMO *PPGIZMO;
  44. #define CBGIZMO sizeof(GIZMO)
  45. //Property name we attach to controls in a gizmo to identify type
  46. #define SZTYPEPROP      TEXT("iType")
  47. //Number of controls we subclass
  48. #define CSUBGIZMOS       4
  49. //ID of edit controls in comboboxes
  50. #define ID_COMBOEDIT     1001
  51. /*
  52.  * Conversion of iType (a positioned bit) into its position.
  53.  * The BITPOSITION macro does not need to be fast because we only
  54.  * use it once when creating a gizmo.  POSITIONBIT does, however,
  55.  * since we use it in subclass procedures.
  56.  */
  57. #define BITPOSITION(i, j)  {int k=i; for (j=0; k>>=1; j++);}
  58. #define POSITIONBIT(i)     (1 << i)
  59. //Control classifications.  GIZMOBAR.H must be included first.
  60. #define GIZMOTYPE_WINDOWS   (GIZMOTYPE_TEXT | GIZMOTYPE_EDIT 
  61.                             | GIZMOTYPE_LISTBOX              
  62.                             | GIZMOTYPE_COMBOBOX             
  63.                             | GIZMOTYPE_BUTTONNORMAL)
  64. #define GIZMOTYPE_BUTTONS   (GIZMOTYPE_BUTTONATTRIBUTEIN     
  65.                             | GIZMOTYPE_BUTTONATTRIBUTEEX    
  66.                             | GIZMOTYPE_BUTTONCOMMAND        
  67.                             | GIZMOTYPE_BUTTONNORMAL)
  68. #define GIZMOTYPE_DRAWN     (GIZMOTYPE_BUTTONATTRIBUTEIN     
  69.                             | GIZMOTYPE_BUTTONATTRIBUTEEX    
  70.                             | GIZMOTYPE_BUTTONCOMMAND)
  71. //These must stay in sync with GIZMOBAR.H
  72. #define GIZMOTYPE_MIN               GIZMOTYPE_EDIT
  73. #define GIZMOTYPE_MAX               GIZMOTYPE_BUTTONCOMMAND
  74. //Enumeration callback
  75. typedef BOOL (CALLBACK *PFNGIZMOENUM)(PGIZMO, UINT, DWORD);
  76. //GIZMO.C
  77. PGIZMO   GizmoPAllocate(int *, PPGIZMO, HWND, UINT, UINT, UINT
  78.              , UINT, UINT, LPWSTR, HBITMAP, UINT, UINT);
  79. void     GizmosExpand(PGIZMO);
  80. PGIZMO   GizmoPFree(PPGIZMO, PGIZMO);
  81. void     GizmosCompact(PGIZMO);
  82. PGIZMO   GizmoPFind(PPGIZMO, UINT);
  83. PGIZMO   GizmoPEnum(PPGIZMO, PFNGIZMOENUM, DWORD);
  84. UINT     GizmoPStateSet(HWND, PGIZMO, UINT);
  85. BOOL     GizmoPCheck(HWND, PGIZMO, BOOL);
  86. LRESULT APIENTRY GenericSubProc(HWND, UINT, WPARAM, LPARAM);
  87. #ifdef __cplusplus
  88.     }
  89. #endif
  90. #endif //_GIZMO_H_