MALINES.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:15k
源码类别:
Windows编程
开发平台:
Visual C++
- //==========================================================================;
- //
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
- // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
- // PURPOSE.
- //
- // Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved.
- //
- //--------------------------------------------------------------------------;
- //
- // malines.c
- //
- // Description:
- //
- //
- // History:
- // 9/21/93
- //
- //==========================================================================;
- #include <windows.h>
- #include <windowsx.h>
- #include <mmsystem.h>
- #include "mixapp.h"
- #include "debug.h"
- TCHAR gszLineFormatTitle[] = TEXT("Typet3!Componentt10!Line IDt6!Flagst6!Ctrlst3!Connst3!Name");
- TCHAR gszLineFormatList[] = TEXT("%-s%ct%-st%.08lXht%.08lXht%lut%lut%-s");
- //==========================================================================;
- //
- //
- //
- //
- //==========================================================================;
- //--------------------------------------------------------------------------;
- //
- // BOOL MixAppGetComponentName
- //
- // Description:
- //
- //
- // Arguments:
- // LPMIXERLINE pmxl:
- //
- // LPTSTR szComponent:
- //
- // Return (BOOL):
- //
- // History:
- // 08/18/93
- //
- //--------------------------------------------------------------------------;
- BOOL FNLOCAL MixAppGetComponentName
- (
- LPMIXERLINE pmxl,
- LPTSTR szComponent
- )
- {
- //
- //
- //
- if (0 == (MIXERLINE_LINEF_SOURCE & pmxl->fdwLine))
- {
- switch (pmxl->dwComponentType)
- {
- case MIXERLINE_COMPONENTTYPE_DST_UNDEFINED:
- lstrcpy(szComponent, "Undefined");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_DIGITAL:
- lstrcpy(szComponent, "Digital");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_LINE:
- lstrcpy(szComponent, "Line Level");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_MONITOR:
- lstrcpy(szComponent, "Monitor");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_SPEAKERS:
- lstrcpy(szComponent, "Speakers");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_HEADPHONES:
- lstrcpy(szComponent, "Headphones");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_TELEPHONE:
- lstrcpy(szComponent, "Telephone");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_WAVEIN:
- lstrcpy(szComponent, "Wave Input");
- break;
- case MIXERLINE_COMPONENTTYPE_DST_VOICEIN:
- lstrcpy(szComponent, "Voice Recognition");
- break;
- default:
- lstrcpy(szComponent, "NOT VALID");
- break;
- }
- }
- else
- {
- switch (pmxl->dwComponentType)
- {
- case MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED:
- lstrcpy(szComponent, "Undefined");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_DIGITAL:
- lstrcpy(szComponent, "Digital");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_LINE:
- lstrcpy(szComponent, "Line Level");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE:
- lstrcpy(szComponent, "Microphone");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER:
- lstrcpy(szComponent, "Synthesizer");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC:
- lstrcpy(szComponent, "Compact Disc");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE:
- lstrcpy(szComponent, "Telephone");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER:
- lstrcpy(szComponent, "PC Speaker");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT:
- lstrcpy(szComponent, "Wave Out");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY:
- lstrcpy(szComponent, "Auxiliary");
- break;
- case MIXERLINE_COMPONENTTYPE_SRC_ANALOG:
- lstrcpy(szComponent, "Analog");
- break;
- default:
- lstrcpy(szComponent, "NOT VALID");
- break;
- }
- }
- return (TRUE);
- } // MixAppGetComponentName()
- //--------------------------------------------------------------------------;
- //
- // BOOL MixAppDlgProcLineInfo
- //
- // Description:
- // This dialog procedure is used to display driver capabilities.
- //
- // Arguments:
- // HWND hwnd: Handle to window.
- //
- // UINT uMsg: Message being sent to the window.
- //
- // WPARAM wParam: Specific argument to message.
- //
- // LPARAM lParam: Specific argument to message.
- //
- // Return (BOOL):
- // The return value is specific to the message that was received. For
- // the most part, it is FALSE if this dialog procedure does not handle
- // a message.
- //
- // History:
- // 1/ 2/93
- //
- //--------------------------------------------------------------------------;
- BOOL CALLBACK MixAppDlgProcLineInfo
- (
- HWND hwnd,
- UINT uMsg,
- WPARAM wParam,
- LPARAM lParam
- )
- {
- HWND hedit;
- UINT u;
- MIXERLINE mxl;
- MMRESULT mmr;
- TCHAR ach[64];
- switch (uMsg)
- {
- case WM_INITDIALOG:
- hedit = GetDlgItem(hwnd, IDD_LINEINFO_EDIT_INFO);
- SetWindowFont(hedit, GetStockFont(SYSTEM_FIXED_FONT), FALSE);
- //
- //
- //
- //
- mxl.cbStruct = sizeof(mxl);
- mxl.dwLineID = lParam;
- mmr = mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl, MIXER_GETLINEINFOF_LINEID);
- if (MMSYSERR_NOERROR != mmr)
- {
- AppMsgBox(hwnd, MB_OK | MB_ICONEXCLAMATION,
- "mixerGetLineInfo(lineid=%.08lXh) failed on hmx=%.04Xh, mmr=%u!",
- lParam, ghmx, mmr);
- }
- else
- {
- static TCHAR szDisplayTitle[] = TEXT("[Line Info]rn");
- //
- //
- //
- MEditPrintF(hedit, NULL);
- MEditPrintF(hedit, szDisplayTitle);
- MEditPrintF(hedit, "%25s: %.04Xh", (LPTSTR)"Mixer Handle", ghmx);
- //
- //
- //
- MEditPrintF(hedit, "%25s: %lu bytes (requested %lu)", (LPTSTR)"Size of Line Info", mxl.cbStruct, (DWORD)sizeof(mxl));
- MEditPrintF(hedit, "%25s: %lu", (LPTSTR)"Destination", mxl.dwDestination);
- MEditPrintF(hedit, "%25s: %lu", (LPTSTR)"Source", mxl.dwSource);
- MEditPrintF(hedit, "%25s: %.08lXh", (LPTSTR)"Line ID", mxl.dwLineID);
- MEditPrintF(hedit, "~%25s: %.08lXh", (LPTSTR)"Line Flags", mxl.fdwLine);
- if (MIXERLINE_LINEF_SOURCE & mxl.fdwLine)
- MEditPrintF(hedit, "~, source");
- else
- MEditPrintF(hedit, "~, destination");
- if (MIXERLINE_LINEF_DISCONNECTED & mxl.fdwLine)
- MEditPrintF(hedit, "~, disconnected");
- if (MIXERLINE_LINEF_ACTIVE & mxl.fdwLine)
- MEditPrintF(hedit, "~, active");
- if (~(MIXERLINE_LINEF_SOURCE | MIXERLINE_LINEF_DISCONNECTED | MIXERLINE_LINEF_ACTIVE) & mxl.fdwLine)
- MEditPrintF(hedit, "~, *INVALID FLAGS*");
- MEditPrintF(hedit, "");
- MEditPrintF(hedit, "%25s: %.08lXh", (LPTSTR)"Driver User DWord", mxl.dwUser);
- MixAppGetComponentName(&mxl, ach);
- MEditPrintF(hedit, "%25s: %lu, (%s)", (LPTSTR)"Component Type", mxl.dwComponentType, (LPTSTR)ach);
- MEditPrintF(hedit, "%25s: %lu", (LPTSTR)"Num Channels", mxl.cChannels);
- MEditPrintF(hedit, "%25s: %lu", (LPTSTR)"Num Connections", mxl.cConnections);
- MEditPrintF(hedit, "%25s: %lu", (LPTSTR)"Num Controls", mxl.cControls);
- MEditPrintF(hedit, "%25s: '%s'", (LPTSTR)"Short Name", (LPTSTR)mxl.szShortName);
- MEditPrintF(hedit, "%25s: '%s'", (LPTSTR)"Name", (LPTSTR)mxl.szName);
- MEditPrintF(hedit, "rn%25s: %lu", (LPTSTR)"Target Type", mxl.Target.dwType);
- MEditPrintF(hedit, "%25s: %lu", (LPTSTR)"Device ID", mxl.Target.dwDeviceID);
- MEditPrintF(hedit, "%25s: %u", (LPTSTR)"Manufacturer ID", mxl.Target.wMid);
- MEditPrintF(hedit, "%25s: %u", (LPTSTR)"Product ID", mxl.Target.wPid);
- MEditPrintF(hedit, "%25s: %u.%.02u", (LPTSTR)"Version",
- mxl.Target.vDriverVersion >> 8,
- mxl.Target.vDriverVersion & 0x00FF);
- MEditPrintF(hedit, "%25s: '%s'", (LPTSTR)"Product Name", (LPTSTR)mxl.Target.szPname);
- }
- //
- // return nonzero to set the input focus to the control
- // identified by the (hwndFocus = (HWND)wParam) argument.
- // a zero return tells the dialog manager that this function
- // has set the focus using SetFocus.
- //
- return (TRUE);
- case WM_COMMAND:
- u = GET_WM_COMMAND_ID(wParam, lParam);
- if ((IDOK == u) || (IDCANCEL == u))
- {
- EndDialog(hwnd, (IDOK == u));
- }
- break;
- }
- return (FALSE);
- } // MixAppDlgProcLineInfo()
- //--------------------------------------------------------------------------;
- //
- // BOOL MixAppRefreshLineList
- //
- // Description:
- //
- //
- // Arguments:
- // HWND hwnd: Handle of main window.
- //
- // Return (BOOL):
- //
- // History:
- // 05/16/93
- //
- //--------------------------------------------------------------------------;
- BOOL FNGLOBAL MixAppRefreshLineList
- (
- HWND hwnd,
- PTABBEDLISTBOX ptlb
- )
- {
- static TCHAR szLineTypeDst[] = TEXT("DST");
- static TCHAR szLineTypeSrc[] = TEXT(" src");
- MMRESULT mmr;
- UINT u;
- UINT v;
- UINT cConnections;
- MIXERLINE mxl;
- TCHAR ach[128];
- TCHAR szComponent[64];
- int nIndex;
- MIXERCAPS mxcaps;
- //
- //
- //
- SetWindowRedraw(ptlb->hlb, FALSE);
- ListBox_ResetContent(ptlb->hlb);
- if (0 != (APP_OPTF_DEBUGLOG & gfuAppOptions))
- MixAppDebugLog(NULL);
- //
- //
- //
- //
- mmr = mixerGetDevCaps((UINT)ghmx, &mxcaps, sizeof(mxcaps));
- if (MMSYSERR_NOERROR != mmr)
- {
- AppMsgBox(hwnd, MB_OK | MB_ICONEXCLAMATION,
- "mixerGetDevCaps() failed on hmx=%.04Xh, mmr=%u!",
- ghmx, mmr);
- mxcaps.cDestinations = 0;
- }
- for (u = 0; u < mxcaps.cDestinations; u++)
- {
- mxl.cbStruct = sizeof(mxl);
- mxl.dwDestination = u;
- mmr = mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl, MIXER_GETLINEINFOF_DESTINATION);
- if (MMSYSERR_NOERROR != mmr)
- {
- AppMsgBox(hwnd, MB_OK | MB_ICONEXCLAMATION,
- "mixerGetLineInfo(dst=%u) failed on hmx=%.04Xh, mmr=%u!",
- u, ghmx, mmr);
- continue;
- }
- MixAppGetComponentName(&mxl, szComponent);
- //
- //
- //
- wsprintf(ach, gszLineFormatList,
- (LPSTR)szLineTypeDst,
- (MIXERLINE_LINEF_ACTIVE & mxl.fdwLine) ? '*' : ' ',
- (LPTSTR)szComponent,
- mxl.dwLineID,
- mxl.fdwLine,
- mxl.cControls,
- mxl.cConnections,
- (LPSTR)mxl.szName);
- if (0 != (APP_OPTF_DEBUGLOG & gfuAppOptions))
- {
- MixAppDebugLog(ach);
- MixAppDebugLog(gszCRLF);
- }
- nIndex = ListBox_AddString(ptlb->hlb, ach);
- ListBox_SetItemData(ptlb->hlb, nIndex, mxl.dwLineID);
- cConnections = (UINT)mxl.cConnections;
- for (v = 0; v < cConnections; v++)
- {
- mxl.cbStruct = sizeof(mxl);
- mxl.dwDestination = u;
- mxl.dwSource = v;
- mmr = mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl, MIXER_GETLINEINFOF_SOURCE);
- if (MMSYSERR_NOERROR != mmr)
- {
- AppMsgBox(hwnd, MB_OK | MB_ICONEXCLAMATION,
- "mixerGetLineInfo(src=%u) failed on hmx=%.04Xh, mmr=%u!",
- v, ghmx, mmr);
- continue;
- }
- MixAppGetComponentName(&mxl, szComponent);
- //
- //
- //
- wsprintf(ach, gszLineFormatList,
- (LPSTR)szLineTypeSrc,
- (MIXERLINE_LINEF_ACTIVE & mxl.fdwLine) ? '*' : ' ',
- (LPTSTR)szComponent,
- mxl.dwLineID,
- mxl.fdwLine,
- mxl.cControls,
- mxl.cConnections,
- (LPSTR)mxl.szName);
- if (0 != (APP_OPTF_DEBUGLOG & gfuAppOptions))
- {
- MixAppDebugLog(ach);
- MixAppDebugLog(gszCRLF);
- }
- nIndex = ListBox_AddString(ptlb->hlb, ach);
- ListBox_SetItemData(ptlb->hlb, nIndex, mxl.dwLineID);
- }
- }
- //
- //
- //
- SetWindowRedraw(ptlb->hlb, TRUE);
- return (TRUE);
- } // MixAppRefreshLineList()
- //==========================================================================;
- //
- //
- //
- //
- //==========================================================================;
- //--------------------------------------------------------------------------;
- //
- // LRESULT MixAppLineChange
- //
- // Description:
- //
- //
- // Arguments:
- // HWND hwnd:
- //
- // HMIXER hmx:
- //
- // DWORD dwLineID:
- //
- // Return (LRESULT):
- //
- // History:
- // 07/21/93
- //
- //--------------------------------------------------------------------------;
- LRESULT FNGLOBAL MixAppLineChange
- (
- HWND hwnd,
- HMIXER hmx,
- DWORD dwLineID
- )
- {
- DPF(1, "MixAppLineChange(hwnd=%Xh, hmx=%Xh, dwLineID=%.08lXh)",
- hwnd, hmx, dwLineID);
- //
- //
- //
- if (gfDisplayingControl &&
- (dwLineID == gmxl.dwLineID) &&
- (NULL != ghdlgControl))
- {
- SendMessage(ghdlgControl, MM_MIXM_LINE_CHANGE, (WPARAM)hmx, dwLineID);
- }
- MixAppRefreshLineList(hwnd, gptlbLines);
- //
- // return zero because we handled the message
- //
- return (0L);
- } // MixAppLineChange()