|
|
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.