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