|
|
1.1 root 1: /*
2: * CURSORS.C
3: * Buttons & Cursors Version 1.1, March 1993
4: *
5: * Public functions to retrieve new cursors from the BTTNCUR DLL based
6: * on ordinal to prevent applications from necessarily calling LoadCursor
7: * directly on the DLL.
8: *
9: * Copyright (c)1992-1993 Microsoft Corporation, All Rights Reserved,
10: * as applied to redistribution of this source code in source form
11: * License is granted to use of compiled code in shipped binaries.
12: */
13:
14: #ifdef WIN32
15: #define _INC_OLE
16: #define __RPC_H__
17: #endif
18:
19: #define STRICT
20: #include <windows.h>
21: #include "bttncur.h"
22: #include "bttncuri.h"
23:
24:
25: /*
26: * The +1 is because MAX is the highest allowable number and MIN is not
27: * necessarily zero.
28: */
29: HCURSOR rgHCursors[IDC_NEWUICURSORMAX-IDC_NEWUICURSORMIN+1];
30:
31:
32:
33: /*
34: * CursorsCache
35: * Internal
36: *
37: * Purpose:
38: * Loads all the cursors available through NewUICursorLoad into
39: * a global array. This way we can clean up all the cursors without
40: * placing the burden on the application.
41: *
42: * Parameters:
43: * hInst HANDLE of the DLL instance.
44: *
45: * Return Value:
46: * None. If any of the LoadCursor calls fail, then the corresponding
47: * array entry is NULL and NewUICursorLoad will fail. Better to fail
48: * an app getting a cursor than failing to load the app just for that
49: * reason; and app can attempt to load the cursor on startup if it's
50: * that important, and fail itself.
51: */
52:
53: void CursorsCache(HINSTANCE hInst)
54: {
55: UINT i;
56:
57: for (i=IDC_NEWUICURSORMIN; i<=IDC_NEWUICURSORMAX; i++)
58: rgHCursors[i-IDC_NEWUICURSORMIN]=LoadCursor(hInst, MAKEINTRESOURCE(i));
59:
60: return;
61: }
62:
63:
64:
65:
66: /*
67: * CursorsFree
68: * Internal
69: *
70: * Purpose:
71: * Frees all the cursors previously loaded through CursorsCache.
72: *
73: * Parameters:
74: * None
75: *
76: * Return Value:
77: * None
78: */
79:
80: void CursorsFree(void)
81: {
82: /*
83: * Note that since cursors are discardable resources and should
84: * not be used with DestroyCursor, there's nothing to do here.
85: * We still provide this API for compatibility and to maintain
86: * symmetry.
87: */
88: return;
89: }
90:
91:
92:
93:
94:
95: /*
96: * UICursorLoad
97: * Public API
98: *
99: * Purpose:
100: * Loads and returns a handle to one of the new standard UI cursors
101: * contained in UITOOLS.DLL. The application must not call DestroyCursor
102: * on this cursor as it is managed by the DLL.
103: *
104: * Parameters:
105: * iCursor UINT index to the cursor to load which must be one
106: * of the following values:
107: *
108: * IDC_RIGHTARROW Right pointing standard arrow
109: * IDC_CONTEXTHELP Arrow with a ? (context help)
110: * IDC_MAGNIFY Magnifying glass for zooming
111: * IDC_NODROP Circle with a slash
112: * IDC_TABLETOP Small arrow pointing down
113: *
114: * IDC_SMALLARROWS Thin four-headed arrow
115: * IDC_LARGEARROWS Wide four-headed arrow
116: * IDC_HARROWS Horizontal two-headed arrow
117: * IDC_VARROWS Vertical two-headed arrow
118: * IDC_NESWARROWS Two-headed arrow pointing NE<->SW
119: * IDC_NWSEHARROWS Two-headed arrow pointing NW<->SE
120: *
121: * IDC_HSIZEBAR Horizontal two-headed arrow with
122: * a single vertical bar down the
123: * middle
124: *
125: * IDC_VSIZEBAR Vertical two-headed arrow with a
126: * single horizontal bar down the
127: * middle
128: *
129: * IDC_HSPLITBAR Horizontal two-headed arrow with
130: * split double vertical bars down the
131: * middle
132: *
133: * IDC_VSPLITBAR Vertical two-headed arrow with split
134: * double horizontal bars down the
135: * middle
136: *
137: * Return Value:
138: * HCURSOR Handle to the loaded cursor if successful, NULL
139: * if iCursor is out of range or the function could not
140: * load the cursor.
141: */
142:
143: HCURSOR WINAPI UICursorLoad(UINT iCursor)
144: {
145: HCURSOR hCur=NULL;
146:
147: if ((iCursor >= IDC_NEWUICURSORMIN) && (iCursor <= IDC_NEWUICURSORMAX))
148: hCur=rgHCursors[iCursor-IDC_NEWUICURSORMIN];
149:
150: return hCur;
151: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.