|
|
1.1 root 1: /*---------------------------------------------------------------------------*\
2: | INITIALIZATION MODULE
3: | This module contains startup-routines for the creation of windows for this
4: | application.
5: |
6: | RegisterAppClass
7: | UnregisterAppClass
8: | CreateAppWindow
9: | CreateMDIClientWindow
10: |
11: |
12: | segment: _INIT (DOS16)
13: | created: 31-Oct-90
14: | history: 31-Oct-90 <chriswil> created.
15: |
16: \*---------------------------------------------------------------------------*/
17:
18: #include <windows.h>
19: #include "gdidemo.h"
20: #include "poly.h"
21: #include "xform.h"
22: #include "maze.h"
23: #include "draw.h"
24: #include "bounce.h"
25:
26: /*---------------------------------------------------------------------------*\
27: | REGISTER APPLICATION CLASS
28: | This routine registers all classes necessary for the application.
29: |
30: | created: 31-Oct-90
31: | history: 31-Oct-90 <chriswil> created.
32: |
33: \*---------------------------------------------------------------------------*/
34: BOOL FAR RegisterAppClass(HANDLE hInstance)
35: {
36: WNDCLASS wndClass;
37:
38:
39: /*
40: ** Set the common wndClass information. This is common to all windows
41: ** of this application.
42: */
43: wndClass.style = CS_HREDRAW | CS_VREDRAW;
44: wndClass.cbClsExtra = 0;
45: wndClass.cbWndExtra = sizeof(LONG);
46: wndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
47: wndClass.hInstance = hInstance;
48:
49:
50: /*
51: ** Register the main top-level window (frame).
52: */
53: wndClass.lpfnWndProc = WndProc;
54: wndClass.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(APPICON));
55: wndClass.hbrBackground = GetStockObject(WHITE_BRUSH);
56: wndClass.lpszMenuName = MAKEINTRESOURCE(APPMENU);
57: wndClass.lpszClassName = APPCLASS;
58:
59: if(!RegisterClass(&wndClass))
60: return(FALSE);
61:
62:
63: /*
64: ** Register the polybezier demo window.
65: */
66: wndClass.lpfnWndProc = PolyProc;
67: wndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
68: wndClass.hbrBackground = GetStockObject(BLACK_BRUSH);
69: wndClass.lpszMenuName = NULL;
70: wndClass.lpszClassName = POLYCLASS;
71:
72: if(!RegisterClass(&wndClass))
73: {
74: UnregisterClass(APPCLASS,hInstance);
75: return(FALSE);
76: }
77:
78:
79: /*
80: ** Register the xform demo window.
81: */
82: wndClass.lpfnWndProc = XFormProc;
83: wndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
84: wndClass.hbrBackground = GetStockObject(BLACK_BRUSH);
85: wndClass.lpszMenuName = NULL;
86: wndClass.lpszClassName = XFORMCLASS;
87:
88: if(!RegisterClass(&wndClass))
89: {
90: UnregisterClass(APPCLASS ,hInstance);
91: UnregisterClass(POLYCLASS,hInstance);
92: return(FALSE);
93: }
94:
95:
96: /*
97: ** Register the maze demo window.
98: */
99: wndClass.lpfnWndProc = MazeProc;
100: wndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
101: wndClass.hbrBackground = GetStockObject(BLACK_BRUSH);
102: wndClass.lpszMenuName = NULL;
103: wndClass.lpszClassName = MAZECLASS;
104:
105: if(!RegisterClass(&wndClass))
106: {
107: UnregisterClass(APPCLASS ,hInstance);
108: UnregisterClass(POLYCLASS ,hInstance);
109: UnregisterClass(XFORMCLASS,hInstance);
110: return(FALSE);
111: }
112:
113:
114: /*
115: ** Register the random draw demo window.
116: */
117: wndClass.lpfnWndProc = DrawProc;
118: wndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
119: wndClass.hbrBackground = GetStockObject(WHITE_BRUSH);
120: wndClass.lpszMenuName = NULL;
121: wndClass.lpszClassName = DRAWCLASS;
122:
123: if(!RegisterClass(&wndClass))
124: {
125: UnregisterClass(APPCLASS ,hInstance);
126: UnregisterClass(POLYCLASS ,hInstance);
127: UnregisterClass(XFORMCLASS,hInstance);
128: UnregisterClass(MAZECLASS ,hInstance);
129: return(FALSE);
130: }
131:
132:
133: /*
134: ** Register the bouncing ball demo window.
135: */
136: wndClass.lpfnWndProc = BounceProc;
137: wndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
138: wndClass.hbrBackground = GetStockObject(WHITE_BRUSH);
139: wndClass.lpszMenuName = NULL;
140: wndClass.lpszClassName = BOUNCECLASS;
141:
142: if(!RegisterClass(&wndClass))
143: {
144: UnregisterClass(APPCLASS ,hInstance);
145: UnregisterClass(POLYCLASS ,hInstance);
146: UnregisterClass(XFORMCLASS,hInstance);
147: UnregisterClass(MAZECLASS ,hInstance);
148: UnregisterClass(DRAWCLASS ,hInstance);
149: return(FALSE);
150: }
151:
152: return(TRUE);
153: }
154:
155:
156: /*---------------------------------------------------------------------------*\
157: | UNREGISTER APPLICATION CLASS
158: | This routine unregisters all classes registered for the application.
159: | It is typically called upon termination of the application.
160: |
161: | created: 31-Oct-90
162: | history: 31-Oct-90 <chriswil> created.
163: |
164: \*---------------------------------------------------------------------------*/
165: VOID FAR UnregisterAppClass(HANDLE hInstance)
166: {
167: UnregisterClass(APPCLASS ,hInstance);
168: UnregisterClass(POLYCLASS ,hInstance);
169: UnregisterClass(XFORMCLASS ,hInstance);
170: UnregisterClass(MAZECLASS ,hInstance);
171: UnregisterClass(DRAWCLASS ,hInstance);
172: UnregisterClass(BOUNCECLASS,hInstance);
173:
174: return;
175: }
176:
177:
178: /*---------------------------------------------------------------------------*\
179: | CREATE APPLICATION WINDOW
180: | This routine creates the main top-level window.
181: |
182: | created: 31-Oct-90
183: | history: 31-Oct-90 <chriswil> created.
184: |
185: \*---------------------------------------------------------------------------*/
186: HWND FAR CreateAppWindow(HANDLE hInstance)
187: {
188: /*
189: ** Upon creation of the window, initialize the extra object information.
190: */
191: return(CreateWindow(APPCLASS,APPTITLE,WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
192: CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
193: NULL,NULL,hInstance,NULL));
194: }
195:
196:
197: /*---------------------------------------------------------------------------*\
198: | CREATE MDI CLIENT WINDOW
199: | This routine creates the client window which handles the MDI windows.
200: | The window will eventually be size to fit into the frame-window's client
201: | area.
202: |
203: | created: 31-Oct-90
204: | history: 31-Oct-90 <chriswil> created.
205: |
206: \*---------------------------------------------------------------------------*/
207: HWND FAR CreateMDIClientWindow(HWND hWndFrame)
208: {
209: HWND hWndClient;
210: HANDLE hInstance;
211: CLIENTCREATESTRUCT ccs;
212:
213:
214: /*
215: ** Initialize the client struct to point to define the menu and child
216: ** identifiers. The menu item specifies the parent menu in which the
217: ** the list of MDI childs will be appended to this menu.
218: */
219: ccs.hWindowMenu = NULL;
220: ccs.idFirstChild = 0;
221:
222:
223: hInstance = GETINSTANCE(hWndFrame);
224:
225: hWndClient = CreateWindow("MDICLIENT",NULL,WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,
226: 0,0,1,1,hWndFrame,NULL,hInstance,(LPVOID)&ccs);
227:
228: return(hWndClient);
229: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.