Solved

Recording and Play Wave file IN VC++4.0

Posted on 1997-12-27
6
436 Views
Last Modified: 2008-03-03
Dear
     
  I want to play and record wave file VC++4.0
 What is the function call coding and paramters?
 Thank You for help      
0
Comment
Question by:logout
6 Comments
 
LVL 7

Accepted Solution

by:
galkin earned 20 total points
ID: 1177095
To play wav files use PlaySound Win32 multimedia function. Be sure to build you project with winmm.lib and when compiling include mmsystem.h


0
 

Author Comment

by:logout
ID: 1177096
Dear
     Which lib function need to be called?
0
 
LVL 7

Expert Comment

by:galkin
ID: 1177097
The function is PlaySound implemented in winmm.dll which can be found in system directory. Corresponding lib file is winmm.lib that comes with windows SDK or VC++ or BC++.Header file needed is mmsystem.h which also comes with Windows SDK, VC++ or BC++ and can be found in include directory.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 1

Expert Comment

by:andla
ID: 1177098
Recording sounds.

DWORD recordWAVEFile(DWORD dwMilliSeconds);

DWORD recordWAVEFile(DWORD dwMilliSeconds)
{
    UINT wDeviceID;
    DWORD dwReturn;
    MCI_OPEN_PARMS mciOpenParms;
    MCI_RECORD_PARMS mciRecordParms;
    MCI_SAVE_PARMS mciSaveParms;
    MCI_PLAY_PARMS mciPlayParms;
 
    /*
     * Open a waveform device with a new file for recording.
     */
    mciOpenParms.lpstrDeviceType = "waveaudio";
    mciOpenParms.lpstrElementName = "";
    if (dwReturn = mciSendCommand(0, MCI_OPEN,
            MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,
            (DWORD)(LPVOID) &mciOpenParms)) {
        /*
         * Failed to open device. Don't close it; just return
         * error.
         */
        return dwReturn;
    }
 
    /* Device opened successfully. Get the device ID. */
    wDeviceID = mciOpenParms.wDeviceID;
 
    /*
     * Begin recording and record for the specified number
     * of milliseconds. Wait for recording to complete before
     * continuing. Assume the default time format for the
     * waveform device (milliseconds).
     */
    mciRecordParms.dwTo = dwMilliSeconds;
    if (dwReturn = mciSendCommand(wDeviceID, MCI_RECORD,
            MCI_TO | MCI_WAIT, (DWORD)(LPVOID) &mciRecordParms)) {
        mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
        return dwReturn;
    }
 
    /* Play the recording and query user to save the file. */
    mciPlayParms.dwFrom = 0;
    if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY,
            MCI_FROM | MCI_WAIT,
            (DWORD)(LPVOID) &mciPlayParms)) {
        mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
        return dwReturn;
    }
            HWND hMainWnd;
            hMainWnd=hwnd;
    if (MessageBox(hMainWnd, "Do you want to save this recording?",
            "", MB_YESNO) == IDNO) {
        mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
        return 0;
    }
 
    /*
     * Save the recording to a file named TEMPFILE.WAV. Wait for
     * the operation to finish before continuing.
     */
    mciSaveParms.lpfilename = "tempfile.wav";
    if (dwReturn = mciSendCommand(wDeviceID, MCI_SAVE,
            MCI_SAVE_FILE | MCI_WAIT,
            (DWORD)(LPVOID) &mciSaveParms)) {
        mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
        return dwReturn;
    }
 
    return 0;
}

0
 

Author Comment

by:logout
ID: 1177099
DWORD dwMilliSeconds is parameter.
Does that parameter need to assign a value
0
 

Expert Comment

by:dylanwolf
ID: 2297634
What's the deference between mci function and wavein function?
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Article by: SunnyDark
This article's goal is to present you with an easy to use XML wrapper for C++ and also present some interesting techniques that you might use with MS C++. The reason I built this class is to ease the pain of using XML files with C++, since there is…
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now