{\rtf1\ansi\ansicpg1252\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\froman Times New Roman;}{\f3\froman Times New Roman;}} {\colortbl\red0\green0\blue0;\red0\green0\blue255;} \deflang1033\horzdoc{\*\fchars }{\*\lchars }\pard\plain\f3\fs36\cf1\b COXSoundEffectManager\plain\f3\fs24 \par \par 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 \par 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). \par \par \par \plain\f3\fs36\cf1\b COXSoundEffectOrganizer\plain\f3\fs24 \par \par \plain\f3\fs24\cf1\ul COXSoundEffectManager\plain\f3\fs24 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 \plain\f3\fs24\cf1\ul COXSoundEffectManager\plain\f3\fs24 object for every such window object). And still you have a problem with organizing all these \plain\f3\fs24\cf1\ul COXSoundEffectManager\plain\f3\fs24 objects. To simplify the process of using multiple instances of \plain\f3\fs24\cf1\ul COXSoundEffectManager\plain\f3\fs24 object and manage them in the most effective way we designed COXSoundEffectOrganizer class. \par We duplicated most functions that can be found in \plain\f3\fs24\cf1\ul COXSoundEffectManager\plain\f3\fs24 class just by adding an additional parameter - pointer to the window object that was \par registered or about to be registered with any sound event. \par \par \par \plain\f3\fs36\cf1\b COXSoundCustomizeDlg\plain\f3\fs24 \par \par \pard\plain\f3\fs24 OXSoundCustomizeDlg class is designed specifically to be used in conjunction with \plain\f3\fs24\cf1\ul COXSoundEffectOrganizer\plain\f3\fs24 class and provides all the functionality to customize any sound events registered with any window objects using \plain\f3\fs24\cf1\ul COXSoundEffectOrganizer\plain\f3\fs24 object. \par \par \plain\f2\fs20 \par }