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

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * GIZMOINT.H
  3.  * Gizmobar Internals
  4.  *
  5.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  6.  *
  7.  * Kraig Brockschmidt, Microsoft
  8.  * Internet  :  kraigb@microsoft.com
  9.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  10.  */
  11. #ifndef _GIZMOINT_H_
  12. #define _GIZMOINT_H_
  13. #ifdef __cplusplus
  14. extern "C"
  15.     {
  16. #endif
  17. typedef struct tagGIZMO
  18.     {
  19.     struct tagGIZMO     *pPrev;
  20.     struct tagGIZMO     *pNext;
  21.     UINT                 iType;
  22.     HWND                 hWnd;       //Texts, edits, lists, combos
  23.     UINT                 uID;
  24.     UINT                 x, y;
  25.     UINT                 dx, dy;
  26.     UINT                 cxImage;    //From UIToolConfigureForDisplay
  27.     UINT                 cyImage;
  28.     HBITMAP              hBmp;       //Buttons only.
  29.     UINT                 iBmp;
  30.     BOOL                 fNotify;    //Send WM_COMMANDs?
  31.     BOOL                 fHidden;    //Independent of state
  32.     BOOL                 fDisabled;
  33.     UINT                 uState;
  34.     UINT                 uStateOrg;
  35.     DWORD                dwData;     //Application-supplied data.
  36.     } GIZMO, * PGIZMO;
  37. typedef PGIZMO *PPGIZMO;
  38. #define CBGIZMO sizeof(GIZMO)
  39. //Property name we attach to controls in a gizmo to identify type
  40. #define SZTYPEPROP      TEXT("iType")
  41. //Number of controls we subclass
  42. #define CSUBGIZMOS       4
  43. //ID of edit controls in comboboxes
  44. #define ID_COMBOEDIT     1001
  45. /*
  46.  * Conversion of iType (a positioned bit) into its position.
  47.  * The BITPOSITION macro does not need to be fast because we only
  48.  * use it once when creating a gizmo.  POSITIONBIT does, however,
  49.  * since we use it in subclass procedures.
  50.  */
  51. #define BITPOSITION(i, j)  {int k=i; for (j=0; k>>=1; j++);}
  52. #define POSITIONBIT(i)     (1 << i)
  53. //Control classifications.  GIZMOBAR.H must be included first.
  54. #define GIZMOTYPE_WINDOWS   (GIZMOTYPE_TEXT | GIZMOTYPE_EDIT 
  55.                             | GIZMOTYPE_LISTBOX              
  56.                             | GIZMOTYPE_COMBOBOX             
  57.                             | GIZMOTYPE_BUTTONNORMAL)
  58. #define GIZMOTYPE_BUTTONS   (GIZMOTYPE_BUTTONATTRIBUTEIN     
  59.                             | GIZMOTYPE_BUTTONATTRIBUTEEX    
  60.                             | GIZMOTYPE_BUTTONCOMMAND        
  61.                             | GIZMOTYPE_BUTTONNORMAL)
  62. #define GIZMOTYPE_DRAWN     (GIZMOTYPE_BUTTONATTRIBUTEIN     
  63.                             | GIZMOTYPE_BUTTONATTRIBUTEEX    
  64.                             | GIZMOTYPE_BUTTONCOMMAND)
  65. //These must stay in sync with GIZMOBAR.H
  66. #define GIZMOTYPE_MIN               GIZMOTYPE_EDIT
  67. #define GIZMOTYPE_MAX               GIZMOTYPE_BUTTONCOMMAND
  68. //Enumeration callback
  69. typedef BOOL (CALLBACK *PFNGIZMOENUM)(PGIZMO, UINT, DWORD);
  70. //GIZMO.C
  71. PGIZMO   GizmoPAllocate(int *, PPGIZMO, HWND, UINT, UINT, UINT
  72.              , UINT, UINT, LPTSTR, HBITMAP, UINT, UINT);
  73. void     GizmosExpand(PGIZMO);
  74. PGIZMO   GizmoPFree(PPGIZMO, PGIZMO);
  75. void     GizmosCompact(PGIZMO);
  76. PGIZMO   GizmoPFind(PPGIZMO, UINT);
  77. PGIZMO   GizmoPEnum(PPGIZMO, PFNGIZMOENUM, DWORD);
  78. UINT     GizmoPStateSet(HWND, PGIZMO, UINT);
  79. BOOL     GizmoPCheck(HWND, PGIZMO, BOOL);
  80. LRESULT APIENTRY GenericSubProc(HWND, UINT, WPARAM, LPARAM);
  81. /*
  82.  * The main gizmobar structure itself.  There's only one of these,
  83.  * but it references the first GIZMO in the list.
  84.  */
  85. typedef struct tagGIZMOBAR
  86.     {
  87.     PGIZMO      pGizmos;            //List of gizmos we own.
  88.     HWND        hWnd;               //Window handle of ourselves.
  89.     HINSTANCE   hInst;
  90.     HWND        hWndAssociate;      //Associate who gets messages.
  91.     DWORD       dwStyle;            //Copy of GWL_STYLE
  92.     UINT        uState;             //State flags
  93.     UINT        uID;                //Control ID.
  94.     HBRUSH      hBrFace;            //Static control background color
  95.     COLORREF    crFace;             //Color of hBrFace
  96.     HFONT       hFont;              //Font in use
  97.     BOOL        fEnabled;           //Are we enabled?
  98.     PGIZMO      pGizmoTrack;        //Current pressed button.
  99.     BOOL        fTracking;
  100.     BOOL        fMouseOut;
  101.     } GIZMOBAR, * PGIZMOBAR;
  102. #define CBGIZMOBAR sizeof(GIZMOBAR)
  103. //Extra bytes for the window if the size of a local handle.
  104. #define CBEXTRAGIZMOBAR     sizeof(PGIZMOBAR)
  105. #define GBWL_STRUCTURE      0
  106. //Structure for passing paint info to a gizmo enumeration callback.
  107. typedef struct
  108.     {
  109.     PAINTSTRUCT         ps;
  110.     TOOLDISPLAYDATA     tdd;
  111.     } PAINTGIZMO, *PPAINTGIZMO;
  112. //GIZMOBAR.C
  113. PGIZMOBAR         GizmoBarPAllocate(int *, HWND, HINSTANCE, HWND
  114.                       , DWORD, UINT, UINT);
  115. PGIZMOBAR         GizmoBarPFree(PGIZMOBAR);
  116. LRESULT WINAPI    GizmoBarWndProc(HWND, UINT, WPARAM, LPARAM);
  117. BOOL    WINAPI    FEnumChangeFont(PGIZMO, UINT, DWORD);
  118. BOOL    WINAPI    FEnumEnable(PGIZMO, UINT, DWORD);
  119. BOOL    WINAPI    FEnumHitTest(PGIZMO, UINT, DWORD);
  120. void              GizmoBarPaint(HWND, PGIZMOBAR);
  121. BOOL WINAPI       FEnumPaintGizmos(PGIZMO, UINT, DWORD);
  122. //GIZMOAPI.C  See GIZMOBAR.H for others
  123. LRESULT    GBMessageHandler(HWND, UINT, WPARAM, LPARAM, PGIZMOBAR);
  124. PGIZMO     PGizmoFromHwndID(HWND, UINT);
  125. #ifdef __cplusplus
  126.     }
  127. #endif
  128. #endif //_GIZMOINT_H_