COXSoundEffectManager

Note that sounds are usually played in result of some user action (e.g. mouse left button was clicked or specic keyboard button was pressed) or in result of some event (e.g. expiring of some period of time). Any event which eventually forces an application to play sound we call sound event. To uniquely identify any such
event we define a sound event ID. This approach goes perefectly fine with natural events such as mouse or keyboard events. In the case when sound is played in result of an application specific event why don't we define it as an application specific message. We arrived to the point where we associate any sound played with some windows message. Now the idea that stands behind COXSoundEffectManager class should be clear. Why don't we create the class that will manage sound effects and sound events? It should be only one function to register a sound to be played when a particular event is fired! And as long as sound events are defined as window messages we can come up with the class that will work with any object (static, edit, combobox, button, listbox, tree, list controls are windows, aren't they). 

COXSoundEffectOrganizer

COXSoundEffectManager class provides all the functionality we need to associate any sound events with one window object. It's not very convinient when you have to provide sound effects for big number of window objects (you have to create COXSoundEffectManager object for every such window object). And still you have a problem with organizing all these COXSoundEffectManager objects. To simplify the process of using multiple instances of COXSoundEffectManager object and manage them in the most effective way we designed COXSoundEffectOrganizer class. 
We duplicated most functions that can be found in COXSoundEffectManager class just by adding an additional parameter - pointer to the window object that was
registered or about to be registered with any sound event.

COXSoundCustomizeDlg

OXSoundCustomizeDlg class is designed specifically to be used in conjunction with COXSoundEffectOrganizer class and provides all the functionality to customize any sound events registered with any window objects using COXSoundEffectOrganizer object.