Annotation of q_a/samples/cpl/stereo.c, revision 1.1

1.1     ! root        1: /****************************************************************************
        !             2: *
        !             3: *
        !             4: *    PROGRAM: Stereo.c
        !             5: *
        !             6: *    PURPOSE: Example of a Control Panel Application
        !             7: *
        !             8: *    FUNCTIONS:
        !             9: *
        !            10: *        DllMain()
        !            11: *        InitStereoApplet()
        !            12: *        TermStereoApplet()
        !            13: *        CPIApplet()
        !            14: *        AmpDlgProc()
        !            15: *        TermDlgProc()
        !            16: *        TunerDlgProc()
        !            17: *
        !            18: *    COMMENTS:
        !            19: *
        !            20: *    The following code sample shows the CPlApplet function for a DLL containing
        !            21: *    three Control Panel applications that set preferences for a component stereo
        !            22: *    system attached to the computer. The sample uses an application-defined
        !            23: *    StereoApplets array that contains three structures, each corresponding to
        !            24: *    one of the Control Panel applications. Each structure contains all the
        !            25: *    information required by the CPL_NEWINQUIRE message, as well as the dialog
        !            26: *    box template and dialog box procedure required by the CPL_DBLCLK message.
        !            27: *    The code demonstrates how to fill the structures in the StereoApplets array.
        !            28: *
        !            29: ****************************************************************************/
        !            30: 
        !            31: #include <windows.h>
        !            32: #include <cpl.h>
        !            33: #include "stereo.h"
        !            34: 
        !            35: typedef struct tagApplets
        !            36: {
        !            37:     int icon;           // icon resource identifier
        !            38:     int namestring;     // name-string resource identifier
        !            39:     int descstring;     // description-string resource identifier
        !            40:     int dlgtemplate;    // dialog box template resource identifier
        !            41:     DLGPROC dlgfn;      // dialog box procedure
        !            42: } APPLETS;
        !            43: 
        !            44: APPLETS StereoApplets[] =
        !            45: {
        !            46:     AMP_ICON, AMP_NAME, AMP_DESC, AMP_DLG, AmpDlgProc,
        !            47:     TUNER_ICON, TUNER_NAME, TUNER_DESC, TUNER_DLG, TunerDlgProc,
        !            48:     TAPE_ICON, TAPE_NAME, TAPE_DESC, TAPE_DLG, TapeDlgProc,
        !            49: 
        !            50: };
        !            51: 
        !            52: #define NUM_APPLETS (sizeof(StereoApplets)/sizeof(StereoApplets[0]))
        !            53: 
        !            54: 
        !            55: HANDLE hModule = NULL;
        !            56: 
        !            57: char szCtlPanel[30];
        !            58: 
        !            59: /****************************************************************************
        !            60: *
        !            61: *    FUNCTION: DllMain(PVOID, ULONG, PCONTEXT)
        !            62: *
        !            63: *    PURPOSE: Win 32 Initialization DLL
        !            64: *
        !            65: *    COMMENTS:
        !            66: *
        !            67: *
        !            68: ****************************************************************************/
        !            69: 
        !            70: BOOL WINAPI DllMain(
        !            71: IN PVOID hmod,
        !            72: IN ULONG ulReason,
        !            73: IN PCONTEXT pctx OPTIONAL)
        !            74: {
        !            75:     if (ulReason != DLL_PROCESS_ATTACH)
        !            76:     {
        !            77:         return TRUE;
        !            78:     }
        !            79:     else
        !            80:     {
        !            81:         hModule = hmod;
        !            82:     }
        !            83: 
        !            84:     return TRUE;
        !            85: 
        !            86:     UNREFERENCED_PARAMETER(pctx);
        !            87: }
        !            88: 
        !            89: 
        !            90: /****************************************************************************
        !            91: *
        !            92: *    FUNCTION: InitStereoApplet(HWND)
        !            93: *
        !            94: *    PURPOSE: loads the caption string for the Control Panel
        !            95: *
        !            96: *    COMMENTS:
        !            97: *
        !            98: *
        !            99: ****************************************************************************/
        !           100: 
        !           101: BOOL InitStereoApplet (HWND hwndParent)
        !           102: {
        !           103:     LoadString (hModule, CPCAPTION, szCtlPanel, sizeof(szCtlPanel));
        !           104: 
        !           105:     return TRUE;
        !           106: 
        !           107:     UNREFERENCED_PARAMETER(hwndParent);
        !           108: }
        !           109: 
        !           110: 
        !           111: /****************************************************************************
        !           112: *
        !           113: *    FUNCTION: TermStereoApplet()
        !           114: *
        !           115: *    PURPOSE: termination procedure for the stereo applets
        !           116: *
        !           117: *    COMMENTS:
        !           118: *
        !           119: *
        !           120: ****************************************************************************/
        !           121: 
        !           122: void TermStereoApplet()
        !           123: {
        !           124:     return;
        !           125: }
        !           126: 
        !           127: 
        !           128: 
        !           129: /****************************************************************************
        !           130: *
        !           131: *    FUNCTION: CPIApplet(HWND, UINT, LONG, LONG)
        !           132: *
        !           133: *    PURPOSE: Processes messages for control panel applets
        !           134: *
        !           135: *    COMMENTS:
        !           136: *
        !           137: *
        !           138: ****************************************************************************/
        !           139: LONG CALLBACK CPlApplet (hwndCPL, uMsg, lParam1, lParam2)
        !           140: HWND hwndCPL;       // handle of Control Panel window
        !           141: UINT uMsg;          // message
        !           142: LONG lParam1;       // first message parameter
        !           143: LONG lParam2;       // second message parameter
        !           144: {
        !           145:     int iApplet;
        !           146:     LPNEWCPLINFO lpNewCPlInfo;
        !           147:     static iInitCount = 0;
        !           148:             
        !           149:     switch (uMsg) {
        !           150:         case CPL_INIT:              // first message, sent once
        !           151:             if (!iInitCount)
        !           152:             {
        !           153:                 if (!InitStereoApplet(hwndCPL))
        !           154:                     return FALSE;
        !           155:             }
        !           156:             iInitCount++;
        !           157:             return TRUE;
        !           158: 
        !           159:         case CPL_GETCOUNT:          // second message, sent once
        !           160:             return (LONG)NUM_APPLETS;
        !           161:             break;
        !           162: 
        !           163:         case CPL_NEWINQUIRE:        // third message, sent once per app
        !           164:             lpNewCPlInfo = (LPNEWCPLINFO) lParam2;
        !           165: 
        !           166:             iApplet = (int)(LONG)lParam1;
        !           167:             lpNewCPlInfo->dwSize = (DWORD) sizeof(NEWCPLINFO);
        !           168:             lpNewCPlInfo->dwFlags = 0;
        !           169:             lpNewCPlInfo->dwHelpContext = 0;
        !           170:             lpNewCPlInfo->lData = 0;
        !           171:             lpNewCPlInfo->hIcon = LoadIcon (hModule,
        !           172:                 (LPCTSTR) MAKEINTRESOURCE(StereoApplets[iApplet].icon));
        !           173:             lpNewCPlInfo->szHelpFile[0] = '\0';
        !           174: 
        !           175:             LoadString (hModule, StereoApplets[iApplet].namestring,
        !           176:                         lpNewCPlInfo->szName, 32);
        !           177: 
        !           178:             LoadString (hModule, StereoApplets[iApplet].descstring,
        !           179:                         lpNewCPlInfo->szInfo, 64);
        !           180:             break;
        !           181: 
        !           182:         case CPL_SELECT:            // application icon selected
        !           183:             break;
        !           184: 
        !           185: 
        !           186:         case CPL_DBLCLK:            // application icon double-clicked
        !           187:             iApplet = (int)(LONG)lParam1;
        !           188:             MessageBeep (MB_ICONEXCLAMATION);
        !           189: 
        !           190:             DialogBox (hModule,
        !           191:                        MAKEINTRESOURCE(StereoApplets[iApplet].dlgtemplate),
        !           192:                        hwndCPL,
        !           193:                        StereoApplets[iApplet].dlgfn);
        !           194:             break;
        !           195: 
        !           196:          case CPL_STOP:              // sent once per app. before CPL_EXIT
        !           197:             break;
        !           198: 
        !           199:          case CPL_EXIT:              // sent once before FreeLibrary called
        !           200:             iInitCount--;
        !           201:             if (!iInitCount)
        !           202:                 TermStereoApplet();
        !           203:             break;
        !           204: 
        !           205:          default:
        !           206:             break;
        !           207:     }
        !           208:     return 0;
        !           209: }
        !           210: 
        !           211: /****************************************************************************
        !           212: *
        !           213: *    FUNCTION: AmpDlgProc
        !           214: *
        !           215: *    PURPOSE: Processes messages sent to the Amp applet.
        !           216: *
        !           217: *    COMMENTS:
        !           218: *
        !           219: *    This dialog simply puts up a box and has an OK key.  It doesn't
        !           220: *    do anything except display.
        !           221: *
        !           222: ****************************************************************************/
        !           223: BOOL APIENTRY AmpDlgProc (HWND hDlg, UINT message, UINT wParam, LONG lParam)
        !           224: {
        !           225:     switch (message)
        !           226:     {
        !           227:            case WM_INITDIALOG:
        !           228:                return (TRUE);
        !           229: 
        !           230:            case WM_COMMAND:      
        !           231:             if (LOWORD(wParam))
        !           232:             { 
        !           233:                        EndDialog(hDlg, TRUE);
        !           234:                        return (TRUE);
        !           235:                }
        !           236:                break;
        !           237:     }
        !           238:     return (FALSE);
        !           239: }
        !           240: 
        !           241: /****************************************************************************
        !           242: *
        !           243: *    FUNCTION: TunerDlgProc
        !           244: *
        !           245: *    PURPOSE: Processes messages sent to the Tuner applet.
        !           246: *
        !           247: *    COMMENTS:
        !           248: *
        !           249: *    This dialog simply puts up a box and has an OK key.  It doesn't
        !           250: *    do anything except display.
        !           251: *
        !           252: ****************************************************************************/
        !           253: BOOL APIENTRY TunerDlgProc (HWND hDlg, UINT message, UINT wParam, LONG lParam)
        !           254: {
        !           255:     switch (message)
        !           256:     {
        !           257:            case WM_INITDIALOG:
        !           258:                return (TRUE);
        !           259: 
        !           260:            case WM_COMMAND:      
        !           261:             if (LOWORD(wParam))
        !           262:             { 
        !           263:                        EndDialog(hDlg, TRUE);
        !           264:                        return (TRUE);
        !           265:                }
        !           266:                break;
        !           267:     }
        !           268:     return (FALSE);
        !           269: }
        !           270: 
        !           271: /****************************************************************************
        !           272: *
        !           273: *    FUNCTION: TapeDlgProc
        !           274: *
        !           275: *    PURPOSE: Processes messages sent to the Tape applet.
        !           276: *
        !           277: *    COMMENTS:
        !           278: *
        !           279: *    This dialog simply puts up a box and has an OK key.  It doesn't
        !           280: *    do anything except display.
        !           281: *
        !           282: ****************************************************************************/
        !           283: BOOL APIENTRY TapeDlgProc (HWND hDlg, UINT message, UINT wParam, LONG lParam)
        !           284: {
        !           285:     switch (message)
        !           286:     {
        !           287:            case WM_INITDIALOG:
        !           288:                return (TRUE);
        !           289: 
        !           290:            case WM_COMMAND:      
        !           291:             if (LOWORD(wParam))
        !           292:             { 
        !           293:                        EndDialog(hDlg, TRUE);
        !           294:                        return (TRUE);
        !           295:                }
        !           296:                break;
        !           297:     }
        !           298:     return (FALSE);
        !           299: }
        !           300: 

unix.superglobalmegacorp.com

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