GIZMOINT.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- * GIZMOINT.H
- * Gizmobar Internals
- *
- * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
- *
- * Kraig Brockschmidt, Microsoft
- * Internet : kraigb@microsoft.com
- * Compuserve: >INTERNET:kraigb@microsoft.com
- */
- #ifndef _GIZMOINT_H_
- #define _GIZMOINT_H_
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- typedef struct tagGIZMO
- {
- struct tagGIZMO *pPrev;
- struct tagGIZMO *pNext;
- UINT iType;
- HWND hWnd; //Texts, edits, lists, combos
- UINT uID;
- UINT x, y;
- UINT dx, dy;
- UINT cxImage; //From UIToolConfigureForDisplay
- UINT cyImage;
- HBITMAP hBmp; //Buttons only.
- UINT iBmp;
- BOOL fNotify; //Send WM_COMMANDs?
- BOOL fHidden; //Independent of state
- BOOL fDisabled;
- UINT uState;
- UINT uStateOrg;
- DWORD dwData; //Application-supplied data.
- } GIZMO, * PGIZMO;
- typedef PGIZMO *PPGIZMO;
- #define CBGIZMO sizeof(GIZMO)
- //Property name we attach to controls in a gizmo to identify type
- #define SZTYPEPROP TEXT("iType")
- //Number of controls we subclass
- #define CSUBGIZMOS 4
- //ID of edit controls in comboboxes
- #define ID_COMBOEDIT 1001
- /*
- * Conversion of iType (a positioned bit) into its position.
- * The BITPOSITION macro does not need to be fast because we only
- * use it once when creating a gizmo. POSITIONBIT does, however,
- * since we use it in subclass procedures.
- */
- #define BITPOSITION(i, j) {int k=i; for (j=0; k>>=1; j++);}
- #define POSITIONBIT(i) (1 << i)
- //Control classifications. GIZMOBAR.H must be included first.
- #define GIZMOTYPE_WINDOWS (GIZMOTYPE_TEXT | GIZMOTYPE_EDIT
- | GIZMOTYPE_LISTBOX
- | GIZMOTYPE_COMBOBOX
- | GIZMOTYPE_BUTTONNORMAL)
- #define GIZMOTYPE_BUTTONS (GIZMOTYPE_BUTTONATTRIBUTEIN
- | GIZMOTYPE_BUTTONATTRIBUTEEX
- | GIZMOTYPE_BUTTONCOMMAND
- | GIZMOTYPE_BUTTONNORMAL)
- #define GIZMOTYPE_DRAWN (GIZMOTYPE_BUTTONATTRIBUTEIN
- | GIZMOTYPE_BUTTONATTRIBUTEEX
- | GIZMOTYPE_BUTTONCOMMAND)
- //These must stay in sync with GIZMOBAR.H
- #define GIZMOTYPE_MIN GIZMOTYPE_EDIT
- #define GIZMOTYPE_MAX GIZMOTYPE_BUTTONCOMMAND
- //Enumeration callback
- typedef BOOL (CALLBACK *PFNGIZMOENUM)(PGIZMO, UINT, DWORD);
- //GIZMO.C
- PGIZMO GizmoPAllocate(int *, PPGIZMO, HWND, UINT, UINT, UINT
- , UINT, UINT, LPTSTR, HBITMAP, UINT, UINT);
- void GizmosExpand(PGIZMO);
- PGIZMO GizmoPFree(PPGIZMO, PGIZMO);
- void GizmosCompact(PGIZMO);
- PGIZMO GizmoPFind(PPGIZMO, UINT);
- PGIZMO GizmoPEnum(PPGIZMO, PFNGIZMOENUM, DWORD);
- UINT GizmoPStateSet(HWND, PGIZMO, UINT);
- BOOL GizmoPCheck(HWND, PGIZMO, BOOL);
- LRESULT APIENTRY GenericSubProc(HWND, UINT, WPARAM, LPARAM);
- /*
- * The main gizmobar structure itself. There's only one of these,
- * but it references the first GIZMO in the list.
- */
- typedef struct tagGIZMOBAR
- {
- PGIZMO pGizmos; //List of gizmos we own.
- HWND hWnd; //Window handle of ourselves.
- HINSTANCE hInst;
- HWND hWndAssociate; //Associate who gets messages.
- DWORD dwStyle; //Copy of GWL_STYLE
- UINT uState; //State flags
- UINT uID; //Control ID.
- HBRUSH hBrFace; //Static control background color
- COLORREF crFace; //Color of hBrFace
- HFONT hFont; //Font in use
- BOOL fEnabled; //Are we enabled?
- PGIZMO pGizmoTrack; //Current pressed button.
- BOOL fTracking;
- BOOL fMouseOut;
- } GIZMOBAR, * PGIZMOBAR;
- #define CBGIZMOBAR sizeof(GIZMOBAR)
- //Extra bytes for the window if the size of a local handle.
- #define CBEXTRAGIZMOBAR sizeof(PGIZMOBAR)
- #define GBWL_STRUCTURE 0
- //Structure for passing paint info to a gizmo enumeration callback.
- typedef struct
- {
- PAINTSTRUCT ps;
- TOOLDISPLAYDATA tdd;
- } PAINTGIZMO, *PPAINTGIZMO;
- //GIZMOBAR.C
- PGIZMOBAR GizmoBarPAllocate(int *, HWND, HINSTANCE, HWND
- , DWORD, UINT, UINT);
- PGIZMOBAR GizmoBarPFree(PGIZMOBAR);
- LRESULT WINAPI GizmoBarWndProc(HWND, UINT, WPARAM, LPARAM);
- BOOL WINAPI FEnumChangeFont(PGIZMO, UINT, DWORD);
- BOOL WINAPI FEnumEnable(PGIZMO, UINT, DWORD);
- BOOL WINAPI FEnumHitTest(PGIZMO, UINT, DWORD);
- void GizmoBarPaint(HWND, PGIZMOBAR);
- BOOL WINAPI FEnumPaintGizmos(PGIZMO, UINT, DWORD);
- //GIZMOAPI.C See GIZMOBAR.H for others
- LRESULT GBMessageHandler(HWND, UINT, WPARAM, LPARAM, PGIZMOBAR);
- PGIZMO PGizmoFromHwndID(HWND, UINT);
- #ifdef __cplusplus
- }
- #endif
- #endif //_GIZMOINT_H_