Wave File Editor Control

This WaveFile manipulation control provides a basic interface for displaying and
editing wave files within a commercial audio-processing application. The app contains code
on displaying the graphical data, using button logic and rudimentary mouse input to
manipulate the waveform data. Thanks go to Ken C. Len's Histogram
Control for providing much of the underlying control code.

In this sample I simply use random values to generate the waveform amplitude. In a
real-world application you would load/record a wave file and gain access to the individual
sound samples through the waveform audio or other low-level audio API. Mouse input is
still basic at this point but could be easily embellished to allow caret dragging across
portions of the waveform - for cut/copy/paste etc..

The header and implementation code for the CWaveEditCtrl class are in WaveEditCtrl.h
and WaveEditCtrl.cpp

How to use

In your dialog box, dialog derived, or CFromView MDI/SDI derived app - create a static
picture control. Give it a meaningful name and set its' properties to Rectangle and give
it a Background color (sorry, we're limited to Ford colors from the 1930's here). Add the
.h and .cpp files to your project and #include the .h in your app's header file.

Don't forget to add OnSetFocus() and OnKillFocus()
handlers to your view with the appropriate CWaveEditCtrl member function calls -
this will enable system-wide sharing of the caret resource.Note - When using the CWaveEdit class within a Dialog-based
application I had some problems getting OnSetFocus() to respond. If anyone knows how to
fix this, please let me know.

Re: ASSERT fail when "CLOSE" multiple selection - MDI status bar

Hi,
I was trying the solution submitted by Hamond Hau, but I have the same problems with the OnClose method.
I modified a little bit the code of Iuri, and now it seems that it's working.
In the file WinListDlg.cpp, you can replace in the OnClose method the following lines:
---------
for (int t = 0; t < iCount; t++)
{
int item = wndList.GetItemData(pi[t]);
((CView *) theViewManager.arViews.GetAt(item))->GetParent()->SendMessage(WM_CLOSE);
}
delete [] pi;
----------

Top White Papers and Webcasts

U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there is simply not enough quality talent to go around. Tiempo Development is a nearshore software development company. Our headquarters are in AZ, but we are a pioneer and leader in outsourcing to Mexico, based on our three software development centers there. We have a proven process and we are experts at providing our customers with powerful solutions. We transform ideas into reality.

When individual departments procure cloud service for their own use, they usually don't consider the hazardous organization-wide implications. Read this paper to learn best practices for setting up an internal, IT-based cloud brokerage function that service the entire organization. Find out how this approach enables you to retain top-down visibility and control of network security and manage the impact of cloud traffic on your WAN.