Annotation of mstools/samples/playsnd/debug.c, revision 1.1.1.1

1.1       root        1: /*
                      2:     debug.c
                      3: 
                      4:     debugging menu support
                      5: 
                      6:     Debug level info is in WIN.INI in the [debug] section:
                      7: 
                      8:         [debug]
                      9:         App=0               level for App
                     10: 
                     11: */
                     12: 
                     13: #include <stdio.h>
                     14: #include <windows.h>
                     15: #include "PlaySnd.h"
                     16: #include <stdarg.h>
                     17: 
                     18: #ifdef MEDIA_DEBUG
                     19: 
                     20: extern void winmmSetDebugLevel(int level);
                     21: 
                     22: void dDbgSetDebugMenuLevel(int i)
                     23: {
                     24:     HMENU hMenu;
                     25:     UINT m;
                     26: 
                     27:     if ((i < 0) || (i > 4)) i = 4;
                     28:     hMenu = GetMenu(ghwndMain);
                     29: 
                     30:     for (m=IDM_DEBUG0; m<=IDM_DEBUG4; m++) {
                     31:         CheckMenuItem(hMenu, m, MF_UNCHECKED);
                     32:     }
                     33: 
                     34:     CheckMenuItem(hMenu, (i + IDM_DEBUG0), MF_CHECKED);
                     35:     __iDebugLevel = i;
                     36:     dprintf3("Debug level set to %d", i);
                     37: 
                     38:     //
                     39:     // set the winmm dll debug level to be the same
                     40:     //
                     41: 
                     42:     winmmSetDebugLevel(i);
                     43: }
                     44: 
                     45: /***************************************************************************
                     46: 
                     47:     @doc INTERNAL
                     48: 
                     49:     @api void | dDbgOut | This function sends output to the current
                     50:         debug output device.
                     51: 
                     52:     @parm LPSTR | lpszFormat | Pointer to a printf style format string.
                     53:     @parm ??? | ... | Args.
                     54: 
                     55:     @rdesc There is no return value.
                     56: 
                     57: ****************************************************************************/
                     58: 
                     59: void dDbgOut(LPSTR lpszFormat, ...)
                     60: {
                     61:     int i;
                     62:     char buf[256];
                     63:     va_list va;
                     64: 
                     65:     sprintf(buf, "%s: ", szAppName);
                     66:     OutputDebugString(buf);
                     67: 
                     68:     va_start(va, lpszFormat);
                     69:     i = vsprintf(buf, lpszFormat, va);
                     70:     va_end(va);
                     71: 
                     72:     OutputDebugString(buf);
                     73: 
                     74:     OutputDebugString("\n");
                     75: }
                     76: 
                     77: /***************************************************************************
                     78: 
                     79:     @doc INTERNAL
                     80: 
                     81:     @api int | dDbgGetLevel | This function gets the current debug level
                     82:         for a module.
                     83: 
                     84:     @parm LPSTR | lpszModule | The name of the module.
                     85: 
                     86:     @rdesc The return value is the current debug level.
                     87: 
                     88:     @comm The information is kept in the [debug] section of WIN.INI
                     89: 
                     90: ****************************************************************************/
                     91: 
                     92: int dDbgGetLevel(LPSTR lpszAppName)
                     93: {
                     94: #ifdef MEDIA_DEBUG
                     95:     return GetProfileInt("MMDEBUG", lpszAppName, 4);
                     96: #else
                     97:     return GetProfileInt("MMDEBUG", lpszAppName, 1);
                     98: #endif
                     99: }
                    100: 
                    101: /***************************************************************************
                    102: 
                    103:     @doc INTERNAL
                    104: 
                    105:     @api int | dDbgSaveLevel | This function saves the current debug level
                    106:         for a module.
                    107: 
                    108:     @parm LPSTR | lpszModule | The name of the module.
                    109:     @parm int | iLevel | The value to save.
                    110: 
                    111:     @rdesc There is no return value.
                    112: 
                    113:     @comm The information is kept in the [debug] section of WIN.INI
                    114: 
                    115: ****************************************************************************/
                    116: 
                    117: void dDbgSaveLevel(LPSTR lpszAppName, int iLevel)
                    118: {
                    119:     char buf[80];
                    120: 
                    121:     sprintf(buf, "%d", iLevel);
                    122:     WriteProfileString("MMDEBUG", lpszAppName, buf);
                    123: }
                    124: 
                    125: /***************************************************************************
                    126: 
                    127:     @doc INTERNAL
                    128: 
                    129:     @api void | dDbgAssert | This function shows an assert message box.
                    130: 
                    131:     @parm LPSTR | exp | Pointer to the expression string.
                    132:     @parm LPSTR | file | Pointer to the file name.
                    133:     @parm int | line | The line number.
                    134: 
                    135:     @rdesc There is no return value.
                    136: 
                    137:     @comm We try to use the current active window as the parent. If
                    138:         this fails we use the desktop window.  The box is system
                    139:         modal to avoid any trouble.
                    140: 
                    141: ****************************************************************************/
                    142: 
                    143: void dDbgAssert(LPSTR exp, LPSTR file, int line)
                    144: {
                    145:     char bufTmp[256];
                    146:     int iResponse;
                    147:     HWND hWnd;
                    148: 
                    149:     sprintf(bufTmp,
                    150:         "Expression: %s\nFile: %s, Line: %d\n\nAbort:  Exit Process\nRetry:  Enter Debugger\nIgnore: Continue",
                    151:         exp, file, line);
                    152: 
                    153:     // try to use the active window, but NULL is ok if there
                    154:     // isn't one.
                    155: 
                    156:     hWnd = GetActiveWindow();
                    157: 
                    158:     iResponse = MessageBox(hWnd,
                    159:                            bufTmp,
                    160:                            "Assertion Failure - continue?",
                    161:                            MB_TASKMODAL
                    162:                             | MB_ICONEXCLAMATION
                    163:                             | MB_DEFBUTTON3
                    164:                             | MB_OKCANCEL);
                    165: 
                    166:     switch (iResponse) {
                    167:         case 0:
                    168:             dprintf1("Assert message box failed");
                    169:             dprintf2("  Expression: %s", exp);
                    170:             dprintf2("  File: %s,  Line: %d", file, line);
                    171:             break;
                    172:         case IDCANCEL:
                    173:             ExitProcess(1);
                    174:             break;
                    175:         case IDOK:
                    176:             break;
                    177:         default:
                    178:             dprintf1("Assert message box failed");
                    179:             dprintf2("  Expression: %s", exp);
                    180:             dprintf2("  File: %s,  Line: %d", file, line);
                    181:             break;
                    182:     }
                    183: }
                    184: 
                    185: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.