|
|
1.1 root 1: /*
2: PlaySnd.c
3:
4: This is a PlaySnd Win32 app
5:
6: */
7:
8: #include <windows.h>
9: #include "PlaySnd.h"
10:
11: /* useful global things */
12:
13: HANDLE ghModule; // global module handle
14: char szAppName[SIZEOFAPPNAME]; // app name
15: HWND ghwndMain; // handle of main window
16: BOOL bNoWait;
17: BOOL bSync;
18: BOOL bResourceID;
19:
20: //
21: // local fns
22: //
23:
24: void MyBeep(DWORD wParam);
25:
26: /***************** Main entry point routine *************************/
27:
28: int _CRTAPI1 main(int argc, char *argv[], char *envp[])
29: {
30: MSG msg;
31: HANDLE hAccTable; /* handle to keyboard accelerator table */
32:
33: UNREFERENCED_PARAMETER(envp);
34:
35: if (argc > 1) {
36:
37: // assume that the first arg is a filename
38: dprintf1("Calling PLAYSOUND to play %s", argv[1]);
39:
40: WinAssert(SND_ASYNC);
41:
42: PlaySound(argv[1], NULL, SND_SYNC | SND_FILENAME);
43: return 0;
44: }
45:
46: // try to init the main part of the app
47: if (! InitApp()) {
48: dprintf("Failed to initialise correctly");
49: return 1;
50: }
51:
52: /* load the keyboard accelerator table */
53:
54: hAccTable = LoadAccelerators(ghModule, MAKEINTRESOURCE(IDA_ACCTABLE)/*"AccTable" */);
55: WinAssert(hAccTable);
56:
57: /* check for messages from Windows and process them */
58:
59: while (GetMessage(&msg, NULL, 0, 0)) {
60: if (!TranslateAccelerator(ghwndMain, hAccTable, &msg)) {
61: TranslateMessage(&msg);
62: DispatchMessage(&msg);
63: }
64: }
65:
66: return 0;
67: }
68:
69: /************* main window message handler ******************************/
70:
71: int APIENTRY MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
72: {
73: HMENU hMenu;
74: PAINTSTRUCT ps; /* paint structure */
75:
76: /* process any messages we want */
77:
78: switch(message) {
79: case WM_CREATE:
80: break;
81:
82: case WM_SIZE:
83: break;
84:
85: case WM_INITMENUPOPUP:
86: // show the option flag states
87: dprintf("WM_INITMENUPOPUP %8x %8x %8x",hWnd, wParam, lParam);
88: hMenu = GetMenu(hWnd);
89: CheckMenuItem(hMenu, IDM_SYNC, bSync ? MF_CHECKED : MF_UNCHECKED);
90: CheckMenuItem(hMenu, IDM_NOWAIT, bNoWait ? MF_CHECKED : MF_UNCHECKED);
91: CheckMenuItem(hMenu, IDM_RESOURCEID, bResourceID ? MF_CHECKED : MF_UNCHECKED);
92:
93: #ifdef MEDIA_DEBUG
94: CheckMenuItem(hMenu, (__iDebugLevel + IDM_DEBUG0), MF_CHECKED);
95: #endif
96: break;
97:
98: case WM_COMMAND:
99: /* process menu messages */
100: CommandMsg(hWnd, wParam);
101: break;
102:
103: case WM_PAINT:
104: BeginPaint(hWnd, &ps);
105: EndPaint(hWnd, &ps);
106: break;
107:
108: case WM_DESTROY:
109: TerminateApp();
110: PostQuitMessage(0);
111: break;
112:
113: default:
114: return DefWindowProc(hWnd, message, wParam, lParam);
115: break;
116: }
117: return 0;
118: }
119:
120: void CommandMsg(HWND hWnd, DWORD wParam)
121: {
122: /* process any WM_COMMAND messages we want */
123:
124: switch (wParam) {
125: case IDM_PLAYFILE:
126: PlayFile();
127: break;
128:
129: case IDM_SOUNDS:
130: Sounds(hWnd);
131: break;
132:
133: case IDM_DING:
134: case IDM_SIREN:
135: case IDM_LASER:
136: Resource(wParam);
137: break;
138:
139: case IDM_ICONHAND:
140: case IDM_ICONQUESTION:
141: case IDM_ICONEXCLAMATION:
142: case IDM_ICONASTERISK:
143: case IDM_SYNC_ICONHAND:
144: case IDM_SYNC_ICONQUESTION:
145: case IDM_SYNC_ICONEXCLAMATION:
146: case IDM_SYNC_ICONASTERISK:
147: MyBeep(wParam);
148: break;
149:
150: case IDM_RESOURCEID:
151: bResourceID = !bResourceID;
152: break;
153:
154: case IDM_SYNC:
155: bSync = !bSync;
156: break;
157:
158: case IDM_NOWAIT:
159: bNoWait = !bNoWait;
160: break;
161:
162: case IDM_ABOUT:
163: About(hWnd);
164: break;
165:
166: case IDM_HELP_INDEX:
167: case IDM_HELP_KEYBOARD:
168: case IDM_HELP_HELP:
169: Help(hWnd, wParam);
170: break;
171:
172: #ifdef MEDIA_DEBUG
173: case IDM_DEBUG0:
174: case IDM_DEBUG1:
175: case IDM_DEBUG2:
176: case IDM_DEBUG3:
177: case IDM_DEBUG4:
178: dDbgSetDebugMenuLevel((int)(wParam - IDM_DEBUG0));
179: break;
180: #endif
181:
182: case IDM_EXIT:
183: PostMessage(hWnd, WM_CLOSE, 0, 0l);
184: break;
185:
186: default:
187: break;
188: }
189: }
190:
191: void MyBeep(DWORD wParam)
192: {
193: DWORD dwFlags = MB_OK;
194: LPSTR lpstr = NULL;
195:
196: switch (wParam) {
197: case IDM_SYNC_ICONHAND:
198: case IDM_SYNC_ICONQUESTION:
199: case IDM_SYNC_ICONEXCLAMATION:
200: case IDM_SYNC_ICONASTERISK:
201: dwFlags |= MB_TASKMODAL;
202: break;
203: }
204:
205: switch (wParam) {
206: case IDM_ICONHAND:
207: case IDM_SYNC_ICONHAND:
208: dwFlags |= MB_ICONHAND;
209: lpstr = "MB_ICONHAND";
210: break;
211:
212: case IDM_ICONQUESTION:
213: case IDM_SYNC_ICONQUESTION:
214: dwFlags |= MB_ICONQUESTION;
215: lpstr = "MB_ICONQUESTION";
216: break;
217:
218: case IDM_ICONEXCLAMATION:
219: case IDM_SYNC_ICONEXCLAMATION:
220: dwFlags |= MB_ICONEXCLAMATION;
221: lpstr = "MB_ICONEXCLAMATION";
222: break;
223:
224: case IDM_ICONASTERISK:
225: case IDM_SYNC_ICONASTERISK:
226: dwFlags |= MB_ICONASTERISK;
227: lpstr = "MB_ICONASTERISK";
228: break;
229:
230: default:
231: break;
232:
233: }
234: if (lpstr) {
235: dprintf2("Calling Message beep with flags %8x Type %s", dwFlags, lpstr);
236: MessageBeep((UINT)dwFlags);
237: dprintf2("Now calling MessageBox");
238: MessageBox(ghwndMain, lpstr, szAppName, (UINT)dwFlags);
239: }
240: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.