═══ 1. Multimedia Classes ═══ Provide support for the multimedia devices and controls used by the applications you develop. ═══ 1.1. Class Hierarchy ═══ IBase ├─IMMAudioBuffer └─IVBase ├─IMMAudioCDContents::Cursor ├─IErrorInfo │ └─IMMErrorInfo ├─IEvent │ ├─IMMCuePointEvent │ ├─IMMDeviceEvent │ ├─IMMNotifyEvent │ ├─IMMPassDeviceEvent │ └─IMMPositionChangeEvent ├─IHandler │ ├─ICommandHandler │ │ └─IMMPlayerPanelHandler │ └─IMMDeviceHandler │ └─IMMRemovableMediaHandler ├─IMMAudioCDContents ├─IMMSpeed ├─IMMTime │ ├─IMMHourMinSecFrameTime │ │ ├─IMM24FramesPerSecondTime │ │ ├─IMM25FramesPerSecondTime │ │ └─IMM30FramesPerSecondTime │ ├─IMMHourMinSecTime │ ├─IMMMillisecondTime │ ├─IMMMinSecFrameTime │ └─IMMTrackMinSecFrameTime └─INotifier ├─IStandardNotifier │ ├─IMMDevice │ │ ├─IMMAmpMixer │ │ └─IMMPlayableDevice │ │ ├─IMMFileMedia │ │ │ ├─IMMRecordable │ │ │ │ └─IMMConfigurableAudio │ │ │ │ ├─IMMDigitalVideo │ │ │ │ └─IMMWaveAudio │ │ │ └─IMMSequencer │ │ └─IMMRemovableMedia │ │ ├─IMMAudioCD │ │ └─IMMCDXA │ └─IMMMasterAudio └─IWindow └─IControl └─ICanvas └─IMultiCellCanvas └─IMMPlayerPanel ═══ 1.2. IMM24FramesPerSecondTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMM24FramesPerSecondTime ═══ IBase │ IVBase │ IMMTime │ IMMHourMinSecFrameTime │ IMM24FramesPerSecondTime Inherited by none. ═══ Class Description - IMM24FramesPerSecondTime ═══ immtime.hpp The IMM24FramesPerSecondTime data type class represents the frame-numbering system that assigns a number to each frame of video. This system was developed by the Society of Motion Picture and Television Engineers. The 8-digit code is in the form HH:MM:SS.FF (hours, minutes, seconds, frame number). The numbers track elapsed hours, minutes, seconds, and frames from any chosen point. This time format is based on 24 frames per second. ═══ Public Functions - IMM24FramesPerSecondTime ═══ Constructors IMM24FramesPerSecondTime ~IMM24FramesPerSecondTime Conversions operator unsigned long Inherited Members IMMHourMinSecFrameTime asString frames framesPerSecond hours minutes operator unsigned long ordinal seconds setTimeToOrdinal IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMM24FramesPerSecondTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMM24FramesPerSecondTime - Conversions ═══ Use these members to cast the time to an unsigned long. ═══ Protected Functions - IMM24FramesPerSecondTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMM24FramesPerSecondTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMM24FramesPerSecondTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.2.1. IMM24FramesPerSecondTime::IMM24FramesPerSecondTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMM24FramesPerSecondTime( const IMM24FramesPerSecondTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMM24FramesPerSecondTime(unsigned long value = defaultTime); You can construct an IMM24FramesPerSecondTime from the following parameter variable: value A time value where: 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.2.2. IMM24FramesPerSecondTime::operator unsigned long ═══ Returns the time as a unsigned long in the following format (FFSSMMHH): 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.2.3. IMM24FramesPerSecondTime::~IMM24FramesPerSecondTime ═══ public: virtual ~IMM24FramesPerSecondTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.3. IMM25FramesPerSecondTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMM25FramesPerSecondTime ═══ IBase │ IVBase │ IMMTime │ IMMHourMinSecFrameTime │ IMM25FramesPerSecondTime Inherited by none. ═══ Class Description - IMM25FramesPerSecondTime ═══ immtime.hpp IMM25FramesPerSecondTime data type class represents the frame-numbering system that assigns a number to each frame of video. This system was developed by the Society of Motion Picture and Television Engineers. The 8-digit code is in the form HH:MM:SS.FF (hours, minutes, seconds, frame number). The numbers track elapsed hours, minutes, seconds, and frames from any chosen point. This time format is based on 25 frames per second. ═══ Public Functions - IMM25FramesPerSecondTime ═══ Constructors IMM25FramesPerSecondTime ~IMM25FramesPerSecondTime Conversions operator unsigned long Inherited Members IMMHourMinSecFrameTime asString frames framesPerSecond hours minutes operator unsigned long ordinal seconds setTimeToOrdinal IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMM25FramesPerSecondTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMM25FramesPerSecondTime - Conversions ═══ Use these members to cast the time to an unsigned long. ═══ Protected Functions - IMM25FramesPerSecondTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMM25FramesPerSecondTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMM25FramesPerSecondTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.3.1. IMM25FramesPerSecondTime::IMM25FramesPerSecondTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMM25FramesPerSecondTime( const IMM25FramesPerSecondTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMM25FramesPerSecondTime(unsigned long value = defaultTime); You can construct an IMM25FramesPerSecondTime from the following parameter variable: value A time value where: 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.3.2. IMM25FramesPerSecondTime::operator unsigned long ═══ Returns the time as a unsigned long in the following format (FFSSMMHH): 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.3.3. IMM25FramesPerSecondTime::~IMM25FramesPerSecondTime ═══ public: virtual ~IMM25FramesPerSecondTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.4. IMM30FramesPerSecondTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMM30FramesPerSecondTime ═══ IBase │ IVBase │ IMMTime │ IMMHourMinSecFrameTime │ IMM30FramesPerSecondTime Inherited by none. ═══ Class Description - IMM30FramesPerSecondTime ═══ immtime.hpp The IMM30FramesPerSecondTime data type class represents the frame-numbering system that assigns a number to each frame of video. This system was developed by the Society of Motion Picture and Television Engineers. The 8-digit code is in the form HH:MM:SS.FF (hours, minutes, seconds, frame number). The numbers track elapsed hours, minutes, seconds, and frames from any chosen point. This time format is based on 30 frames per second. ═══ Public Functions - IMM30FramesPerSecondTime ═══ Constructors IMM30FramesPerSecondTime ~IMM30FramesPerSecondTime Conversions operator unsigned long Inherited Members IMMHourMinSecFrameTime asString frames framesPerSecond hours minutes operator unsigned long ordinal seconds setTimeToOrdinal IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMM30FramesPerSecondTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMM30FramesPerSecondTime - Conversions ═══ Use these members to cast the time to an unsigned long. ═══ Protected Functions - IMM30FramesPerSecondTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMM30FramesPerSecondTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMM30FramesPerSecondTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.4.1. IMM30FramesPerSecondTime::IMM30FramesPerSecondTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMM30FramesPerSecondTime( const IMM30FramesPerSecondTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMM30FramesPerSecondTime(unsigned long value = defaultTime); You can construct an IMM30FramesPerSecondTime from the following parameter variable: value A time value where: 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.4.2. IMM30FramesPerSecondTime::operator unsigned long ═══ Returns the time as a unsigned long in the following format (FFSSMMHH): 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.4.3. IMM30FramesPerSecondTime::~IMM30FramesPerSecondTime ═══ public: virtual ~IMM30FramesPerSecondTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.5. IMMAmpMixer ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMAmpMixer ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMAmpMixer Inherited by none. ═══ Class Description - IMMAmpMixer ═══ immamix.hpp The IMMAmpMixer class provides input or output switching and sound-shaping services, such as volume, treble, gain, or bass control. The amplifier-mixer is similar to a home stereo amplifier and mixer. Devices are connected to the IMMAmpMixer so that audio signals can be transferred to speakers or another device. ═══ Public Functions - IMMAmpMixer ═══ Constructors IMMAmpMixer ~IMMAmpMixer Mixer Attributes balance bass gain pitch setBalance setBass setGain setPitch setTreble treble Monitoring disableMonitoring enableMonitoring isMonitoringEnabled Inherited Members IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMAmpMixer - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMAmpMixer - Implementation ═══ These members check if the passed in string is in the correct format to open the current device. ═══ IMMAmpMixer - Mixer Attributes ═══ Use these members to query and set the different amplifier-mixer attributes. ═══ IMMAmpMixer - Monitoring ═══ Use these members to either allow or not allow the signal from an input device to be heard when it is being routed to another device. The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded. The main use of monitoring is for recording and mixing more than one audio source. The amplifier-mixer device supports one audio connection and the ability to monitor a second audio source. ═══ Protected Functions - IMMAmpMixer ═══ Implementation isOpenStringValid Inherited Members IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMAmpMixer ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMAmpMixer ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.5.1. IMMAmpMixer::balance ═══ Returns the balance, where 0 is defined as full left balance and 100 is defined as full right balance. public: unsigned long balance(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.2. IMMAmpMixer::bass ═══ Returns the bass, where 0% is the least amount of bass and 100% is the most amount of bass. public: unsigned long bass(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.3. IMMAmpMixer::disableMonitoring ═══ Does not allow the signal from an input device to be heard as it is being routed to another device. The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded. The main use of monitoring is for recording and mixing more than one audio source. The amplifier-mixer device supports one audio connection and the ability to monitor a second audio source. public: virtual IMMAmpMixer& disableMonitoring( CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.5.4. IMMAmpMixer::enableMonitoring ═══ Allows the signal from an input device to be heard as it is being routed to another device. The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded. The main use of monitoring is for recording and mixing more than one audio source. The amplifier-mixer device supports one audio connection and the ability to monitor a second audio source. public: virtual IMMAmpMixer& enableMonitoring( Boolean enable = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mmstereo.cpp ═══ 1.5.5. IMMAmpMixer::gain ═══ Returns the gain, where 0% is the least amount of gain and 100% is the most amount of gain.. public: unsigned long gain(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.6. IMMAmpMixer::IMMAmpMixer ═══ You can construct and destruct objects of this class. Overload 1 public: IMMAmpMixer( Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); You can construct an IMMAmpMixer from the following: openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance Specifes your own instance number instead of one being generated for you. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMAmpMixer( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMAmpMixer from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mmstereo.cpp ═══ 1.5.7. IMMAmpMixer::isMonitoringEnabled ═══ Returns true if the monitor is turned on. The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded. public: Boolean isMonitoringEnabled(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.5.8. IMMAmpMixer::isOpenStringValid ═══ Returns true if the passed in open string is valid for this device. protected: virtual Boolean isOpenStringValid( const IString& deviceName) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.5.9. IMMAmpMixer::pitch ═══ Returns the pitch, where 0 is the lowest pitch and 100 the highest pitch. public: unsigned long pitch(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.10. IMMAmpMixer::setBalance ═══ Sets the balance, where 0 is defined as full left balance and 100 is defined as full right balance. public: virtual IMMAmpMixer& setBalance( unsigned long balance, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.11. IMMAmpMixer::setBass ═══ Sets the bass, where 0% is the least amount of bass and 100% is the most amount of bass. public: virtual IMMAmpMixer& setBass( unsigned long bass, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.12. IMMAmpMixer::setGain ═══ Sets the gain, where 0% is the least amount of gain and 100% is the most amount of gain. public: virtual IMMAmpMixer& setGain( unsigned long gain, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.13. IMMAmpMixer::setPitch ═══ Sets the pitch, where 0 is lowest pitch and 100 is the highest pitch. public: virtual IMMAmpMixer& setPitch( unsigned long pitch, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.14. IMMAmpMixer::setTreble ═══ Sets the treble, where 0 is the least amount of treble and 100 is the most amount of treble. public: virtual IMMAmpMixer& setTreble( unsigned long treble, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.15. IMMAmpMixer::treble ═══ Returns the treble, where 0 is the least amount of treble and 100 is the most amount of treble. public: unsigned long treble(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.5.16. IMMAmpMixer::~IMMAmpMixer ═══ public: virtual ~IMMAmpMixer(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6. IMMAudioBuffer ═══ Description Derivation Constructors Public Functions Public Data Protected Data Nested Types Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMAudioBuffer ═══ IBase │ IMMAudioBuffer Inherited by none. ═══ Class Description - IMMAudioBuffer ═══ immabuf.hpp The IMMAudioBuffer class provides a buffering mechanism that allows device classes to operate on a buffer as if it were a file. It is recommended that you set up the type and format of audio data that is to be recorded or playing. Using buffers improves the performance of multimedia applications that perform numerous file input and output operations when accessing media devices. You might want to use a buffer for applications that perform many input and output operations that are less than 4KB each. However, if your operations are larger than 4KB, then you might not want to use a buffer. In this situation, you will see little to no performance gain. You might have performance degregation, since it will have to copy data in big blocks at a time. ═══ Public Functions - IMMAudioBuffer ═══ Audio Attributes bitsPerSample blockAlignment bytesPerSecond channels samplesPerSecond setBitsPerSample setBlockAlignment setBytesPerSecond setChannels setSamplesPerSecond Buffer Management data headerData length setData Constructors IMMAudioBuffer operator = ~IMMAudioBuffer Content Type contentType setContentType Format format setFormat Media Type mediaType setMediaType Inherited Members IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMAudioBuffer - Audio Attributes ═══ Use these members to query and set the audio attributes for the audio buffer. ═══ IMMAudioBuffer - Buffer Management ═══ Use these members to query and set the buffer data and to query the length of the buffer. ═══ IMMAudioBuffer - Constructors ═══ You can construct, copy, and destruct objects of this class. ═══ IMMAudioBuffer - Content Type ═══ Use these members to set and query the quality of the audio content. ═══ IMMAudioBuffer - Format ═══ Use these members to set and query the format of the audio data. ═══ IMMAudioBuffer - Media Type ═══ Use these members to query and set the type of media in the buffer. ═══ Public Data - IMMAudioBuffer ═══ Media Type audio ═══ Protected Data - IMMAudioBuffer ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.6.1. IMMAudioBuffer::audio ═══ Represents audio data. public: static const unsigned long audio; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.2. IMMAudioBuffer::bitsPerSample ═══ Returns the number of bits-per-sample. This is the number of bits of data used to represent each sample of each channel. The standard values are 4, 8, and 16. public: unsigned long bitsPerSample() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.3. IMMAudioBuffer::blockAlignment ═══ Returns the block alignment of data in bytes. The system processes a multiple of block aligned bytes of data at a time. For example, if you have a 24-byte buffer, then you can only set a block alignment of 2, 3, 4, 6, 8, or 12. public: unsigned long blockAlignment() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.4. IMMAudioBuffer::bytesPerSecond ═══ Returns the average number of bytes-per-second played or recorded. This is the rate the data is transferred to the hardware. public: unsigned long bytesPerSecond() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.5. IMMAudioBuffer::channels ═══ Returns the number of audio channels set. For example, mono is 1; stereo is 2. public: unsigned long channels() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.6. IMMAudioBuffer::contentType ═══ Returns the audio content type. public: ContentType contentType() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.7. IMMAudioBuffer::data ═══ Returns an IString that contains a copy of the data in the audio buffer. public: IString data() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.8. IMMAudioBuffer::format ═══ Returns the interpretation of the audio format. This is what format the audio data is in. public: Format format() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.9. IMMAudioBuffer::headerData ═══ Returns an IString that contains the operating system specific header information. public: IString headerData() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.10. IMMAudioBuffer::IMMAudioBuffer ═══ You can construct, copy, and destruct objects of this class. Overload 1 public: IMMAudioBuffer(unsigned long dataLength = 0); You can construct an IMMAudioBuffer from the following: dataLength The size of the audio buffer to be created. It is initalized with all 0's. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMAudioBuffer(void* audioData, unsigned long dataLength); You can construct an IMMAudioBuffer from: audioData The audio buffer is initialized with the data from the passed in buffer. dataLength The length of the passed in buffer, which is the size of the audio buffer. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 public: IMMAudioBuffer(const IMMAudioBuffer& audioBuffer); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.11. IMMAudioBuffer::length ═══ Returns the size of the buffer. public: unsigned long length() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.12. IMMAudioBuffer::mediaType ═══ Returns the type of multimedia data in the buffer. public: unsigned long mediaType() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.13. IMMAudioBuffer::operator = ═══ Copies the audio buffer information from the passed in audio buffer. public: IMMAudioBuffer& operator =( const IMMAudioBuffer& audioBuffer); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.14. IMMAudioBuffer::samplesPerSecond ═══ Returns the number of samples-per-second played or recorded. This is the sampling rate, in kilohertz, which each channel should use. Standard values are 11025, 22050, and 44100. public: unsigned long samplesPerSecond() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.15. IMMAudioBuffer::setBitsPerSample ═══ Sets the bits-per-sample to be played or recorded. This is the number of bits of data used to represent each sample of each channel. The standard values are 4, 8, and 16. public: IMMAudioBuffer& setBitsPerSample( unsigned long bitsPerSample); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.16. IMMAudioBuffer::setBlockAlignment ═══ Sets the block alignment of the data. The system processes a multiple of block aligned bytes of data at a time. For example, if you have a 24-byte buffer, then you can only set a block alignment of 2, 3, 4, 6, 8, or 12. public: IMMAudioBuffer& setBlockAlignment(unsigned long alignment); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.17. IMMAudioBuffer::setBytesPerSecond ═══ Sets the average bytes per second to be played or recorded. This is the rate the data is transferred to the hardware. public: IMMAudioBuffer& setBytesPerSecond( unsigned long averageBytes); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.18. IMMAudioBuffer::setChannels ═══ Sets the number of audio channels for playing and recording. Monaural is 1; stereo is 2. public: IMMAudioBuffer& setChannels(unsigned long channels); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.19. IMMAudioBuffer::setContentType ═══ Sets the audio content type. public: IMMAudioBuffer& setContentType(ContentType contentType); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.20. IMMAudioBuffer::setData ═══ Sets the contains and size of the audio buffer to that of the passed in buffer. public: IMMAudioBuffer& setData( const void* data, unsigned long dataLength); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.21. IMMAudioBuffer::setFormat ═══ Sets the audio format to be used. This determines what format the audio data is in. public: IMMAudioBuffer& setFormat(Format tag = pcm); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.22. IMMAudioBuffer::setMediaType ═══ Sets the type of multimedia data in the buffer. public: IMMAudioBuffer& setMediaType(unsigned long media = audio); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.23. IMMAudioBuffer::setSamplesPerSecond ═══ Sets the samples rate for playing and recording. This is the sampling rate, in kilohertz, which each channel should use. Standard values are 11025, 22050, and 44100. public: IMMAudioBuffer& setSamplesPerSecond( unsigned long samplesPerSecond); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.6.24. IMMAudioBuffer::~IMMAudioBuffer ═══ public: ~IMMAudioBuffer(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ Nested Types - IMMAudioBuffer ═══ Enumerations ContentType Format ═══ Enums - ContentType ═══ enum ContentType { Unknown, Voice, Music, HiFi=0x0004 }; Use this enumeration for determining the quality of the audio content. Valid values are the following: unknown Represents unknown audio quality. voice Represents voice (limited range) quality. music Represents FM radio or equivalent quality. hifi Represents high quality. ═══ Enums - Format ═══ enum Format { pcm=0x0001, adpcm, ibmcvsd=0x0005, alaw, mulaw, okiadpcm=0x0010, dviadpcm, digistd=0x0015, digifix, ibmmulaw=0x0101, ibmalaw, avcadpcm, ctadpcm=0x0200 }; Use this enumeration for determining how audio information is stored and interpreted. The pcm format is the most commonly used format. Valid values are the following: pcm Represents pulse code modulation. This refers to a variation of a digital signal to represent audio amplitude. This method of assigning binary values to amplitude levels supports the conversion of analog signals to digital signals by sound cards. adpcm Represents adaptive differential pulse code modulation. This is a technique for compressing waveform samples. It can reduce the amount of data storage required by a factor of 16 to 1, but some price is paid in fidelity for the higher compression rates. ibmcvsd Represents the IBM Speech Viewer format. alaw Represents the CCITT A-Law format. mulaw Represents the CCITT MuLaw format. okiadpcm Represents the OKI adaptive pulse code modulation format. dviadpcm Represents the DVI adaptive pulse code modulation format. digistd Represents the IBM Digispeech standard format. digifix Represents the IBM Digispeech fixed format. ibmmulaw Represents the IBM MuLaw format. ibmalaw Represents the IBM A-Law format. avcadpcm Represents IBM AVC adaptive differential pulse code modulation format. ctadpcm Represents the Creative Labs adaptive differential pulse code modulation format. ═══ 1.7. IMMAudioCD ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMAudioCD ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMRemovableMedia │ IMMAudioCD Inherited by none. ═══ Class Description - IMMAudioCD ═══ immcdda.hpp The IMMAudioCD class is the audio compact disc (CD) class and provides behavior for CD audio players. Most people are familiar with a home or car CD player. So, just like a normal CD player, there are functions for play, pause, stop, trackForward, trackBackward, scanning, and so on. Plus, there are some additional features, for example, rearranging the playback order for tracks and storing track and disc titles. ═══ Public Functions - IMMAudioCD ═══ Compact Disc Information disableAutoPlay disableContinuousPlay discId discTitle enableAutoPlay enableContinuousPlay isAutoPlayEnabled isContinuousPlayEnabled numberOfTracks setDiscTitle setTrackTitle trackTitle upc Constructors IMMAudioCD ~IMMAudioCD Play, Stop, and Scan goToEntry pause play resume startScanningBackward startScanningForward stop trackBackward trackForward Profile and Program contents profile setProfile setProgram Inherited Members IMMRemovableMedia closeDoor isMediaPresent lockDoor openDoor unlockDoor IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMAudioCD - Compact Disc Information ═══ Use these members to query of information and states for the CD audio device and the loaded compact disc. For example, you can query and set autoPlay and continuousPlay, and you can query the number of tracks, the disc title, the disc identifier, and the universal product code(upc). ═══ IMMAudioCD - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMAudioCD - Implementation ═══ These members are overridden to provide additional processing. ═══ IMMAudioCD - Notification Event Descriptions ═══ These INotificationId strings are used for all notifications that IMMAudioCD provides to its observers. ═══ IMMAudioCD - Play, Stop, and Scan ═══ Use these members to stop playing or scanning, start scanning or playing, resume or pause the playback, or move the current position to a new location. ═══ IMMAudioCD - Profile and Program ═══ Use these members to change and query the profile and program. ═══ IMMAudioCD - Table ═══ Use these members to query the hard-coded table of contents stored on the compact disc. ═══ Protected Functions - IMMAudioCD ═══ Constructors IMMAudioCD Implementation isOpenStringValid uniqueDiscIdentifier Table getTableFromDisc Inherited Members IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMAudioCD ═══ Compact Disc Information discProgramKey discTitleKey Notification Event Descriptions positionTimerId trackStartedId Inherited Members IMMRemovableMedia mediaLoadedId IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMAudioCD ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.7.1. IMMAudioCD::contents ═══ Returns a copy of the CD's table of contents. public: IMMAudioCDContents contents() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.2. IMMAudioCD::disableAutoPlay ═══ Sets autoplay off. Autoplay causes the CD audio device to start playing whenever a CD is loaded. public: IMMAudioCD& disableAutoPlay(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.3. IMMAudioCD::disableContinuousPlay ═══ Sets continuous play off. If the continuous play is set, then the current track is repeated continuously on playback. public: IMMAudioCD& disableContinuousPlay(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.4. IMMAudioCD::discId ═══ Returns the identifier of the current disc. If there is no identifier on the CD then it returns a null IString. public: IString discId(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.5. IMMAudioCD::discProgramKey ═══ This is set to the text string "IMMAudioCDProgramTitle". This string is used as a key to query and retrieve information from a profile. public: static const IString discProgramKey; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.6. IMMAudioCD::discTitle ═══ Returns the disc title. A null IString is returned if you have not set a title. public: IString discTitle() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be media present in the │ │ │device. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.7. IMMAudioCD::discTitleKey ═══ This is set to the text string "IMMAudioCDDiscTitle". This string is used as a key to query and retrieve information from a profile. public: static const IString discTitleKey; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.8. IMMAudioCD::enableAutoPlay ═══ Turns autoplay on or off. Autoplay causes the audio CD device to start playing whenever a CD is loaded. public: IMMAudioCD& enableAutoPlay(Boolean autoPlay = true); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.9. IMMAudioCD::enableContinuousPlay ═══ Turns continuous play on or off. If the continuous play is set, then the current track is repeated continuously on playback. public: IMMAudioCD& enableContinuousPlay( Boolean continuousPlay = true); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.10. IMMAudioCD::getTableFromDisc ═══ Generates a table of contents based on the hard-coded values stored on the compact disc. The only data stored on the compact disc are the tracks and their lengths. protected: IMMAudioCDContents getTableFromDisc(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.11. IMMAudioCD::goToEntry ═══ Moves the current position to the passed in location. This location is a track number and the time into the track. Overload 1 public: virtual IMMAudioCD& goToEntry( IMMAudioCDContents::Cursor cursor); It retrieves this information out of the currently set program at the passed in cursor. If you passed in a cursor that points to index 3, it looks up the track number in the current program at that location. If you have not set your own program then the default program is used. This program is a straight mapping of the tracks, for example, at index 3, track number 3 is stored. You can set your own program. For example, you could have the following: at index 1, track 5; at index 2, track 4; and at index 3, track 6. If you passed in a cursor that points to index 3, this function moves the current position to track number 6. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Overload 2 public: virtual IMMAudioCD& goToEntry(unsigned long index); It retrieves this information out of the currently set program at the passed in index. If you passed in 3, it looks up the track number in the current program at that location. If you have not set your own program then the default program is used. This program is a straight mapping of the tracks, for example, at index 3, track number 3 is stored. You can set your own program. For example, you could have the following: at index 1, track 5; at index 2, track 4; and at index 3, track 6. If you passed in index 3, this function moves the current position to track number 6. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.7.12. IMMAudioCD::IMMAudioCD ═══ You can construct and destruct objects of this class. Overload 1 public: IMMAudioCD( IProfile* profile = 0, Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); You can construct an IMMAudioCD from the following: profile You can provide your own profile where information can be retrieved and stored from. Some of the information stored in a profile is disc titles and the IMMAudioCDContents for different CDs. If you pass in 0, then the device uses the system profile for storing and retrieving information. openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mmstereo.cpp Overload 2 protected: IMMAudioCD( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMAudioCD from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.13. IMMAudioCD::isAutoPlayEnabled ═══ Returns true, if autoplay is turned on. Autoplay causes the audio CD device to start playing whenever a CD is loaded. public: Boolean isAutoPlayEnabled() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.14. IMMAudioCD::isContinuousPlayEnabled ═══ Returns true, if continuous play is turned on. If the continuous play is set, then the current track is repeated continuously on playback. public: Boolean isContinuousPlayEnabled() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.15. IMMAudioCD::isOpenStringValid ═══ Returns true if the passed in open string is valid for this device. protected: virtual Boolean isOpenStringValid( const IString& deviceName) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.16. IMMAudioCD::numberOfTracks ═══ Returns the number of tracks. public: unsigned long numberOfTracks(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.7.17. IMMAudioCD::pause ═══ Pauses the audio CD device, if the audio CD device is playing. public: virtual IMMAudioCD& pause(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.18. IMMAudioCD::play ═══ Starts playing the CD device from the passed in start position to the passed in end position. If from is omitted, the CD device starts playing at the current position; if to is omitted, play stops at the end of the disc. If the resumeIfPaused Boolean is true and the CD player is paused, it resumes playing at the current location; otherwise, it starts playing at the passed in from location. public: virtual IMMAudioCD& play( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), Boolean resumeIfPaused = true, CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the contents of│ │ │the CD. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.19. IMMAudioCD::positionTimerId ═══ Notification identifier provided to observers as the position changes. IMMAudioCD provides a pointer to an IMMTrackMinSecFrameTime in the INotificationEvent::eventData field of the INotificationEvent. This value represents the current position of the CD. public: static const INotificationId positionTimerId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.20. IMMAudioCD::profile ═══ Returns the current profile. The profile contains one or more compact disc titles and their IMMAudioCDContents. This can be useful if you want to retain a table of contents for one or more compact discs. For example, you might have a demo CD that you want to play the third track first, followed by the second, and so on. You would not want to have to rearrange the tracks every time you loaded that CD. By storing the information in a profile, the IMMAudioCD class can load that disc's information from the profile so you do not have to reenter anything. public: IProfile profile() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.21. IMMAudioCD::resume ═══ Resumes playback of the compact disc from a paused state. The previous specified to parameter in the play function remains in effect. public: virtual IMMAudioCD& resume( Boolean resume = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.22. IMMAudioCD::setDiscTitle ═══ Sets the disc's title. The disc title is stored in the currently set profile. See setProfile for more information on profiles. public: IMMAudioCD& setDiscTitle(const IString& title); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be media present in the │ │ │device. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.23. IMMAudioCD::setProfile ═══ Sets a new profile. The profile contains one or more compact disc titles and their IMMAudioCDContents. This can be useful if you want to retain a table of contents for one or more compact discs. For example, you might have a demo CD that you want to play the third track first, followed by the second, and so on. You would not want to have to rearrange the tracks every time you loaded that CD. By storing the information in a profile, the IMMAudioCD class can load that disc's information from the profile so you do not have to reenter anything. public: IMMAudioCD& setProfile(IProfile& profile); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.24. IMMAudioCD::setProgram ═══ Sets a new table of contents. The table of contents is stored in the currently set profile. The IMMAudioCD class plays and scans the compact disc according to the current table of contents. This allows you create your own table of contents for the current disc. For instance, you might want to store your compact discs (title and table of contents) in a database. Then, when you insert a CD, you could query its ID and see if it is in your database. If so, then you could retrieve your table of contents and set it into the device so that it always plays back the same way. public: IMMAudioCD& setProgram(const IMMAudioCDContents& program); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.25. IMMAudioCD::setTrackTitle ═══ Sets the track's title. The track title is stored in the currently set profile. See setProfile for more information on profiles. public: IMMAudioCD& setTrackTitle( const IString& title, unsigned long track); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.26. IMMAudioCD::startScanningBackward ═══ Causes the audio CD device to search backward at high speed. If the device is currently scanning backward, this function has no effect, but, if the device is currently scanning forward, this causes the scanning to stop and to start scanning backward. You can stop the scanning by calling the stop function, or, if the CD was playing when scanning started, the play function stops the scanning and resumes playback at the new location. The scanning wraps to the end when it reaches the beginning of the compact disc. public: IMMAudioCD& startScanningBackward(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.27. IMMAudioCD::startScanningForward ═══ Causes the audio CD device to search forward at high speed. If the device is currently scanning forward, this function has no effect, but, if the device is currently scanning backward, this causes the scanning to stop and to start scanning forward. You can stop the scanning by calling the stop function, or, if the CD was playing when scanning started, the play function stops the scanning and resumes playback at the new location. The scanning wraps to the beginning when it reaches the end of the compact disc. public: IMMAudioCD& startScanningForward(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.28. IMMAudioCD::stop ═══ Stops playback and backward or forward scanning of the compact disc. public: virtual IMMAudioCD& stop(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.29. IMMAudioCD::trackBackward ═══ Moves the current position backwards the passed in number of tracks. If the device was playing, it starts playing at the new position. public: IMMAudioCD& trackBackward(unsigned long decrement = 1); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.30. IMMAudioCD::trackForward ═══ Move the current position forwards the passed in number of tracks. If the device was playing, it starts playing at the new position. public: IMMAudioCD& trackForward(unsigned long increment = 1); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.31. IMMAudioCD::trackStartedId ═══ Notification identifier provided to observers when the a new track is started. IMMAudioCD provides a pointer to an IMMTrackMinSecFrameTime in the eventData field of the INotificationEvent. This value represents the current position of the CD. public: static const INotificationId trackStartedId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.7.32. IMMAudioCD::trackTitle ═══ Returns the track title. A null IString is returned if you have not set a title for the passed in track. public: IString trackTitle(unsigned long track) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.7.33. IMMAudioCD::uniqueDiscIdentifier ═══ Returns the unique disc identifier. This value is the name of this class plus the identifier of the disc. This can be useful to use in addition to the upc, because not all manufacturers put upc on their CDs. protected: virtual IString uniqueDiscIdentifier() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.34. IMMAudioCD::upc ═══ Returns the disc's universal product code (serial number). If the disc does not contain a upc, then a null IString is returned. public: IString upc(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There must be media present in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.7.35. IMMAudioCD::~IMMAudioCD ═══ public: virtual ~IMMAudioCD(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8. IMMAudioCDContents ═══ Description Derivation Constructors Public Functions Protected Functions Protected Data Nested Types To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMAudioCDContents ═══ IBase │ IVBase │ IMMAudioCDContents Inherited by none. ═══ Class Description - IMMAudioCDContents ═══ immcdda.hpp The IMMAudioCDContents class is the class for an audio CD's table of contents. It allows you to keep a list of tracks. With this list you can rearrange the playback order of the tracks. For example, you could put track 5 at the first location, track 7 next, and then track 1. ═══ Public Functions - IMMAudioCDContents ═══ Constructors IMMAudioCDContents operator = ~IMMAudioCDContents Entry Information addEntryAsFirst addEntryAsNext numberOfEntries removeEntryAt replaceEntryAt Track Information controlInformation country discId endOfTrack isValid numberOfTracks owner serialNumber startOfTrack track Inherited Members IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMAudioCDContents - Constructors ═══ You can construct, copy and destruct objects of this class. ═══ IMMAudioCDContents - Entry Information ═══ Use these members to add, remove, and replace the track numbers in the table of contents. For example, you want to listen to all of the CD except track 2 and you want to listen to track 5 played twice. To do this, you create a cursor on the table of contents. Then, you move the cursor to track 2 and call the remove entry function. Next, you move the cursor to track 5 and call the add entry function with 5 for the track number. ═══ IMMAudioCDContents - Track Information ═══ Use these members to query information about the entry at the given cursor for this table of contents. ═══ Protected Functions - IMMAudioCDContents ═══ Constructors IMMAudioCDContents ═══ Protected Data - IMMAudioCDContents ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.8.1. IMMAudioCDContents::addEntryAsFirst ═══ Adds the track number to the beginning of the playback list. public: IMMAudioCDContents& addEntryAsFirst( unsigned long trackNumber); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.2. IMMAudioCDContents::addEntryAsNext ═══ Adds the track number after the cursor in the playback list. public: IMMAudioCDContents& addEntryAsNext( unsigned long trackNumber, const Cursor& cursor); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.3. IMMAudioCDContents::controlInformation ═══ Returns the track control information at the given cursor. This value cannot be set because it is set by the manufacturer of the CD. public: unsigned long controlInformation( const Cursor& cursor) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.4. IMMAudioCDContents::country ═══ Returns the country at the given cursor. This value cannot be set because it is set by the manufacturer of the CD. public: unsigned long country(const Cursor& cursor) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.5. IMMAudioCDContents::discId ═══ Returns the compact disc identifier. public: IString discId() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.6. IMMAudioCDContents::endOfTrack ═══ Returns the ending time (position) of the track. public: IMMTime endOfTrack(const Cursor& cursor) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.7. IMMAudioCDContents::IMMAudioCDContents ═══ Use this function to create an IMMAudioCDContents. Overload 1 public: IMMAudioCDContents(const IMMAudioCDContents& newToc); You cannot create your own table of contents without asking for one from the IMMAudioCD class. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMAudioCDContents( void* newContents, const IString& identifier, unsigned long tracks); This function takes the following parameters: newContents This is an pointer to a list of table of contents structures created by the operating system. identifier This is the unique disc identifier generated by IMMAudioCD. tracks This is the number of tracks to be in the playback list for the table of contents. The IMMAudioCDContents creates a default playback list for the tracks. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 protected: IMMAudioCDContents(); This creates an invalid table of contents. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.8. IMMAudioCDContents::isValid ═══ Returns true if the table of contents is valid. public: Boolean isValid() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.9. IMMAudioCDContents::numberOfEntries ═══ Returns the number of tracks in the playback list. public: unsigned long numberOfEntries() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.10. IMMAudioCDContents::numberOfTracks ═══ Returns the number of tracks. public: unsigned long numberOfTracks() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.11. IMMAudioCDContents::operator = ═══ Sets the contents to be the same as another table of contents. public: IMMAudioCDContents& operator =( const IMMAudioCDContents& newContents); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.12. IMMAudioCDContents::owner ═══ Returns the owner of the track at the given cursor. This value cannot be set because it is set by the manufacturer of the CD. public: unsigned long owner(const Cursor& cursor) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.13. IMMAudioCDContents::removeEntryAt ═══ Removes the track number at the cursor from the playback list. public: IMMAudioCDContents& removeEntryAt(const Cursor& cursor); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.14. IMMAudioCDContents::replaceEntryAt ═══ Replaces the track number at the cursor. public: IMMAudioCDContents& replaceEntryAt( unsigned long newTrackNumber, const Cursor& cursor); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidParameter │The new track number can not be less │ │ │than 1 or greater than the number of │ │ │tracks. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidParameter │The passed in cursor or this object is │ │ │not valid. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │An internal processing error occurred │ │ │with the stored list of tracks. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.8.15. IMMAudioCDContents::serialNumber ═══ Returns the serial number of the track at the given cursor. This value cannot be set because it is set by the manufacturer of the CD. public: unsigned long serialNumber(const Cursor& cursor) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.16. IMMAudioCDContents::startOfTrack ═══ Returns the starting time (position) of the track. public: IMMTime startOfTrack(const Cursor& cursor) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.17. IMMAudioCDContents::track ═══ Returns the track number at the given cursor. public: unsigned long track(const Cursor& cursor) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.8.18. IMMAudioCDContents::~IMMAudioCDContents ═══ public: virtual ~IMMAudioCDContents(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ Nested Types - IMMAudioCDContents ═══ Classes IMMAudioCDContents::Cursor ═══ 1.9. IMMAudioCDContents::Cursor ═══ Description Derivation Constructors Public Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMAudioCDContents::Cursor ═══ IBase │ IVBase │ IMMAudioCDContents::Cursor Inherited by none. ═══ Class Description - IMMAudioCDContents::Cursor ═══ immcdda.hpp The IMMAudioCDContents::Cursor class creates and manages the cursor support of the table of contents. You can use a cursor to traverse through the list of tracks. ═══ Public Functions - IMMAudioCDContents::Cursor ═══ Constructors Cursor operator = ~Cursor Cursor Validation and Cursor Movement asIndex invalidate isValid operator ++ operator -- setToFirst setToIndex setToLast setToNext setToPrevious Inherited Members IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMAudioCDContents::Cursor - Constructors ═══ You can construct, copy and destruct objects of this class. ═══ IMMAudioCDContents::Cursor - Cursor Validation and Cursor Movement ═══ Use these members to change the cursor position in the list and to check the validity of the current position. ═══ Protected Data - IMMAudioCDContents::Cursor ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.9.1. IMMAudioCDContents::Cursor::asIndex ═══ Returns the current index. public: unsigned long asIndex() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.2. IMMAudioCDContents::Cursor::Cursor ═══ Use this function to create a IMMAudioCDContents::Cursor. Overload 1 public: Cursor(const Cursor& cursor); This function is the copy constructor. It takes another cursor and sets this cursor to be the same as the passed in cursor. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: Cursor(); This function creates an invalid cursor object. You have to set this cursor object equal to a valid cursor in order to use it. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 public: Cursor(const IMMAudioCDContents& contents); This function creates a cursor on the passed in table of contents. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.3. IMMAudioCDContents::Cursor::invalidate ═══ Flags this cursor as invalid. public: virtual Cursor& invalidate(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.4. IMMAudioCDContents::Cursor::isValid ═══ Returns true if the cursor is valid. public: Boolean isValid() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.5. IMMAudioCDContents::Cursor::operator ++ ═══ Points to the next item in the table of contents. If no more items exist, this invalidates the cursor. public: virtual Cursor& operator ++(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.6. IMMAudioCDContents::Cursor::operator -- ═══ Points to the previous item in the table of contents. If no previous items exist, this invalidates the cursor. public: virtual Cursor& operator --(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.7. IMMAudioCDContents::Cursor::operator = ═══ Sets this cursor to be the same as the passed in cursor. public: Cursor& operator =(const Cursor& newCursor); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.8. IMMAudioCDContents::Cursor::setToFirst ═══ Points to the table of contents item and validates the cursor. public: virtual Cursor& setToFirst(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.9. IMMAudioCDContents::Cursor::setToIndex ═══ Points to the item with the given 0-based index and validates the cursor. public: virtual Cursor& setToIndex(unsigned long toIndex); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.10. IMMAudioCDContents::Cursor::setToLast ═══ Points to the last table of contents item and validates the cursor. public: virtual Cursor& setToLast(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.11. IMMAudioCDContents::Cursor::setToNext ═══ Points to the next item in the table of contents. If no more items exist, this invalidates the cursor. public: virtual Cursor& setToNext(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.12. IMMAudioCDContents::Cursor::setToPrevious ═══ Points to the previous item in the table of contents. If no previous items exist, this invalidates the cursor. public: virtual Cursor& setToPrevious(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.9.13. IMMAudioCDContents::Cursor::~Cursor ═══ public: virtual ~Cursor(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.10. IMMCDXA ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMCDXA ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMRemovableMedia │ IMMCDXA Inherited by none. ═══ Class Description - IMMCDXA ═══ immcdxa.hpp The IMMCDXA class provides behavior for devices that support CD-ROM Extended Architecture(XA) discs. CD-XA refers to a storage format that accommodates interleaved storage of audio, video, and standard file data. ═══ Public Functions - IMMCDXA ═══ Constructors IMMCDXA ~IMMCDXA UPC upc Inherited Members IMMRemovableMedia closeDoor isMediaPresent lockDoor openDoor unlockDoor IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMCDXA - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMCDXA - Implementation ═══ These members check if the passed in string is in the correct format to open the current device. ═══ IMMCDXA - UPC ═══ Use these members to query the universal product code(upc) for the disc. ═══ Protected Functions - IMMCDXA ═══ Constructors IMMCDXA Implementation isOpenStringValid Inherited Members IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMCDXA ═══ Inherited Members IMMRemovableMedia mediaLoadedId IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMCDXA ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.10.1. IMMCDXA::IMMCDXA ═══ You can construct and destruct objects of this class. Overload 1 public: IMMCDXA( Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); You can construct an IMMCDXA from the following: openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMCDXA( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMCDXA from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.10.2. IMMCDXA::isOpenStringValid ═══ Returns true if the passed in open string is valid for this device. protected: virtual Boolean isOpenStringValid( const IString& deviceName) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.10.3. IMMCDXA::upc ═══ Returns the disc's universal product code (serial number). If the disc does not contain a upc, a null IString is returned. public: IString upc(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.10.4. IMMCDXA::~IMMCDXA ═══ public: virtual ~IMMCDXA(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.11. IMMConfigurableAudio ═══ Description Derivation Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMConfigurableAudio ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMFileMedia │ IMMRecordable │ IMMConfigurableAudio Inherited by: IMMDigitalVideo IMMWaveAudio ═══ Class Description - IMMConfigurableAudio ═══ immaud.hpp The IMMConfigurableAudio class is the base class for all devices that support audio. It provides functions for setting and querying the audio formats, speed, and audio channels. ═══ Public Functions - IMMConfigurableAudio ═══ Audio Attributes bitsPerSample blockAlignment bytesPerSecond channels format samplesPerSecond setBitsPerSample setBlockAlignment setBytesPerSecond setChannels setFormat setSamplesPerSecond Constructors ~IMMConfigurableAudio Inherited Members IMMRecordable canRedo canUndo copy cueForRecording cut deleteSelection paste record redo save saveAs undo IMMFileMedia filename isWriteable load loadOnThread IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMConfigurableAudio - Audio Attributes ═══ Use these members to query and set the audio attributes for the current device. ═══ IMMConfigurableAudio - Constructors ═══ Derived classes can use these members to create objects of this class. ═══ IMMConfigurableAudio - Hidden Functions ═══ We have hidden these functions to prevent you from using them. ═══ IMMConfigurableAudio - Implementation ═══ These members translate the audio command to device-specific values. ═══ Protected Functions - IMMConfigurableAudio ═══ Constructors IMMConfigurableAudio Implementation translateAudioFlag Inherited Members IMMFileMedia enableDataUpdate IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMConfigurableAudio ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMConfigurableAudio ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.11.1. IMMConfigurableAudio::bitsPerSample ═══ Returns the number of bits-per-sample. This is the number of bits of data used to represent each sample of each channel. The standard values are 4, 8, and 16. public: unsigned long bitsPerSample(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.2. IMMConfigurableAudio::blockAlignment ═══ Returns the block alignment of data in bytes. The system processes a multiple of block aligned bytes of data at a time. For example, if you have a 24-byte buffer, then you can only set a block alignment of 2, 3, 4, 6, 8, or 12. public: unsigned long blockAlignment(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.3. IMMConfigurableAudio::bytesPerSecond ═══ Returns the average number of bytes-per-second played or recorded. This is the rate the data is transferred to the hardware. public: unsigned long bytesPerSecond(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.4. IMMConfigurableAudio::channels ═══ Returns the number of audio channels set. For example, mono is 1; stereo is 2. public: unsigned long channels(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.5. IMMConfigurableAudio::format ═══ Returns the interpretation of the audio format. See IMMAudioBuffer::Format for more information. public: IMMAudioBuffer::Format format(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.6. IMMConfigurableAudio::IMMConfigurableAudio ═══ Derived classes can use these members to create objects of this class. Overload 1 protected: IMMConfigurableAudio( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMConfigurableAudio from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMConfigurableAudio( const IString& deviceName, Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); A derived class can construct an IMMConfigurableAudio from the following: deviceName You must specify what device you wish to construct. openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.11.7. IMMConfigurableAudio::samplesPerSecond ═══ Returns the number of samples-per-second played or recorded. This is the sampling rate, in kilohertz, which each channel should use. Standard values are 11025, 22050, and 44100. public: unsigned long samplesPerSecond(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.8. IMMConfigurableAudio::setBitsPerSample ═══ Sets the bits-per-sample to be played or recorded. This is the number of bits of data used to represent each sample of each channel. The standard values are 4, 8, and 16. You must set an audio format using setFormat before calling this function. The file is saved in this format. public: virtual IMMConfigurableAudio& setBitsPerSample( unsigned long bitsPerSample, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The value is out of range. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A audio format has not been set before │ │ │calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.9. IMMConfigurableAudio::setBlockAlignment ═══ Sets the block alignment of the data. The system processes a multiple of block aligned bytes of data at a time. For example, if you have a 24-byte buffer, then you can only set a block alignment of 2, 3, 4, 6, 8, or 12. You must set an audio format using setFormat before calling this function. The file is saved in this format. public: virtual IMMConfigurableAudio& setBlockAlignment( unsigned long alignment, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The value is out of range. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A audio format has not been set before │ │ │calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.10. IMMConfigurableAudio::setBytesPerSecond ═══ Sets the average bytes per second to be played or recorded. This is the rate the data is transferred to the hardware. You must set an audio format using setFormat before calling this function. The file is saved in this format. public: virtual IMMConfigurableAudio& setBytesPerSecond( unsigned long averageBytes, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The value is out of range. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A audio format has not been set before │ │ │calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.11. IMMConfigurableAudio::setChannels ═══ Sets the number of audio channels for playing and recording. Monaural is 1; stereo is 2. You must set an audio format using setFormat before calling this function. The file is saved in this format. public: virtual IMMConfigurableAudio& setChannels( unsigned long channels, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The value is out of range. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A audio format has not been set before │ │ │calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.12. IMMConfigurableAudio::setFormat ═══ Sets the audio format for playing and recording. See IMMAudioBuffer::Format for more information. The file is saved in this format. public: virtual IMMConfigurableAudio& setFormat( IMMAudioBuffer::Format tag = IMMAudioBuffer::pcm, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The value is out of range. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.13. IMMConfigurableAudio::setSamplesPerSecond ═══ Sets the sampling rate for playing and recording. This is the sampling rate, in kilohertz, which each channel should use. Standard values are 11025, 22050, and 44100. You must set an audio format using setFormat before calling this function. The file is saved in this format. public: virtual IMMConfigurableAudio& setSamplesPerSecond( unsigned long samplesPerSecond, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The value is out of range. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A audio format has not been set before │ │ │calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.11.14. IMMConfigurableAudio::translateAudioFlag ═══ Allows subclasses to map the general audio commands to the device-specific values. For example, the digital video and the wave audio device both support setting the bytes-per-second, but the actual system values are different. By allowing the mapping of the wave audio values to the digital video values, the digital video player does not have to override all of the audio functions because they call this function. protected: virtual unsigned long translateAudioFlag( unsigned long) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.11.15. IMMConfigurableAudio::~IMMConfigurableAudio ═══ public: virtual ~IMMConfigurableAudio(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.12. IMMCuePointEvent ═══ Description Derivation Constructors Public Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMCuePointEvent ═══ IBase │ IVBase │ IEvent │ IMMCuePointEvent Inherited by none. ═══ Class Description - IMMCuePointEvent ═══ immevt.hpp The IMMCuePointEvent class is the class for cue point events. A cue point event gets generated whenever a device passes over one of its set cue points. ═══ Public Functions - IMMCuePointEvent ═══ Constructors IMMCuePointEvent ~IMMCuePointEvent Event Information device position userParameter Inherited Members IEvent controlHandle controlWindow dispatchingWindow eventId eventType handle operator = parameter1 parameter2 passToOwner result setControlHandle setDispatchingHandle setEventType setHandle setPassToOwner setResult window IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMCuePointEvent - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMCuePointEvent - Event Information ═══ Use these members to return the position, device and user parameter for the device that generated this event. ═══ Protected Data - IMMCuePointEvent ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.12.1. IMMCuePointEvent::device ═══ Returns a pointer to the device that played or recorded over a cue point. public: IMMDevice* device() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.12.2. IMMCuePointEvent::IMMCuePointEvent ═══ Although you can construct objects of this class, typically IMMDeviceHandler::dispatchHandlerEvent creates objects of this class from an object of the class IEventor another IMMCuePointEvent object. public: IMMCuePointEvent(const IEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.12.3. IMMCuePointEvent::position ═══ Returns the cue point position. public: IMMTime position() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.12.4. IMMCuePointEvent::userParameter ═══ Returns the user parameter that was set at the time of this event. See IMMDevice::setUserParameter for more information. public: unsigned short userParameter() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.12.5. IMMCuePointEvent::~IMMCuePointEvent ═══ public: virtual ~IMMCuePointEvent(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13. IMMDevice ═══ Description Derivation Public Functions Protected Functions Public Data Protected Data Nested Types Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMDevice ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice Inherited by: IMMAmpMixer IMMPlayableDevice ═══ Class Description - IMMDevice ═══ immdev.hpp The IMMDevice class is the base device class and provides behavior common to all devices. IMMDevice contains the device ID, alias, and similar information. There are numerous functions for querying the capabilities of the device. Also, there are functions for opening and closing the device, changing the speed and time formats, and for changing the audio. ═══ Public Functions - IMMDevice ═══ Audio disableAudio enableAudio isAudioEnabled setVolume volume Capabilities requiresFiles supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment Connector Type connectedDeviceId disableConnector enableConnector isConnectionSupported isConnectorEnabled Constructors ~IMMDevice Device Information aliasName deviceId deviceName Device Type and Description description deviceType Event Type and DeletePendingEvents deletePendingEvents Mode mode Opening and Closing close isCloseOnDestroy isOpen open openOnThread setCloseOnDestroy Preroll Type prerollTime prerollType Share Mode and Acquiring acquire isAcquired release Speed and Time setSpeedFormat setTimeFormat speedFormat timeFormat Inherited Members IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMDevice - Audio ═══ Use these members to manipulate the audio for the device. You can turn the audio off and on, and you can change and query the volume. ═══ IMMDevice - Call Type ═══ Use this enumeration to determine when the function is to return. ═══ IMMDevice - Capabilities ═══ Use these members to determine the capabilities of the device. All devices should respond to these inquiries. ═══ IMMDevice - Connector Type ═══ Use these members to query and manipulate the connectors for the device. Connectors give devices the ability to connect to other devices. For those of you who have VCRs or stereos, you probably are familiar with those RCA connection cables that you use to connect different stereo and video components. You normally connect one end of the cable to a line in (such as video in on your TV) and connect the other end to the line out (such as video out on your VCR). Think of these software connections and connectors as those cables and connections. For example, suppose you want to record your favorite song from a cassette as a sound file on your computer, but you do not have a microphone. You do, however, have a RCA cable connected to your stereo. You could connect one end of the cable to your cassette player and the other to the line in of your sound card. By default, the wave audio device would record from the microphone jack on the sound card because it is initially connected to the microphone connector. To record from the sound card's line in, you would have to make your wave audio device record from the line in connector on the sound card. To do this, you would enable the line in connector for your audio device by calling enableConnector(IMMDevice::lineIn); on your audio device. Because the audio device only supports one input connection to be enabled at a given time, it automatically disables the microphone connector. So, to create the sound file all you would have to do is to press play on the cassette player and call the record function on the wave audio device. ═══ IMMDevice - Constructors ═══ Derived classes can use these members to create objects of this class. ═══ IMMDevice - Device Information ═══ Use these members to query information about the device and its state. ═══ IMMDevice - Device Type and Description ═══ Use these members to query the type and description of the device. ═══ IMMDevice - Error Information ═══ Use these members to set and query an error value. ═══ IMMDevice - Event Type and DeletePendingEvents ═══ Use these members to specify the type of pending events that are to be deleted. ═══ IMMDevice - Implementation ═══ Use these members to access the low-level functions and to set and query a user parameter that can be passed on function calls. ═══ IMMDevice - Mode ═══ Use these members to query the current mode of the device. ═══ IMMDevice - Notification Event Descriptions ═══ These INotificationId strings are used for all notifications that IMMDevice provides to its observers. ═══ IMMDevice - Opening and Closing ═══ Use these members to query if the device is opened, to open or close the device, and to direct the device to close itself when the device object is destructed. ═══ IMMDevice - OpenStatus ═══ Use these members to set and query the open state of the device. ═══ IMMDevice - Preroll Type ═══ Use these members to prepare a device to begin a playback or recording function with minimal delay. These members set and query the amount of preroll time. ═══ IMMDevice - Share Mode and Acquiring ═══ Use these members to specify the three ways that the operating system can share access to the device and to query, acquire, and release access to the device. ═══ IMMDevice - Speed and Time ═══ Use these members to set and query the current formats for speed and time for the device. ═══ Protected Functions - IMMDevice ═══ Constructors IMMDevice Error Information lastError setLastError Implementation deviceWindow isOpenStringValid itemCapability itemStatus sendCommand setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested Opening and Closing open openOnThread OpenStatus openStatus setOpenStatus Inherited Members IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMDevice ═══ Device Type and Description allDevices ampMixer animation audioCD audioTape cdxa dat digitalVideo headphone microphone monitor other overlay sequencer speaker videoDisc videoTape waveAudio Notification Event Descriptions commandNotifyId cuePointId deviceEventId passDeviceId positionChangeId Inherited Members IStandardNotifier deleteId ═══ Protected Data - IMMDevice ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.13.1. IMMDevice::acquire ═══ Requests assignment of (access to) the device. If queued is true, the request is queued and executed as soon as the device resources are available. If the request can be satisfied immediately, then it is not queued. You must have opened the device before you try to acquire access to it. When a device is open, it notifies the operating system that you want to have the use of the hardware at sometime in the future, and notifies the operating system that it can share the device. When you acquire access, you are requesting that the system provide you access to the hardware now. Then, based on the type of ShareModethat you requested, it gives you access to the hardware. public: virtual IMMDevice& acquire( ShareMode acquire = shareable, Boolean queuedForResources = false, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.13.2. IMMDevice::aliasName ═══ Returns the alias associated with the device during the open procedure. This function is can return an empty string because a device can be constructed solely from a device ID. public: IString aliasName() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.3. IMMDevice::allDevices ═══ A device type for representing all devices. public: static const unsigned long allDevices; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.4. IMMDevice::ampMixer ═══ A device type for representing a combination amplifier-mixer that is used to control the characteristics of an audio signal from one or more audio sources. public: static const unsigned long ampMixer; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.5. IMMDevice::animation ═══ A device type for representing a device that uses a sequence of images to produce the effect of movement. public: static const unsigned long animation; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.6. IMMDevice::audioCD ═══ A device type for representing an audio CD device. public: static const unsigned long audioCD; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.7. IMMDevice::audioTape ═══ A device type for representing an audio tape recorder device. public: static const unsigned long audioTape; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.8. IMMDevice::cdxa ═══ A device type for representing a compact disc-extended architecture CD-XA device. public: static const unsigned long cdxa; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.9. IMMDevice::close ═══ Closes a device. public: virtual IMMDevice& close(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.10. IMMDevice::commandNotifyId ═══ Provides a notification identifier to observers when one of the IMMDevice functions has been called with the notify flag. IMMDevice provides a pointer to an IMMNotifyEvent for the command in the INotificationEvent::eventData field of the INotificationEvent. public: static const INotificationId commandNotifyId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.11. IMMDevice::connectedDeviceId ═══ Returns the Id of the device that is connected to the identified connector of this device. public: unsigned long connectedDeviceId( ConnectorType type, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mmstereo.cpp ═══ 1.13.12. IMMDevice::cuePointId ═══ Provides a notification identifier to observers when the device receives a cue point message. IMMDevice provides a pointer to an IMMCuePointEvent for the message in the INotificationEvent::eventData field of the INotificationEvent. public: static const INotificationId cuePointId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.13. IMMDevice::dat ═══ A device type for representing a digital audio tape device. public: static const unsigned long dat; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.14. IMMDevice::deletePendingEvents ═══ Removes all of the passed in event types from the queue. public: virtual IMMDevice& deletePendingEvents( EventType event = allEvents); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.15. IMMDevice::description ═══ Returns the description of the hardware associated with this device. public: IString description(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.16. IMMDevice::deviceEventId ═══ Provides a notification identifier to observers when the device receives a device message. IMMDevice provides a pointer to an IMMDeviceEvent for the message in the INotificationEvent::eventData field of the INotificationEvent. public: static const INotificationId deviceEventId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.17. IMMDevice::deviceId ═══ Returns the ID of the current device. This value is used by the system to identify the device. In the construction of this object, a device identifier is passed in. public: unsigned long deviceId() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.18. IMMDevice::deviceName ═══ Returns the name of the device depending on the class of the object. For example, some devices can be opened with a file name (song.mid), but others devices such as, IMMAudioCD, is opened with a specific device name (such as CDAUDIO01). public: IString deviceName() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.19. IMMDevice::deviceType ═══ Returns the type of the device. public: unsigned long deviceType(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.20. IMMDevice::deviceWindow ═══ Returns the window object that the device uses to communicate to the operating system. protected: IWindow& deviceWindow() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.21. IMMDevice::digitalVideo ═══ A device type for representing a digital video device. public: static const unsigned long digitalVideo; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.22. IMMDevice::disableAudio ═══ Turns off the audio for the device. This audio change can be delayed based on the passed in vectored delay time (think of this the same as fade out on your car stereo). Based on this delay time, the audio is slowly turned off. The default is no delay. public: virtual IMMDevice& disableAudio( AudioChannel channel = all, const IMMMillisecondTime& over = IMMMillisecondTime ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.23. IMMDevice::disableConnector ═══ Turns off the connector specified by type for this device. public: virtual IMMDevice& disableConnector( ConnectorType type, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The connector type is not supported by │ │ │this device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.24. IMMDevice::enableAudio ═══ Turns on or turns off the audio for the device. This audio change can be delayed based on the passed in vectored delay (think of this the same as fade in on your car stereo). Based on this delay time, the audio is slowly turned on. The default is no delay. public: virtual IMMDevice& enableAudio( Boolean enable = true, AudioChannel channel = all, const IMMMillisecondTime& over = IMMMillisecondTime ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.25. IMMDevice::enableConnector ═══ Turns on or turns off the connector specified by type for this device. public: virtual IMMDevice& enableConnector( ConnectorType type, Boolean enable = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The connector type is not supported by │ │ │this device. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.13.26. IMMDevice::headphone ═══ A device type for representing a headphone. public: static const unsigned long headphone; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.27. IMMDevice::IMMDevice ═══ Derived classes can use these members to create objects of this class. Overload 1 protected: IMMDevice( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMDevice from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMDevice(const IString& fileOrDevice); A derived class can construct an IMMDevice from: fileOrDevice This is the name of the device. This name is operating system specific. For example the name of the amplifier/mixer device in OS/2 is AMPMIX. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.28. IMMDevice::isAcquired ═══ Returns true if the device is ready. If a device is not ready, then access to it needs to be acquired using acquire. public: Boolean isAcquired(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.29. IMMDevice::isAudioEnabled ═══ Returns true if the audio for the passed in channel is turned on. public: Boolean isAudioEnabled( AudioChannel channel = all, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.30. IMMDevice::isCloseOnDestroy ═══ Returns true if the device closes itself when the device object is deleted. public: Boolean isCloseOnDestroy() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.31. IMMDevice::isConnectionSupported ═══ Returns true if the connector is valid for this device. public: Boolean isConnectionSupported( ConnectorType type, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.32. IMMDevice::isConnectorEnabled ═══ Returns true if the connector is enabled for this device. public: Boolean isConnectorEnabled( ConnectorType type, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.33. IMMDevice::isOpen ═══ Returns true if the device is opened. In general, open a device before calling multimedia functions. public: Boolean isOpen() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.34. IMMDevice::isOpenStringValid ═══ Returns true if the passed in open string is valid for this device. protected: virtual Boolean isOpenStringValid( const IString& deviceName) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.35. IMMDevice::itemCapability ═══ Gets the device capabilities for the item. This is similar to using the devQueryCaps system call on the OS/2 operating system. protected: unsigned long itemCapability( unsigned long item, CallType call) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.36. IMMDevice::itemStatus ═══ Checks the status of the item. protected: unsigned long itemStatus( unsigned long item, unsigned long value = 0, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.37. IMMDevice::lastError ═══ Returns the return code from the last call. This return code could be 0 because the value is reset with each call. If an error code needs to be captured, this function should be called directly after the error-causing function because each function overwrites this value. protected: unsigned long lastError() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Presentation Manager: Because the system multimedia architecture does not keep track of the return value of the last function call, this function does that. It allows all of the functions to throw exceptions where they are meaningful. ═══ 1.13.38. IMMDevice::microphone ═══ A device type for representing a microphone. public: static const unsigned long microphone; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.39. IMMDevice::mode ═══ Returns the current mode of the device. public: virtual Mode mode(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.13.40. IMMDevice::monitor ═══ A device type for representing a device that can listen to (monitor) an audio and video source. public: static const unsigned long monitor; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.41. IMMDevice::open ═══ Opens the device or file based on the passed in string. The default string uses the deviceName. Note, if call is wait, then the windowing system will be tied up until the file or device is opened. If you do not want to tie up the windowing system and you do not want the open function to return until the file or device is opened, then use the openOnThread function. Otherwise, you could set call to nowait, causing open to return immediately. When the open finishes an INotificationEvent, is sent to any observers that are attached to this device, notifying them that the open is finished. You must have opened the device before you try to acquire access to it. When a device is open, it notifies the operating system that you want to have the use of the hardware at sometime in the future, and notifies the operating system that it can share the device. When you acquire access, you are requesting that the system provide you access to the hardware now. Then, based on the type of ShareModethat you requested, it gives you access to the hardware. Overload 1 public: virtual IMMDevice& open( const IString& fileOrDevice = IString ( ), Boolean shareable = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device is locked. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A hardware error occurred. │ └────────────────────┴────────────────────────────────────────┘ Overload 2 protected: virtual IMMDevice& open( unsigned long instanceNumber, Boolean shareable = true, CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device is locked. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A hardware error occurred. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.42. IMMDevice::openOnThread ═══ Opens the device by creating a thread to do the actual opening. By doing the opening this way, it will not tie up the windowing system. Overload 1 public: virtual IMMDevice& openOnThread( const IString& fileOrDevice = IString ( ), Boolean shareable = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device is locked. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A hardware error occurred. │ └────────────────────┴────────────────────────────────────────┘ Overload 2 protected: virtual IMMDevice& openOnThread( unsigned long instanceNumber, Boolean shareable = true); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device is locked. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A hardware error occurred. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.43. IMMDevice::openStatus ═══ Returns the result of the open attempt. This is used by the device to determine if the opening of the device has occurred yet and if it was successful. This is important because basically all of the multimedia function calls require the device to be opened first before you can make any calls. protected: OpenStatus openStatus() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.44. IMMDevice::other ═══ A device type for representing devices other than the system-provided device types. public: static const unsigned long other; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.45. IMMDevice::overlay ═══ A device type for representing a device that can overlay an image on top of the screen that does not disrupt what is displayed there. public: static const unsigned long overlay; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.46. IMMDevice::passDeviceId ═══ Provides a notification identifier to observers when the device receives a pass device message. IMMDevice provides a pointer to an IMMPassDeviceEvent for the message in the INotificationEvent::eventData field of the INotificationEvent. public: static const INotificationId passDeviceId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.47. IMMDevice::positionChangeId ═══ Provides a notification identifier to observers when the device receives a position change message. IMMDevice provides a pointer to an IMMPositionChangeEvent for the message in the INotificationEvent::eventData field of the INotificationEvent. public: static const INotificationId positionChangeId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.48. IMMDevice::prerollTime ═══ Returns the amount of preroll time in IMMTime. If the returned time object is invalid then the preroll time is not bounded. public: IMMTime prerollTime(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.49. IMMDevice::prerollType ═══ Returns the preroll characteristics of the device. public: PrerollType prerollType(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.50. IMMDevice::release ═══ Releases exclusive use of the device resources. public: virtual IMMDevice& release(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.13.51. IMMDevice::requiresFiles ═══ Returns true if the device requires the use of files. An example of a device that requires files is the wave audio device, and an example of a device that does not require files is the amplifier-mixer device. public: Boolean requiresFiles(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.52. IMMDevice::sendCommand ═══ Sends a command to the specified device. Overload 1 protected: IString sendCommand(const IString& command); The currently set userParameter is in the notification message. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IString sendCommand( const IString& command, unsigned short userParm); The passed in userParameter is in the notification message and does not replace the value set with setUserParameter. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 protected: IMMDevice& sendCommand( unsigned short message, unsigned long param1, void* param2, unsigned short userParm); The passed in userParameter is in the notification message and does not replace the value set with the setUserParameter. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 4 protected: IMMDevice& sendCommand( unsigned short message, unsigned long param1, void* param2); The currently set userParameter is in the notification message. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.53. IMMDevice::sequencer ═══ A device type for representing a MIDI synthesizer device. public: static const unsigned long sequencer; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.54. IMMDevice::setCloseOnDestroy ═══ Closes the device when this object is destroyed. The default is to close the device. public: IMMDevice& setCloseOnDestroy(Boolean close = false); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mmstereo.cpp ═══ 1.13.55. IMMDevice::setLastError ═══ Sets the return code of the last low-level function call. protected: IMMDevice& setLastError(unsigned long errorId); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Presentation Manager: Because the system multimedia architecture does not keep track of the return value of the last function call, this function does that. It allows all of the functions to throw exceptions where they are meaningful. ═══ 1.13.56. IMMDevice::setOpenStatus ═══ Sets the open flag. This is used by the device to determine if the opening of the device has occurred yet and if it was successful. This is important because basically all of the multimedia function calls require the device to be opened first before you can make any calls. protected: IMMDevice& setOpenStatus(OpenStatus status); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.57. IMMDevice::setPassDeviceRequested ═══ Sets the pass device flag. Use this to notify the device object that the device object has received use of the actual hardware device. Until the device receives the first pass device event, the device is not initialized. protected: IMMDevice& setPassDeviceRequested(Boolean sawPassDevice); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.58. IMMDevice::setSpeedFormat ═══ Sets the speed format for the device. See IMMSpeed for more information on the different speed formats. public: virtual IMMDevice& setSpeedFormat( IMMSpeed::Format format, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.59. IMMDevice::setTimeFormat ═══ Sets the time format for the device. See IMMTime::Format enumeration for more information on the different time formats. public: virtual IMMDevice& setTimeFormat( IMMTime::Format format, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.13.60. IMMDevice::setUserParameter ═══ Sets the user parameter. This parameter is automatically passed in the notification messages for all but two of the device functions. The exceptions are the two sendCommand functions that take their own user parameter. protected: IMMDevice& setUserParameter(unsigned short userParm = 0); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.61. IMMDevice::setVolume ═══ Sets the volume of the audio channel for the device to a percent (from 0% to 100%) of the maximum audio level. This volume change can be delayed based on the passed in vectored delay time (think of this the same as fade in or fade out on your car stereo). Based on this delay time, the volume is slowly changed to the new volume. The default is no delay. public: virtual IMMDevice& setVolume( unsigned long volume, AudioChannel channel = all, const IMMMillisecondTime& over = IMMMillisecondTime ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.13.62. IMMDevice::speaker ═══ A device type for representing output to the speakers. public: static const unsigned long speaker; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.63. IMMDevice::speedFormat ═══ Returns the currently set speed format for the device. See IMMSpeed for more information on the different speed formats. public: IMMSpeed::Format speedFormat(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.64. IMMDevice::supportsAudio ═══ Returns true if the device has support for audio playback. public: Boolean supportsAudio(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.65. IMMDevice::supportsCommand ═══ Returns true if the device supports the passed in command. public: Boolean supportsCommand( IMMNotifyEvent::Command command, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.66. IMMDevice::supportsDigitalTransfer ═══ Returns true if the device can internally process digital data, for example a digital-to-analog converter on a CD player. public: Boolean supportsDigitalTransfer(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.67. IMMDevice::supportsDisableEject ═══ Returns true if the device can disable the manual ejection of the media. public: Boolean supportsDisableEject(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.68. IMMDevice::supportsEject ═══ Returns true if the device can eject the media. public: Boolean supportsEject(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.69. IMMDevice::supportsPlay ═══ Returns true if the device can play. public: Boolean supportsPlay(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.70. IMMDevice::supportsRecord ═══ Returns true if the device supports recording. This does not necessarily mean it also supports the ability to save the data you just recorded. See supportsSavefor more information. public: Boolean supportsRecord(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.71. IMMDevice::supportsRecordInsertion ═══ Returns true if the device supports insertion of data while recording. For example, you would use this function if you just recorded a sound file and then wanted to record your voice saying "Hello" in the middle of it without overlaying any of the recorded sound. public: Boolean supportsRecordInsertion(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.72. IMMDevice::supportsSave ═══ Returns true if the device can save data to some type of media (for example a file). An example of a device that supports saving is the wave audio device, and an example of a device that does not support saving is the audio CD device. public: Boolean supportsSave(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.73. IMMDevice::supportsStreaming ═══ Returns true if the device can continuously transfer digital data to or from another device. The source or destination of the data is determined by the device's connections. public: Boolean supportsStreaming(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.74. IMMDevice::supportsVideo ═══ Returns true if the device has support for video playback. public: Boolean supportsVideo(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.75. IMMDevice::supportsVolumeAdjustment ═══ Returns true if the device supports software control of the volume. An example of a device that supports volume adjustment is the wave audio device, and an example of a device that does not support audio adjustment is the video disc device. public: Boolean supportsVolumeAdjustment( CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.76. IMMDevice::timeFormat ═══ Returns the currently set time format for the device. See the Formatenumeration for more information on the different time formats. public: IMMTime::Format timeFormat(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.13.77. IMMDevice::userParameter ═══ Returns the user parameter that is in the all of the notification messages except for the two sendCommand functions that take their own user parameter. protected: unsigned short userParameter() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.78. IMMDevice::videoDisc ═══ A device type for representing a video disc player device. public: static const unsigned long videoDisc; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.79. IMMDevice::videoTape ═══ A device type for representing a video tape device. public: static const unsigned long videoTape; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.80. IMMDevice::volume ═══ Returns the volume setting for the passed in audio channel. This value is in the range of 0 to 100. public: virtual unsigned long volume( AudioChannel channel = left, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltamp.cpp ═══ 1.13.81. IMMDevice::wasPassDeviceRequested ═══ Returns true if it has already processed a passDevice event. Use this to notify the device object that the device object has received use of the actual hardware device. Until the device receives the first pass device event, the device is not initialized. protected: Boolean wasPassDeviceRequested() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.82. IMMDevice::waveAudio ═══ A device type for representing a device that uses digital audio data in the wave format. public: static const unsigned long waveAudio; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.13.83. IMMDevice::~IMMDevice ═══ public: virtual ~IMMDevice(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ Nested Types - IMMDevice ═══ Enumerations CallType OpenStatus PrerollType AudioChannel Mode EventType ShareMode ConnectorType ═══ Enums - CallType ═══ enum CallType { nowait=0X00000001, wait=0x00000002 }; This enumeration determines how the multimedia functions call the low level operating system functions. In both call types, a notification event is sent to all attached IObservers when the command finishes processing. Most functions that result in a call to the operating system take this type as their last parameter. The following are valid values: nowait The method is asynchronous and returns immediately (before the requested processing is complete). If you want to know when the command finishes processing, attach an observer to the device because it gets notified when the command finishes. wait The method is synchronous and all processing occurs before the function returns. Wait is not recommended for threads having a message queue that is processing messages for user interface windows. A long wait could tie up the message queue. ═══ Enums - OpenStatus ═══ enum OpenStatus { openNotAttempted, openSuccessful, openFailed }; An enumeration that denotes the different states for opening a device. The following are valid values: openNotAttempted You have not tried to open the device yet. openSuccessful The open succeeded. openFailed The open failed. ═══ Enums - PrerollType ═══ enum PrerollType { variable=1, fixed, none }; Use these enumerators to specify preroll characteristic identifiers. Preroll means preparing a device to begin a playback or recording function with minimal delay. The following are valid values: variable The preroll time for the device is variable, meaning that you can change the preroll time value. fixed The preroll time for the device is fixed, meaning that you cannot change the preroll time value; it is fixed by the operating system. none The preroll time is not supported by the device. ═══ Enums - AudioChannel ═══ enum AudioChannel { all, left, right }; Use this enumeration to specify audio channel identifiers. ═══ Enums - Mode ═══ enum Mode { notReady=1, paused, playing, stopped, recording, seeking }; An enumeration that denotes the current state of the device. The following are valid values: notReady A device is in this state when the device is not acquired. paused The device is paused. playing The device is playing. stopped The device is stopped. recording The device is recording. seeking The device is moving the current position to a new location. ═══ Enums - EventType ═══ enum EventType { allEvents, notifyEvent=0x0500, passDeviceEvent, positionChangeEvent, cuePointEvent, deviceEvent, synchEvent }; Use the preceding enumerations to specify the type of events that are to be removed. ═══ Enums - ShareMode ═══ enum ShareMode { shareable, isolatedExclusive=0x00000100, exclusive=0x00000200 }; Use these enumerators to specify share mode identifiers: shareable Allows the device to be shared by other applications. isolatedExclusive Inhibits other applications from acquiring use of the physical (or hardware) device until released by the owning application. exclusive Acquires the device for exclusive use without acquiring the entire device resource for exclusive use. This basically means that the operating system cannot make this device inactive. ═══ Enums - ConnectorType ═══ enum ConnectorType { midiStream=0x00000001, cdStream=0x00000002, waveStream=0x00000003, ampStream=0x00000004, xaStream=0x00000005, headphones=0x00000006, speakers=0x00000007, microphones=0x00000008, lineIn=0x00000009, lineOut=0x0000000a, videoIn=0x0000000b, videoOut=0x0000000c, phoneSet=0x0000000d, phoneLine=0x0000000e, audioIn=0x0000000f, audioOut=0x00000010, universal=0x00000011 }; Use the preceding enumerations to specify connection types. These are all of the types of connections that a device can support. Each device only supports a subsection of this list. For example, an audio CD device would not support xaStream or microphones. Note: Stream in these enumerations means the digital transfer of the data for these devices. ═══ 1.14. IMMDeviceEvent ═══ Description Derivation Constructors Public Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMDeviceEvent ═══ IBase │ IVBase │ IEvent │ IMMDeviceEvent Inherited by none. ═══ Class Description - IMMDeviceEvent ═══ immevt.hpp The IMMDeviceEvent class is the class for device events. These events get generated by devices for device-specific purposes. ═══ Public Functions - IMMDeviceEvent ═══ Constructors IMMDeviceEvent ~IMMDeviceEvent Event Information device eventCode eventData Inherited Members IEvent controlHandle controlWindow dispatchingWindow eventId eventType handle operator = parameter1 parameter2 passToOwner result setControlHandle setDispatchingHandle setEventType setHandle setPassToOwner setResult window IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMDeviceEvent - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMDeviceEvent - Event Information ═══ Use these members to return the device, event code, and event data for the device that generated this event. ═══ Protected Data - IMMDeviceEvent ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.14.1. IMMDeviceEvent::device ═══ Returns a pointer to the device that this event is from. public: IMMDevice* device() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.14.2. IMMDeviceEvent::eventCode ═══ Returns the device-specific event code. public: unsigned short eventCode() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.14.3. IMMDeviceEvent::eventData ═══ Returns the device-specific event data structure. public: void* eventData() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.14.4. IMMDeviceEvent::IMMDeviceEvent ═══ Although you can construct objects of this class, typically IMMDeviceHandler::dispatchHandlerEvent creates objects of this class from an object of the class IEventor another IMMDeviceEvent object. public: IMMDeviceEvent(const IEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.14.5. IMMDeviceEvent::~IMMDeviceEvent ═══ public: virtual ~IMMDeviceEvent(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15. IMMDeviceHandler ═══ Description Derivation Constructors Public Functions Protected Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMDeviceHandler ═══ IBase │ IVBase │ IHandler │ IMMDeviceHandler Inherited by: IMMRemovableMediaHandler ═══ Class Description - IMMDeviceHandler ═══ immdvhdr.hpp The IMMDeviceHandler class is the base handler class for IMMDevices and provides behavior common to all devices. IMMDeviceHandler inherits from IHandler. It inherits dispatchHandlerEvent virtual function from IHandler to encapsulate the multimedia interface. This function does four things. First, it determines what message has been received and converts it into the appropriate event. Second, it determines which device the event is for. Third, it calls the virtual function for the event. Fourth, it goes through the list of added IObservers for the device and calls the IObserver::dispatchNotificationEvent with the event. ═══ Public Functions - IMMDeviceHandler ═══ Constructors IMMDeviceHandler ~IMMDeviceHandler Device Attachment handleEventsFor stopHandlingEventsFor Event Processing cuePoint deviceEvent passDevice positionChange Inherited Members IHandler asDebugInfo asString disable enable handleEventsFor isEnabled stopHandlingEventsFor IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMDeviceHandler - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMDeviceHandler - Device Attachment ═══ Use these members to attach and detach the handler object to and from a given device. ═══ IMMDeviceHandler - Event Dispatching ═══ Event dispatching members evaluate an event to determine if it is appropriate for this handler object to process. If it is, these members call the virtual function used to process the event. ═══ IMMDeviceHandler - Event Processing ═══ Derived classes must supply these members to process a device, position change, pass, or cue point event. ═══ IMMDeviceHandler - Hidden Members ═══ We have hidden these functions to prevent you from using them. ═══ Protected Functions - IMMDeviceHandler ═══ Event Dispatching dispatchHandlerEvent Inherited Members IHandler defaultProcedure dispatchHandlerEvent ═══ Protected Data - IMMDeviceHandler ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.15.1. IMMDeviceHandler::cuePoint ═══ Implemented by derived classes to process cuePoint events. public: virtual Boolean cuePoint(const IMMCuePointEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.2. IMMDeviceHandler::deviceEvent ═══ Implemented by derived classes to process device events. public: virtual Boolean deviceEvent(const IMMDeviceEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.3. IMMDeviceHandler::dispatchHandlerEvent ═══ This function does four things. First, it determines what message has been received and converts it into the appropriate event. Second, it determines which device the event is for. Third, it calls the virtual function for the event. Fourth, it goes through the list of added IObservers for the device and calls the IObserver::dispatchNotificationEvent with the event. A given handler should return true if the event should not be dispatched to other handlers. In such cases, a result can be placed in the specified IEvent object. protected: virtual Boolean dispatchHandlerEvent(IEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.4. IMMDeviceHandler::handleEventsFor ═══ Attaches the handler to the specified IMMDevice object. public: virtual IMMDeviceHandler& handleEventsFor( IMMDevice* device); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.5. IMMDeviceHandler::IMMDeviceHandler ═══ You can construct and destruct objects of this class. public: IMMDeviceHandler(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.6. IMMDeviceHandler::passDevice ═══ Implemented by derived classes to process pass device events. public: virtual Boolean passDevice(const IMMPassDeviceEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.7. IMMDeviceHandler::positionChange ═══ Implemented by derived classes to process position change events. public: virtual Boolean positionChange( const IMMPositionChangeEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.8. IMMDeviceHandler::stopHandlingEventsFor ═══ Detaches the handler from the specified IMMDevice object. public: virtual IMMDeviceHandler& stopHandlingEventsFor( IMMDevice* device); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.15.9. IMMDeviceHandler::~IMMDeviceHandler ═══ public: virtual ~IMMDeviceHandler(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16. IMMDigitalVideo ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMDigitalVideo ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMFileMedia │ IMMRecordable │ IMMConfigurableAudio │ IMMDigitalVideo Inherited by none. ═══ Class Description - IMMDigitalVideo ═══ immdigvd.hpp The IMMDigitalVideo class provides behavior for digital software motion video. It supports playback of video in either a system-provided default window or a user-specified window. It provides functions for playing and controlling video in a default window or an application window. There are also functions for playing the video at different speeds. ═══ Public Functions - IMMDigitalVideo ═══ Capabilities supportsOverlayGraphics supportsReverse supportsSizing supportsStretchToFit Constructors IMMDigitalVideo ~IMMDigitalVideo Playback isPlayingForward playAt playFast playScan playSlow Playback Speeds fastSpeed fileNormalSpeed maximumSpeed minimumSpeed normalSpeed slowSpeed speed Record and Monitoring disableMonitoring enableMonitoring isMonitoringEnabled monitorHandle record setMonitorWindow useDefaultMonitorWindow Video Window destinationRectangle handle maximumWindows refresh setDestination setWindow sourceRectangle useDefaultWindow videoFileHeight videoFileName videoFileWidth videoHeight videoWidth Inherited Members IMMConfigurableAudio bitsPerSample blockAlignment bytesPerSecond channels format samplesPerSecond setBitsPerSample setBlockAlignment setBytesPerSecond setChannels setFormat setSamplesPerSecond IMMRecordable canRedo canUndo copy cueForRecording cut deleteSelection paste record redo save saveAs undo IMMFileMedia filename isWriteable load loadOnThread IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMDigitalVideo - Capabilities ═══ Use these members to query the capabilities for the current device. ═══ IMMDigitalVideo - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMDigitalVideo - Hidden Functions ═══ We have hidden the copy constructor and operator = to prevent you from using them. The record function is hidden until the digital video device supports insertion of video. Currently, it supports overlay of video. ═══ IMMDigitalVideo - Implementation ═══ These members validate the open string, translate the audio flags, and play the video file using the passed in speed and range. ═══ IMMDigitalVideo - Playback ═══ Use these members to play a video at different rates. ═══ IMMDigitalVideo - Playback Speeds ═══ Use these members to query the device's playback rates and the current playback rate. ═══ IMMDigitalVideo - Record and Monitoring ═══ Use these members to record from a video capture card, monitor the video signal, and change the monitor window. ═══ IMMDigitalVideo - Video Window ═══ These members are used to change the video window attributes and to play the loaded video at a different rate than normal. ═══ Protected Functions - IMMDigitalVideo ═══ Constructors IMMDigitalVideo Implementation isOpenStringValid playDigital translateAudioFlag Inherited Members IMMConfigurableAudio translateAudioFlag IMMFileMedia enableDataUpdate IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMDigitalVideo ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMDigitalVideo ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.16.1. IMMDigitalVideo::destinationRectangle ═══ Returns the subrectangle within the video window where video is played. This allows an application to move, grow, or shrink where the video is played inside the video window. public: IRectangle destinationRectangle(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.2. IMMDigitalVideo::disableMonitoring ═══ Sets monitoring of the incoming video signal off. When monitoring is turned on, a monitor window is created. When the monitor window is active and recording is not in progress, the monitor window displays the entire video source image, regardless of any source rectangle setting. During recording, only the area being captured is displayed. Monitoring during real-time recording is supported but at a reduced performance. Monitoring can not be turned on or off during recording, that is, if it is on when recording starts it must remain on while recording is in progress. Attempting to turn monitoring on or off during real-time recording results in an exception. During monitoring, audio is passed through and heard on the speakers or headphones connected to the sound card, if present. public: virtual IMMDigitalVideo& disableMonitoring( CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.3. IMMDigitalVideo::enableMonitoring ═══ Sets monitoring of the incoming video signal on or off. When monitoring is turned on, a monitor window is created. When the monitor window is active and recording is not in progress, the monitor window displays the entire video source image, regardless of any source rectangle setting. During recording, only the area being captured is displayed. Monitoring during real-time recording is supported but at a reduced performance. Monitoring can not be turned on or off during recording, that is, if it is on when recording starts it must remain on while recording is in progress. Attempting to turn monitoring on or off during real-time recording results in an exception. During monitoring, audio is passed through and heard on the speakers or headphones connected to the sound card, if present. public: virtual IMMDigitalVideo& enableMonitoring( Boolean enable = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.4. IMMDigitalVideo::fastSpeed ═══ Returns the device's fast playback rate in the current speed format, either as a percentage or in frames-per-second. Returns 0 if the device cannot play fast. public: IMMSpeed fastSpeed(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.5. IMMDigitalVideo::fileNormalSpeed ═══ Returns the normal play rate of the currently loaded video file, in the current speed format, either as a percentage or in frames-per-second. This is the playback speed stored in the video file when the video file was created. Returns 0 if no file is currently loaded. public: IMMSpeed fileNormalSpeed(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.6. IMMDigitalVideo::handle ═══ Returns the window handle for the current video playback window. public: IWindowHandle handle(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.7. IMMDigitalVideo::IMMDigitalVideo ═══ You can construct and destruct objects of this class. Overload 1 public: IMMDigitalVideo( Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); You can construct an IMMDigitalVideo from the following: openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mmstereo.cpp Overload 2 protected: IMMDigitalVideo( unsigned long deviceIdentifier, const IString& newAlias); A derived class can construct an IMMDigitalVideo from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.8. IMMDigitalVideo::isMonitoringEnabled ═══ Returns true if monitoring of the incoming video signal is enabled. public: Boolean isMonitoringEnabled(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.9. IMMDigitalVideo::isOpenStringValid ═══ Returns true if the passed in open string is valid for this device. protected: virtual Boolean isOpenStringValid( const IString& deviceName) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.10. IMMDigitalVideo::isPlayingForward ═══ Returns true if the play direction is forward or if the device is not playing. public: Boolean isPlayingForward(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.11. IMMDigitalVideo::maximumSpeed ═══ Returns the maximum play rate in the current speed format, either as percentage or in frames-per-second. public: IMMSpeed maximumSpeed(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.12. IMMDigitalVideo::maximumWindows ═══ Returns the maximum number of video windows allowed on this machine. public: unsigned long maximumWindows(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.13. IMMDigitalVideo::minimumSpeed ═══ Returns the minimum play rate in the current speed format, either as percentage or in frames-per-second. public: IMMSpeed minimumSpeed(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.14. IMMDigitalVideo::monitorHandle ═══ Returns the window handle for the current video monitor window. public: IWindowHandle monitorHandle(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.15. IMMDigitalVideo::normalSpeed ═══ Returns the device's normal play rate in the current speed format, either as a percentage or in frames-per-second. public: IMMSpeed normalSpeed(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.16. IMMDigitalVideo::playAt ═══ Plays the video at the specified speed from the start position to the end position. If from is omitted, play starts at the current position; if to is omitted, play stops at the end of the video file. public: IMMDigitalVideo& playAt( const IMMSpeed& speed, const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the video file. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.17. IMMDigitalVideo::playDigital ═══ Allows the playing from a start to an end position with the specified flags and speed. If from is omitted, play starts at the current position; if to is omitted, play stops at the end of the video file. protected: IMMDigitalVideo& playDigital( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = nowait, unsigned long flags = 0, unsigned long speed = 0); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the video file. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.18. IMMDigitalVideo::playFast ═══ Plays the video at the fast speed from the start position to the end position with no audio. If from is omitted, play starts at the current position; if to is omitted, play stops at the end of the video file.. public: IMMDigitalVideo& playFast( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the video file. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.16.19. IMMDigitalVideo::playScan ═══ Plays frames when indexed; otherwise, it plays the video as fast as possible(without disabling the video) from the start position to the end position with no audio. If from is omitted, play starts at the current position; if to is omitted, play stops at the end of the video file. public: IMMDigitalVideo& playScan( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the video file. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.16.20. IMMDigitalVideo::playSlow ═══ Plays the video at the slow speed from the start position to the end position with no audio. If from is omitted, play starts at the current position; if to is omitted, play stops at the end of the video file. public: IMMDigitalVideo& playSlow( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the video file. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.16.21. IMMDigitalVideo::record ═══ Starts recording till it reaches the end location. If there was anything previously recorded it is deleted before the recording starts. If the end location is not specified, recording continues until a pause or stop occurs. It is recommended that you temporarily acquire the device exclusively while you are recording; otherwise, the recording can become inactive if another device requests access to the device. public: virtual IMMDigitalVideo& record( const IMMTime& end = IMMTime ( ), Boolean resumeIfPaused = true, CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.22. IMMDigitalVideo::refresh ═══ Restores the video window by causing the video device to transfer an image from the video to the playback window. This is similar to a refresh of a normal window. If the source rectangle is not specified, the entire image is restored. If the destination rectangle is not specified, the destination size is set to the same as the image size. If the destination rectangle is a different size than the source rectangle, it tries to scale the image (if supported); otherwise, it clips the image to the destination rectangle. public: IMMDigitalVideo& refresh( const IRectangle& source = IRectangle ( ), const IRectangle& destination = IRectangle ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid rectangle was specified. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.23. IMMDigitalVideo::setDestination ═══ Sets the subrectangle within the video window where video is played. This allows an application to move, grow, or shrink where the video is played inside the video window. public: IMMDigitalVideo& setDestination( const IRectangle& rectangle, CallType = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid rectangle was specified. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.24. IMMDigitalVideo::setMonitorWindow ═══ Use this function to supply your own window where you can see the incoming video signal if monitoring is enabled. For example, you might want your monitor window in a canvas. If so, pass the handle of the canvas to this function. By default, the IMMDigitalVideo class creates and use its own video monitor window. This function allows an application to provide its own video monitor window. To switch back to using the default video monitor window, call useDefaultMonitorWindow. Overload 1 public: IMMDigitalVideo& setMonitorWindow( const IWindowHandle& handle, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMDigitalVideo& setMonitorWindow( const IWindow& window, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.25. IMMDigitalVideo::setWindow ═══ Use this function to supply your own window where the video is played. For example, you might want your video to be played back in a canvas. If so, pass the handle of the canvas to this function. By default, the IMMDigitalVideo class creates and use its own video window. This function allows an application to provide its own video playback window. To switch back to using the default video window, call useDefaultWindow. Overload 1 public: IMMDigitalVideo& setWindow( const IWindowHandle& handle, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid window handle was specified. │ └────────────────────┴────────────────────────────────────────┘ Overload 2 public: IMMDigitalVideo& setWindow( const IWindow& window, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid window was specified. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.26. IMMDigitalVideo::slowSpeed ═══ Returns the device's slow playback rate in the current speed format, either as a percentage or in frames-per-second. Returns 0 if the device cannot play slow. public: IMMSpeed slowSpeed(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.27. IMMDigitalVideo::sourceRectangle ═══ Returns the subrectangle of the video from the currently loaded video file. public: IRectangle sourceRectangle(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.28. IMMDigitalVideo::speed ═══ Returns the currently set speed for the device. public: IMMSpeed speed(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.29. IMMDigitalVideo::supportsOverlayGraphics ═══ Returns true if the device supports the display by an application of overlay graphics in a video window. public: Boolean supportsOverlayGraphics(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.30. IMMDigitalVideo::supportsReverse ═══ Returns true if the device can play in reverse. public: Boolean supportsReverse(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.31. IMMDigitalVideo::supportsSizing ═══ Returns true if the device can independently stretch the horizontal and vertical dimensions of the image. This is different than supportsStretchToFit, which forces both horizontal and vertical dimensions to be stretched in the same proportion. For example, if you stretch the horizontal dimension by 10%, then the vertical dimension must stretch by 10%. public: Boolean supportsSizing(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.32. IMMDigitalVideo::supportsStretchToFit ═══ Returns true if the device can stretch the video frames to fill the display rectangle. Thus, both the horizontal and vertical dimensions must be stretched by the same proportion. For example, if you stretch the horizontal dimension by 10%, then the vertical dimension must stretch by 10%. This is different than supportsSizing, which allows both horizontal and vertical dimensions to be stretched independently of each other. public: Boolean supportsStretchToFit(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.33. IMMDigitalVideo::translateAudioFlag ═══ Maps the wave audio commands to the digital video values. The digital video and the wave audio device both support setting the bytes-per-second, but the actual system values are different. By allowing the mapping of the wave audio values to the digital video values, the digital video player does not have to override all of the audio functions because they call this function. protected: virtual unsigned long translateAudioFlag( unsigned long) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.34. IMMDigitalVideo::useDefaultMonitorWindow ═══ Specifies that the digital video class creates and manages its own video monitor window. You can use it to set the video monitor window back to the default video monitor window. public: IMMDigitalVideo& useDefaultMonitorWindow( CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.16.35. IMMDigitalVideo::useDefaultWindow ═══ Specifies that the digital video class creates and manages its own video window. You can use it to set the video window back to the default video window. public: IMMDigitalVideo& useDefaultWindow(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.36. IMMDigitalVideo::videoFileHeight ═══ Returns the height of the video for the currently loaded video file. public: unsigned long videoFileHeight(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.37. IMMDigitalVideo::videoFileName ═══ Returns the file name of the digital video file. public: IString videoFileName() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.38. IMMDigitalVideo::videoFileWidth ═══ Returns the width of the video for the currently loaded video file. public: unsigned long videoFileWidth(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.39. IMMDigitalVideo::videoHeight ═══ Returns the nominal (reasonable) height of the video for this machine. So, this would probably return a smaller value on a '386 machine than a '486 machine. public: unsigned long videoHeight(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.40. IMMDigitalVideo::videoWidth ═══ Returns the nominal (reasonable) width of the video for this machine. So, this would probably return a smaller value on a '386 machine than a '486 machine. public: unsigned long videoWidth(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.16.41. IMMDigitalVideo::~IMMDigitalVideo ═══ public: virtual ~IMMDigitalVideo(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.17. IMMErrorInfo ═══ Description Derivation Constructors Public Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMErrorInfo ═══ IBase │ IVBase │ IErrorInfo │ IMMErrorInfo Inherited by none. ═══ Class Description - IMMErrorInfo ═══ immexcpt.hpp Objects of the IMMErrorInfo class represent error information that you can include in an exception object. When an multimedia call results in an error condition, objects of the IMMErrorInfo class are created. You can use the error text to construct a derived class object of IException. The User Interface Class Library provides the following macros for throwing exceptions constructed with IMMErrorInfo information. ITHROWMMERROR Accepts the following parameters: error The multimedia error number. functionName The name of the multimedia function that returned an error condition. This macro then generates code that calls IMMErrorInfo::throwMMError, which does the following: 1. Creates an IMMErrorInfo object 2. Uses the object to create an object of IAccessError 3. Adds location information 4. Logs the exception data 5. Throws the exception Note: This macro uses the recoverable enumerator provided by IException::Severity. ITHROWMMERROR2 Throws any of the User Interface Class Library-defined exceptions. This macro accepts the following parameters: error The multimedia error number. location The name of the multimedia function returning an error code, the name of the file the function is in, and the function's line number. type Use the enumeration IErrorInfo::ExceptionType to specify the type of the exception. The User Interface Class Library uses accessError as the default type on its exceptions. severity Use the enumeration IException::Severity to specify the severity of the error. The User Interface Class Library uses recoverable as the default severity on its exceptions. This macro generates code that calls throwMMError, which does the following: 1. Creates an IMMErrorInfo object 2. Uses the object to create an IException object 3. Adds location information 4. Logs the exception data 5. Throws the exception ═══ Public Functions - IMMErrorInfo ═══ Constructors IMMErrorInfo ~IMMErrorInfo Error Information errorId isAvailable operator const char * text Throw Support throwMMError Inherited Members IErrorInfo errorId isAvailable operator const char * text throwError IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMErrorInfo - Constructors ═══ You can construct and destruct objects of this class. You cannot create copies of objects of this class. ═══ IMMErrorInfo - Error Information ═══ Use these members to query the accessible attributes of this class. ═══ IMMErrorInfo - Hidden Members ═══ These functions are hidden to prevent you from copying and assigning objects of this class. ═══ IMMErrorInfo - Throw Support ═══ Use these members to support throwing of exceptions. The ITHROWMMERROR macro uses these members. ═══ Protected Data - IMMErrorInfo ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.17.1. IMMErrorInfo::errorId ═══ Returns the error ID. public: virtual unsigned long errorId() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.17.2. IMMErrorInfo::IMMErrorInfo ═══ There is only one way to construct instances of this class. If the error number and the name of the failing API is passed in, it will be prefixed to the error text. If the error text cannot be loaded, the following default text is provided: "No error text is available." public: IMMErrorInfo( unsigned long errorId = 0, const char* functionName = 0); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.17.3. IMMErrorInfo::isAvailable ═══ If there is error text available for the error, returns true. public: virtual Boolean isAvailable() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.17.4. IMMErrorInfo::operator const char * ═══ Returns the error text. public: virtual operator const char *() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.17.5. IMMErrorInfo::text ═══ Returns the error text. public: virtual const char* text() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.17.6. IMMErrorInfo::throwMMError ═══ Creates an IMMErrorInfo object and uses the text from it to do the following: 1. Create an exception object 2. Add the location information to it 3. Log the exception data 4. Throw the exception errorId The error number for the exception. functionName The name of the function (probably a system function) that failed. location An IExceptionLocation object containing the following:  Function name where the failure was detected and the exception thrown  File name  Line number where the function is called name Use the enumeration IErrorInfo::ExceptionType to specify the type of the exception. The default is accessError. severity Use the enumeration IException::Severity to specify the severity of the error. The default is recoverable. public: static void throwMMError( unsigned long errorId, const char* functionName, const IExceptionLocation& location, IErrorInfo::ExceptionType name = accessError, IException::Severity severity = recoverable); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.17.7. IMMErrorInfo::~IMMErrorInfo ═══ public: virtual ~IMMErrorInfo(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.18. IMMFileMedia ═══ Description Derivation Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMFileMedia ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMFileMedia Inherited by: IMMRecordable IMMSequencer ═══ Class Description - IMMFileMedia ═══ immfilem.hpp The IMMFileMedia is the base class for devices that use files, and it provides functions for loading data from a file. ═══ Public Functions - IMMFileMedia ═══ Constructors ~IMMFileMedia File Loading filename isWriteable load loadOnThread Inherited Members IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMFileMedia - Constructors ═══ Derived classes can use these members to create objects of this class. ═══ IMMFileMedia - File Loading ═══ Use these members to load a file into the device and to query information about the currently loaded file, for example, the file name and if the file was loaded as read-only. ═══ IMMFileMedia - Hidden Functions ═══ We have hidden these functions to prevent you from using them. ═══ IMMFileMedia - Implementation ═══ These members change the read-only state of the flag for the loaded file. ═══ IMMFileMedia - Obsolete Data and Functions ═══ These functions are obsolete and will be removed in a future release. ═══ Protected Functions - IMMFileMedia ═══ Constructors IMMFileMedia Implementation enableDataUpdate Inherited Members IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMFileMedia ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMFileMedia ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.18.1. IMMFileMedia::enableDataUpdate ═══ Allows the device to track read-only status of the loaded file. protected: virtual IMMFileMedia& enableDataUpdate( Boolean update = true); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.18.2. IMMFileMedia::filename ═══ Returns the currently loaded file name. public: IString filename(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file was not found; possibly there │ │ │is no loaded file. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.18.3. IMMFileMedia::IMMFileMedia ═══ Derived classes can use these members to create objects of this class. Overload 1 protected: IMMFileMedia( const IString& deviceName, Boolean openNow, unsigned long instance, Boolean openShareable); A derived class can construct an IMMFileMedia from the following: deviceName You must specify what device you wish to construct. openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMFileMedia( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMFileMedia from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.18.4. IMMFileMedia::isWriteable ═══ Returns false if the file was loaded as read-only; otherwise, true is returned. If the file was loaded as read-only, then the system prevents any changes to the file. The audio driver might also be able to improve load and runtime performance as no changes are allowed. Save and record functions throw an exception if the file was loaded as read-only. public: virtual Boolean isWriteable() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.18.5. IMMFileMedia::load ═══ Loads the given file into memory. If the file does not exist, a temporary file is created. Note, if call is wait , then the windowing system is tied up until the file is loaded. If you do not want to tie up of the windowing system and you do not want the load function to return until the file is loaded, use the loadOnThread function. Otherwise, you could set call to nowait , which causes this function to return immediately. When the load finishes, an INotificationEvent is sent to any observers that are attached to this device, notifying them that the load has finished. If the file is loaded as read-only, the system prevents any changes being made to the file. The audio driver might also be able to improve load and runtime performance as no changes are allowed. Save and record functions throw an exception if the file was loaded as read-only. public: virtual IMMFileMedia& load( const IString& filename, Boolean readOnly = false, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid media type or invalid data │ │ │format. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A hardware error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A file Attribute error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │This format is unsupported; possibly the│ │ │hardware does not support the │ │ │samples-per-second, the bits-per-sample,│ │ │the number of channels, or the audio │ │ │format. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.18.6. IMMFileMedia::loadOnThread ═══ Loads the given file into memory by creating a thread to do the actual loading. By doing the loading this way, it does not tie up the windowing system. This function does not return until the file is loaded. If the file does not exist, a temporary file is created. If the file is loaded as read-only, the system prevents any changes being made to the file. The audio driver might also be able to improve load and runtime performance as no changes are allowed. Save and record functions throw an exception if the file was loaded as read-only. public: virtual IMMFileMedia& loadOnThread( const IString& filename, Boolean readOnly = false); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid media type or invalid data │ │ │format. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A hardware error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │A file Attribute error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │This format is unsupported; possibly the│ │ │hardware does not support the │ │ │samples-per-second, the bits-per-sample,│ │ │the number of channels, or the audio │ │ │format. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.18.7. IMMFileMedia::~IMMFileMedia ═══ public: virtual ~IMMFileMedia(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19. IMMHourMinSecFrameTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMHourMinSecFrameTime ═══ IBase │ IVBase │ IMMTime │ IMMHourMinSecFrameTime Inherited by: IMM24FramesPerSecondTime IMM25FramesPerSecondTime IMM30FramesPerSecondTime ═══ Class Description - IMMHourMinSecFrameTime ═══ immtime.hpp The IMMHourMinSecFrameTime data type class represents the hours-minutes-seconds-frames (HHMMSSFF) time format. ═══ Public Functions - IMMHourMinSecFrameTime ═══ Attributes frames framesPerSecond hours minutes seconds Constructors IMMHourMinSecFrameTime ~IMMHourMinSecFrameTime Conversions operator unsigned long Diagnostics asString Ordinal ordinal setTimeToOrdinal Inherited Members IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMHourMinSecFrameTime - Attributes ═══ Use these functions to parse the time into normal time values, for example, hours, minutes, and seconds. ═══ IMMHourMinSecFrameTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMHourMinSecFrameTime - Conversions ═══ Use these members to cast the time to an unsigned long. ═══ IMMHourMinSecFrameTime - Diagnostics ═══ Use these members to return the time as a string. ═══ IMMHourMinSecFrameTime - Ordinal ═══ Use these ordinal number functions for indicating generic positions. A time object returns an ordinal number, which represents the time at some particular granularity. This is useful for something that allows seeking and displays position, such as a slider. Because sliders generally do not process time values, you use an ordinal number to establish the range of slider values. Ordinals numbers can be mathematically manipulated and converted back to time values, if necessary. Note: Some time values are difficult to represent as an ordinal value, such as IMMTrackMinSecFrameTime. Such a time object produces ordinal numbers that are dependent on unknown information, such as the table of contents of a CD. Some time classes might not be able to correctly implement setTimeToOrdinal. ═══ Protected Functions - IMMHourMinSecFrameTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMMHourMinSecFrameTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMMHourMinSecFrameTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.19.1. IMMHourMinSecFrameTime::asString ═══ Returns the time value as a string formatted as HH:MM:SS.FF. public: virtual IString asString() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.2. IMMHourMinSecFrameTime::frames ═══ Returns the frames component of the time. public: virtual unsigned long frames() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.3. IMMHourMinSecFrameTime::framesPerSecond ═══ Returns the number of frames per second. public: unsigned long framesPerSecond() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.4. IMMHourMinSecFrameTime::hours ═══ Returns the hours component of the time. public: virtual unsigned long hours() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.5. IMMHourMinSecFrameTime::IMMHourMinSecFrameTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMMHourMinSecFrameTime(const IMMHourMinSecFrameTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMHourMinSecFrameTime( unsigned long value = defaultTime, unsigned long framesPerSecond = 1); You can construct an IMMHourMinSecFrameTime from: value A time value(FFSSMMHH) where: 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours framesPerSecond The number of frames that occur for each second. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.6. IMMHourMinSecFrameTime::minutes ═══ Returns the minutes component of the time. This is in the range of 0 to 59. public: virtual unsigned long minutes() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.7. IMMHourMinSecFrameTime::operator unsigned long ═══ Returns the time as a unsigned long in the following format (FFSSMMHH): 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.8. IMMHourMinSecFrameTime::ordinal ═══ Returns an ordinal number in frames. This is the time converted to the total number of frames based on the number of frames per second. public: virtual unsigned long ordinal() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.9. IMMHourMinSecFrameTime::seconds ═══ Returns the seconds component of the time. This is in the range of 0 to 59. public: virtual unsigned long seconds() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.10. IMMHourMinSecFrameTime::setTimeToOrdinal ═══ Sets the time object to the value represented by the ordinal number (in frames). This uses the current number of frames-per-second to convert this value. public: virtual IMMTime& setTimeToOrdinal(unsigned long ordinal); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.19.11. IMMHourMinSecFrameTime::~IMMHourMinSecFrameTime ═══ public: virtual ~IMMHourMinSecFrameTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20. IMMHourMinSecTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMHourMinSecTime ═══ IBase │ IVBase │ IMMTime │ IMMHourMinSecTime Inherited by none. ═══ Class Description - IMMHourMinSecTime ═══ immtime.hpp The IMMHourMinSecTime datatype class represents the hours-minutes-seconds (HHMMSS) time format. ═══ Public Functions - IMMHourMinSecTime ═══ Attributes hours minutes seconds Constructors IMMHourMinSecTime ~IMMHourMinSecTime Conversions operator unsigned long Diagnostics asString Ordinal ordinal setTimeToOrdinal Inherited Members IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMHourMinSecTime - Attributes ═══ Use these functions to parse the time into normal time values, for example, hours, minutes and seconds. ═══ IMMHourMinSecTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMHourMinSecTime - Conversions ═══ Use these members to cast the time to an unsigned long. ═══ IMMHourMinSecTime - Diagnostics ═══ Use these members to return the time as a string. ═══ IMMHourMinSecTime - Ordinal ═══ Use these ordinal number functions for indicating generic positions. A time object returns an ordinal number, which represents the time at some particular granularity. This is useful for something that allows seeking and displays position, such as a slider. Because sliders generally do not process time values, use an ordinal number to establish the range of slider values. Ordinal numbers can be mathematically manipulated and converted back to time values, if necessary. Note: Some time values are difficult to represent as an ordinal value, such as IMMTrackMinSecFrameTime. Such a time object produces ordinal numbers that are dependent on unknown information, such as the table of contents of a CD. Some time classes might not be able to correctly implement setTimeToOrdinal. ═══ Protected Functions - IMMHourMinSecTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMMHourMinSecTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMMHourMinSecTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.20.1. IMMHourMinSecTime::asString ═══ Returns the time value as a string formatted as HH:MM:SS. public: virtual IString asString() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.2. IMMHourMinSecTime::hours ═══ Returns the hours component of the time. public: virtual unsigned long hours() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.3. IMMHourMinSecTime::IMMHourMinSecTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMMHourMinSecTime(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMHourMinSecTime(const IMMHourMinSecTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 public: IMMHourMinSecTime(unsigned long value = defaultTime); You can construct an IMMHourMinSecTime from: value A time value where: 1. 1st byte is reserved(and not used) 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.4. IMMHourMinSecTime::minutes ═══ Returns the minutes component of the time. This is in the range of 0 to 59. public: virtual unsigned long minutes() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.5. IMMHourMinSecTime::operator unsigned long ═══ Returns the time as a unsigned long in the following format (RRSSMMHH): 1. 1st byte is reserved 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the hours public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.6. IMMHourMinSecTime::ordinal ═══ Returns the time value in total seconds. public: virtual unsigned long ordinal() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.7. IMMHourMinSecTime::seconds ═══ Returns the seconds component of the time. This is in the range of 0 to 59. public: virtual unsigned long seconds() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.8. IMMHourMinSecTime::setTimeToOrdinal ═══ Sets the time object to the value represented by the ordinal number (in seconds). public: virtual IMMTime& setTimeToOrdinal(unsigned long ordinal); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.20.9. IMMHourMinSecTime::~IMMHourMinSecTime ═══ public: virtual ~IMMHourMinSecTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21. IMMMasterAudio ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Nested Types Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMMasterAudio ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMMasterAudio Inherited by none. ═══ Class Description - IMMMasterAudio ═══ immmaud.hpp The IMMMasterAudio class provides behavior for modifying the master audio settings for all audio devices in the system. The application can set, query and save the headphones', speakers', and master volume settings for the system. When any of the multimedia devices are opened, they query the master audio settings and automatically adjust their settings accordingly. ═══ Public Functions - IMMMasterAudio ═══ Constructors IMMMasterAudio ~IMMMasterAudio Headphones areHeadphonesEnabled disableHeadphones enableHeadphones saveHeadphonesSetting Speakers areSpeakersEnabled disableSpeakers enableSpeakers saveSpeakersSetting Volume saveVolume setVolume volume Inherited Members IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMMasterAudio - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMMasterAudio - Headphones ═══ Use these members to set, query, and save the headphones' setting. ═══ IMMMasterAudio - Setting Source ═══ Use these members to determine which setting to query or set. ═══ IMMMasterAudio - Speakers ═══ Use these members to set, query, and save the speakers' setting. ═══ IMMMasterAudio - Volume ═══ Use these members to set, query, and save the master volume setting. ═══ Protected Functions - IMMMasterAudio ═══ Inherited Members IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMMasterAudio ═══ Inherited Members IStandardNotifier deleteId ═══ Protected Data - IMMMasterAudio ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.21.1. IMMMasterAudio::areHeadphonesEnabled ═══ Returns if the headphones' setting is enabled for the passed in source (either the current setting or the saved setting); otherwise, returns false. public: Boolean areHeadphonesEnabled( SettingSource source = current, IMMDevice::CallType call = IMMDevice::wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.2. IMMMasterAudio::areSpeakersEnabled ═══ Returns the true if the speakers' setting is enabled for the passed in source (either the current setting or the saved setting); otherwise, returns false. public: Boolean areSpeakersEnabled( SettingSource source = current, IMMDevice::CallType call = IMMDevice::wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.3. IMMMasterAudio::disableHeadphones ═══ Turns the headphones' settings off. public: virtual IMMMasterAudio& disableHeadphones( IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.4. IMMMasterAudio::disableSpeakers ═══ Turns the speakers' setting off. public: virtual IMMMasterAudio& disableSpeakers( IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.5. IMMMasterAudio::enableHeadphones ═══ Turns the headphones' settings either off or on. public: virtual IMMMasterAudio& enableHeadphones( Boolean enable = true, IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.6. IMMMasterAudio::enableSpeakers ═══ Turns the speakers' setting either on or off. public: virtual IMMMasterAudio& enableSpeakers( Boolean enable = true, IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.7. IMMMasterAudio::IMMMasterAudio ═══ You can construct and destruct objects of this class. public: IMMMasterAudio(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.8. IMMMasterAudio::saveHeadphonesSetting ═══ Saves the current headphones' setting of the operating system. public: virtual IMMMasterAudio& saveHeadphonesSetting( IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.9. IMMMasterAudio::saveSpeakersSetting ═══ Saves the current speakers' setting of the operating system. public: virtual IMMMasterAudio& saveSpeakersSetting( IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.10. IMMMasterAudio::saveVolume ═══ Saves the current master volume setting of the operating system. public: virtual IMMMasterAudio& saveVolume( IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.11. IMMMasterAudio::setVolume ═══ Sets the master volume for the operating system. public: virtual IMMMasterAudio& setVolume( unsigned long volume, IMMDevice::CallType call = IMMDevice::wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.12. IMMMasterAudio::volume ═══ Returns the master volume setting for either the current setting or the saved setting to a percent of the maximum audio level. public: unsigned long volume( SettingSource source = current, IMMDevice::CallType call = IMMDevice::wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.21.13. IMMMasterAudio::~IMMMasterAudio ═══ public: virtual ~IMMMasterAudio(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ Nested Types - IMMMasterAudio ═══ Enumerations SettingSource ═══ Enums - SettingSource ═══ enum SettingSource { saved=0x00004000L, current=0x00008000L }; Enumeration that specifies which setting to query and set. ═══ 1.22. IMMMillisecondTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMMillisecondTime ═══ IBase │ IVBase │ IMMTime │ IMMMillisecondTime Inherited by none. ═══ Class Description - IMMMillisecondTime ═══ immtime.hpp The IMMMillisecondTime data type class represents one-thousandth of a second. ═══ Public Functions - IMMMillisecondTime ═══ Constructors IMMMillisecondTime ~IMMMillisecondTime Conversions operator unsigned long Inherited Members IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMMillisecondTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMMillisecondTime - Conversions ═══ Use these members to cast the time to an unsigned long. ═══ Protected Functions - IMMMillisecondTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMMMillisecondTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMMMillisecondTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.22.1. IMMMillisecondTime::IMMMillisecondTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMMMillisecondTime(unsigned long time = defaultTime); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMMillisecondTime(const IMMMillisecondTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 public: IMMMillisecondTime(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.22.2. IMMMillisecondTime::operator unsigned long ═══ Returns the time as an unsigned long where each time unit is equal to one-thousandth of a second. public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.22.3. IMMMillisecondTime::~IMMMillisecondTime ═══ public: virtual ~IMMMillisecondTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.23. IMMMinSecFrameTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMMinSecFrameTime ═══ IBase │ IVBase │ IMMTime │ IMMMinSecFrameTime Inherited by none. ═══ Class Description - IMMMinSecFrameTime ═══ immtime.hpp The IMMMinSecFrameTime data type class represents the time format based on the 75-frames-per-second CD digital audio standard. ═══ Public Functions - IMMMinSecFrameTime ═══ Attributes frames minutes seconds Constructors IMMMinSecFrameTime ~IMMMinSecFrameTime Conversions operator unsigned long Diagnostics asString Inherited Members IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMMinSecFrameTime - Attributes ═══ Use these members to parse the time into normal time values, for example, hours and minutes. ═══ IMMMinSecFrameTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMMinSecFrameTime - Conversions ═══ Use these members to cast the time to an unsigned long. ═══ IMMMinSecFrameTime - Diagnostics ═══ Use these members to return the time as a string. ═══ Protected Functions - IMMMinSecFrameTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMMMinSecFrameTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMMMinSecFrameTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.23.1. IMMMinSecFrameTime::asString ═══ Returns the time value as a string formatted as MM:SS.FF. public: virtual IString asString() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.23.2. IMMMinSecFrameTime::frames ═══ Returns the frames component of the time. public: unsigned long frames() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.23.3. IMMMinSecFrameTime::IMMMinSecFrameTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMMMinSecFrameTime(unsigned long value = defaultTime); You can construct an IMMMinSecFrameTime from: value A time value where: 1. 1st byte is the reserved(not used) 2. 2nd byte is the frames 3. 3rd byte is the seconds 4. 4th byte is the minutes Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMMinSecFrameTime(const IMMMinSecFrameTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 public: IMMMinSecFrameTime(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.23.4. IMMMinSecFrameTime::minutes ═══ Returns the minutes component of the time. This is in the range of 0 to 59. public: unsigned long minutes() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.23.5. IMMMinSecFrameTime::operator unsigned long ═══ Returns the time as a unsigned long in the following format (RRFFSSMM): 1. 1st byte is reserved 2. 2nd byte is the frames 3. 3rd byte is the seconds 4. 4th byte is the minutes public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.23.6. IMMMinSecFrameTime::seconds ═══ Returns the seconds component of the time. This is in the range of 0 to 59. public: unsigned long seconds() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.23.7. IMMMinSecFrameTime::~IMMMinSecFrameTime ═══ public: virtual ~IMMMinSecFrameTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.24. IMMNotifyEvent ═══ Description Derivation Constructors Public Functions Protected Data Nested Types To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMNotifyEvent ═══ IBase │ IVBase │ IEvent │ IMMNotifyEvent Inherited by none. ═══ Class Description - IMMNotifyEvent ═══ immevt.hpp The IMMNotifyEvent class is the class for notification events. These events get generated when any device function gets called. This can be powerful for asynchronous processing when you do not want to wait for something to finish. For more information, see IMMDevice::nowait. To get notified of events, you attach an observer to the device and it sends a notification when a command has finished processing. From this event, you can find out what command was called, from which device it came, the return value of the command that was executed, and, if the command generated an error, what its error number and string are. ═══ Public Functions - IMMNotifyEvent ═══ Command command Constructors IMMNotifyEvent ~IMMNotifyEvent Event Information device errorId errorText userParameter Success Code successCode Inherited Members IEvent controlHandle controlWindow dispatchingWindow eventId eventType handle operator = parameter1 parameter2 passToOwner result setControlHandle setDispatchingHandle setEventType setHandle setPassToOwner setResult window IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMNotifyEvent - Command ═══ Use these members to determine what command generated this notification. ═══ IMMNotifyEvent - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMNotifyEvent - Event Information ═══ Use these members to parse the event information into the success state of the command (and, if there is an error, its error code and string) and to access the user parameter. ═══ IMMNotifyEvent - Success Code ═══ Use these members to determine if the command succeeded. ═══ Protected Data - IMMNotifyEvent ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.24.1. IMMNotifyEvent::command ═══ Returns the command that generated this notification event. public: Command command() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.24.2. IMMNotifyEvent::device ═══ Returns a pointer to the device that this event is from. public: IMMDevice* device() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.24.3. IMMNotifyEvent::errorId ═══ Returns the error code from the command if there was one; otherwise, it returns 0. public: unsigned short errorId() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.24.4. IMMNotifyEvent::errorText ═══ Returns the error text for a given error code. If there was not any error text, then it returns a null IString. public: static IString errorText(unsigned long errorCode); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.24.5. IMMNotifyEvent::IMMNotifyEvent ═══ Although you can construct objects of this class, typically IMMDeviceHandler::dispatchHandlerEvent creates objects of this class from an object of the class IEventor another IMMNotifyEvent object. public: IMMNotifyEvent(const IEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.24.6. IMMNotifyEvent::successCode ═══ Returns the success code, which indicates if the command succeeded or failed. public: SuccessCode successCode() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.24.7. IMMNotifyEvent::userParameter ═══ Returns the user parameter that was set at the time of this event. See IMMDevice::setUserParameter for more information. public: unsigned short userParameter() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.24.8. IMMNotifyEvent::~IMMNotifyEvent ═══ public: virtual ~IMMNotifyEvent(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ Nested Types - IMMNotifyEvent ═══ Enumerations SuccessCode Command ═══ Enums - SuccessCode ═══ enum SuccessCode { successful, preempted, aborted, error }; Enumeration that specifies if the command was successful. The following are valid values: successful The command was completed successfully. preempted Another notification request (same type of command) was received. aborted The command was interrupted and is unable to be completed. For example, the first command was a play with nowait, and a second command, stop, was issued before the play could finish. error The command caused an error to occur. ═══ Enums - Command ═══ enum Command { open=1, close, escape, play, seek, stop, pause, info, getDeviceCapabilities, status, spin, set, step, record, sysInfo, save, cue, update, setCuePoint, setPositionAdvise, setSyncOffset, load, acquireDevice, releaseDevice, masterAudio, getTableOfContents, deviceSettings, connector, resume, connectorInfo, defaultConnection, connection, group, capture=40, freeze, getImageBuffer, getImagePalette, put, realize, rewind, restore, setImageBuffer, setImagePalette, unfreeze, where, windowCommand, deleteCommand, cut, paste, copy, redo, undo }; Enumeration that specifies the command that this event was generated for. ═══ 1.25. IMMPassDeviceEvent ═══ Description Derivation Constructors Public Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMPassDeviceEvent ═══ IBase │ IVBase │ IEvent │ IMMPassDeviceEvent Inherited by none. ═══ Class Description - IMMPassDeviceEvent ═══ immevt.hpp The IMMPassDeviceEvent class is the class for pass device events. These events get generated when a device is being requested to release a shared hardware device (such as a CD-ROM drive). ═══ Public Functions - IMMPassDeviceEvent ═══ Constructors IMMPassDeviceEvent ~IMMPassDeviceEvent Event Information device isGainingUse Inherited Members IEvent controlHandle controlWindow dispatchingWindow eventId eventType handle operator = parameter1 parameter2 passToOwner result setControlHandle setDispatchingHandle setEventType setHandle setPassToOwner setResult window IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMPassDeviceEvent - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMPassDeviceEvent - Event Information ═══ Use these members to parse the event into the ID of the device that is either losing or gaining use of the hardware device. ═══ Protected Data - IMMPassDeviceEvent ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.25.1. IMMPassDeviceEvent::device ═══ Returns a pointer to the device that is being requested to lose use of or gain use of a device. See isGainingUse to find out what this device is being requested to do. public: IMMDevice* device() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.25.2. IMMPassDeviceEvent::IMMPassDeviceEvent ═══ Although you can construct objects of this class, typically IMMDeviceHandler::dispatchHandlerEvent creates objects of this class from an object of the class IEventor another IMMPassDeviceEvent object. public: IMMPassDeviceEvent(const IEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.25.3. IMMPassDeviceEvent::isGainingUse ═══ Returns true if the device is gaining use of the hardware device and returns false if it is losing use of the device. public: Boolean isGainingUse() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.25.4. IMMPassDeviceEvent::~IMMPassDeviceEvent ═══ public: virtual ~IMMPassDeviceEvent(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.26. IMMPlayableDevice ═══ Description Derivation Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMPlayableDevice ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice Inherited by: IMMFileMedia IMMRemovableMedia ═══ Class Description - IMMPlayableDevice ═══ immplayd.hpp The IMMPlayableDevice is the base class for playable devices. It provides all of the common base functions for play, pause, stop, and similar functions. There are functions for querying and moving the current position and for turning on notification to observers of position changes. ═══ Public Functions - IMMPlayableDevice ═══ Cue Points addCuePoint removeCuePoint Notifications length position startPositionTracking stopPositionTracking Pause and Resume pause resume Play and Stop cueForPlayback play stop Protected Constructors ~IMMPlayableDevice Seek seek seekToEnd seekToStart stepFrame Inherited Members IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMPlayableDevice - Cue Points ═══ Use these members to add and remove cue points. ═══ IMMPlayableDevice - Notifications ═══ Use start and stop position tracking members to cause position change events to be generated. Use the length function to determine the amount of data and the position function to find out where you are in the data. ═══ IMMPlayableDevice - Pause and Resume ═══ Use these members to pause and resume playback. ═══ IMMPlayableDevice - Play and Stop ═══ Use these members to play or stop playback of the device. Use cueForPlayback to notify the device that you are going to start to play the device. ═══ IMMPlayableDevice - Protected Constructors ═══ Derived classes can use these functions to create objects of the IMMPlayableDevice class. ═══ IMMPlayableDevice - Seek ═══ Use these members to seek (move the current position) to either the beginning or the ending of the data or to a particular location in the data. Also, you can use the step frame member to move a single frame forward or backward. ═══ Protected Functions - IMMPlayableDevice ═══ Protected Constructors IMMPlayableDevice Inherited Members IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMPlayableDevice ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMPlayableDevice ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.26.1. IMMPlayableDevice::addCuePoint ═══ Sets a cue point at the given location. A cue point is a location or time position in a media device. When a device encounters (by playing or recording) a time position associated with a cue point, a IMMCuePointEvent is generated. public: virtual IMMPlayableDevice& addCuePoint( const IMMTime& time, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The time is an invalid time value. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.26.2. IMMPlayableDevice::cueForPlayback ═══ Cues the device for playback. This function does not have to be issued before playback; however, depending on the device, it might reduce the delay associated with the play function. For example, you might have a compact disc player that stops the spinning of the CD, when it isn't playing. This function might cause the CD to start spinning, thereby reducing the time before the CD starts the playback. public: virtual IMMPlayableDevice& cueForPlayback( CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There is no data present; possibly no │ │ │file is loaded or no media is in the │ │ │device. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.26.3. IMMPlayableDevice::IMMPlayableDevice ═══ Overload 1 protected: IMMPlayableDevice( const IString& deviceOrFileName, Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); A derived class can construct an IMMPlayableDevice from the following: deviceOrFileName You must specify what type of playable device you wish to construct. openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMPlayableDevice( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMPlayableDevice from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.26.4. IMMPlayableDevice::length ═══ Returns the total length in the current time format as an unsigned long. Use this value to create a time object in the current time format. public: unsigned long length(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.26.5. IMMPlayableDevice::pause ═══ If the device is playing, then it pauses the device. public: virtual IMMPlayableDevice& pause(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.26.6. IMMPlayableDevice::play ═══ Starts playing the device from the passed in start position to the passed in end position. If from is omitted, the device starts playing at the current position; if to is omitted, play stops at the end of the data. If resumeIfPaused is true and the device is paused, it resumes playback of the device; otherwise, it starts playback from the passed in start position. public: virtual IMMPlayableDevice& play( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), Boolean resumeIfPaused = true, CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │There is no data present; possibly no │ │ │file is loaded or no media is in the │ │ │device. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the data. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.26.7. IMMPlayableDevice::position ═══ Returns the current position in the current time format as an unsigned long. Use this value to create a time object in the current time format. public: unsigned long position(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.26.8. IMMPlayableDevice::removeCuePoint ═══ Removes the given cue point. A cue point is a location or time position in a media device. When a device encounters (by playing or recording) a time position associated with a cue point, a IMMCuePointEvent is generated. public: virtual IMMPlayableDevice& removeCuePoint( const IMMTime& time, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The time is an invalid value; possibly │ │ │the time value does not have a cue point│ │ │set at its location. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.26.9. IMMPlayableDevice::resume ═══ Resumes playback of the device from a paused state, if resume is true. The previous specified to parameter in the play function remains in effect. public: virtual IMMPlayableDevice& resume( Boolean resume = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.26.10. IMMPlayableDevice::seek ═══ Sets the current position of the device to the passed in position. public: virtual IMMPlayableDevice& seek( const IMMTime& to, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found; possibly no file │ │ │is currently loaded. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The current device does not support the │ │ │ability to seek. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The to position is out of range; │ │ │possibly it is beyond the end of the │ │ │media. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.26.11. IMMPlayableDevice::seekToEnd ═══ Moves the current position to the end of the data in the device. public: virtual IMMPlayableDevice& seekToEnd(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found; possibly no file │ │ │is currently loaded. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The current device does not support the │ │ │ability to seek. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.26.12. IMMPlayableDevice::seekToStart ═══ Moves the current position to the start of the data in the device. public: virtual IMMPlayableDevice& seekToStart( CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found; possibly no file │ │ │is currently loaded. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The current device does not support the │ │ │ability to seek. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.26.13. IMMPlayableDevice::startPositionTracking ═══ Starts position tracking. Position tracking causes a position change event to be generated every time the position of the media changes the passed in timeInterval. public: virtual IMMPlayableDevice& startPositionTracking( const IMMTime& timeInterval, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found; possibly no file │ │ │is currently loaded. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The timeInterval is out of range; │ │ │possibly the time value is past the │ │ │length of the data. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.26.14. IMMPlayableDevice::stepFrame ═══ Steps the play one or more time units forward or backward. public: virtual IMMPlayableDevice& stepFrame( unsigned long frames = 1, Boolean forward = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │This is an unsupported function; │ │ │possibly the device does not support the│ │ │ability to step the player. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.26.15. IMMPlayableDevice::stop ═══ Stops playback of the device. public: virtual IMMPlayableDevice& stop(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMREMOTE Sample: mmremote.cpp ═══ 1.26.16. IMMPlayableDevice::stopPositionTracking ═══ Stops position tracking. Position tracking causes a position change event to be generated every time the position of the media changes a given time amount. public: virtual IMMPlayableDevice& stopPositionTracking( CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.26.17. IMMPlayableDevice::~IMMPlayableDevice ═══ public: virtual ~IMMPlayableDevice(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.27. IMMPlayerPanel ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMPlayerPanel ═══ IBase │ IVBase │ INotifier │ IWindow │ IControl │ ICanvas │ IMultiCellCanvas │ IMMPlayerPanel Inherited by none. ═══ Class Description - IMMPlayerPanel ═══ immplypn.hpp IMMPlayerPanel is a device player panel that contains various buttons for controlling the device. It can be constructed directly or inherited, if finer device control or more functionality is needed. The user is presented with a generic interface, sufficient to control most multimedia devices. Shows a IMMPlayerPanel with a device type of digitial video Not only does it create the buttons and organize them, but it also makes the actual function call for the button. For example, the play button calls the play function on whatever device is currently set into the player panel. Also, there is some intelligent processing for disabling and enabling the buttons. For example, if the device is stopped, the stop and pause buttons are disabled. Or, if the device is playing and the user presses the pause button, the pause button stays pressed in the down (latched) state and the play button is unlatched. If the user then presses the pause button again, the pause button is unlatched and the play button is latched. The player panel automatically attaches an IMMPlayerPanelHandler object to provide default behavior. See IMMPlayerPanelHandler for more information on the default processing for each of the buttons and for how to change the default behavior. If you create the IMMPlayerPanel without passing in a device type, you get the default buttons, which are rewind, stop, pause, play, and fast forward. If you pass in overlay, videoDisc animation, or digitalVideo, you also get step forward and step backward buttons. IMMPlayerPanel is implemented using a set of buttons on an IMultiCellCanvas. The canvas is set up with all of the default behavior and styles of the multiple-cell canvas, and none of the rows or columns is made expandable. The buttons are added to the multiple-cell canvas in the following coordinates. play Cell 4,1 or 5,1 if step buttons are enabled pause Cell 3,1 or 4,1 if step buttons are enabled fastForward Cell 5,1 or 6,1 if step buttons are enabled rewind Cell 1,1 or 2,1 if step buttons are enabled stop Cell 2,1 or 3,1 if step buttons are enabled stepForward Cell 7,1 if step buttons are enabled stepBackward Cell 1,1 if step buttons are enabled By knowing where the buttons are, you can easily extend this class by using addToCell to add a vacant cell and to add a command handler to your object of this class to process the new buttons. Note: The identifiers for the animated buttons are the same as the identifiers for the bitmaps, which are defined in icconst.h. They are IC_FF, IC_REWIND, IC_PAUSE, IC_STOP, IC_STEPF, IC_STEPB, and IC_PLAY1. ═══ Public Functions - IMMPlayerPanel ═══ Buttons fastForwardButton pauseButton playButton rewindButton stepBackwardButton stepForwardButton stopButton Constructors IMMPlayerPanel ~IMMPlayerPanel Device deviceType playableDevice setPlayableDevice Inherited Members IMultiCellCanvas addToCell columnWidth convertToGUIStyle defaultCell defaultStyle disableDragLines disableGridLines enableDragLines enableGridLines hasDragLines hasGridLines isColumnExpandable isRowExpandable removeFromCell rowHeight setColumnWidth setDefaultCell setDefaultStyle setLayoutDistorted setRowHeight windowInCell ICanvas backgroundColor convertToGUIStyle defaultPushButton defaultStyle isTabStop matchForMnemonic origDefaultButtonHandle setDefaultStyle setLayoutDistorted IControl disableGroup disableTabStop enableGroup enableTabStop isGroup isTabStop IWindow activeColor applyBidiSettings asDebugInfo asString backgroundColor borderColor capturePointer characterSize childAt convertToGUIStyle defaultOrdering defaultPushButton desktopWindow disable disabledBackgroundColor disabledForegroundColor disableNotification disableUpdate dispatchRemainingHandlers enable enableNotification enableUpdate exceptionFunction font foregroundColor handle handleException handleWithParent handleWithPointerCaptured hasFocus hasPointerCaptured hide hideSourceEmphasis hiliteBackgroundColor hiliteForegroundColor id inactiveColor isAutoDeleteObject isAutoDestroyWindow isBidiSupported isEnabled isEnabledForNotification isFrameWindow isGroup isLayoutDistorted isShowing isTabStop isValid isVisible isWindowValid itemProvider layoutAdjustment mapPoint matchForMnemonic messageQueue minimumSize movePointerTo moveSizeTo moveTo nativeRect notifyObservers objectWindow owner parent parentSize pointerPosition position positionBehindSibling positionBehindSiblings positionOnSiblings postEvent presSpace rect releasePointer releasePresSpace resetActiveColor resetBackgroundColor resetBorderColor resetDisabledBackgroundColor resetDisabledForegroundColor resetFont resetForegroundColor resetHiliteBackgroundColor resetHiliteForegroundColor resetInactiveColor resetMinimumSize resetShadowColor sendEvent setActiveColor setAutoDeleteObject setAutoDestroyWindow setBackgroundColor setBorderColor setDefaultOrdering setDisabledBackgroundColor setDisabledForegroundColor setExceptionFunction setFocus setFont setForegroundColor setHiliteBackgroundColor setHiliteForegroundColor setId setInactiveColor setItemProvider setLayoutDistorted setMinimumSize setOwner setParent setShadowColor shadowColor show showSourceEmphasis size sizeTo topHandle visibleRectangle windowWithHandle windowWithOwner windowWithParent INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMPlayerPanel - Buttons ═══ Use these members to access the buttons on the player panel. ═══ IMMPlayerPanel - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMPlayerPanel - Device ═══ Use these members to query and set the device that the player panel is going to control and to query the type of device that is being controlled. ═══ IMMPlayerPanel - Hidden Members ═══ We have hidden these functions to prevent you from using them. ═══ Protected Functions - IMMPlayerPanel ═══ Inherited Members IMultiCellCanvas layout ICanvas areChildrenReversed calcMinimumSize fixupChildren layout layoutSize passEventToOwner registerCallbacks setLayoutSize unregisterCallbacks IWindow addHandler addObserver addRelatedHandleToWindowSet addToWindowSet calcMinimumSize color create defaultProcedure deleteIsInProcess dispatch extendedStyle isPrimaryWindow isRelatedHandle notificationHandler notifyObservers observerList passEventToOwner prepareForUse registerCallbacks removeAllObservers removeFromWindowSet removeHandler removeObserver removeRelatedHandleFromWindowSet resetColor setColor setExtendedStyle setNotificationHandler setStyle setWindowData startHandlingEventsFor style unregisterCallbacks windowULong windowUShort INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMPlayerPanel ═══ Inherited Members IMultiCellCanvas classDefaultStyle dragLines gridLines ICanvas classDefaultStyle IControl group tabStop IWindow activeColorId backgroundColorId borderColorId clipChildren clipSiblings clipToParent commandId deleteId disabled disabledBackgroundColorId disabledForegroundColorId enableId focusId fontId foregroundColorId hiliteBackgroundColorId hiliteForegroundColorId inactiveColorId noStyle positionId saveBits shadowColorId sizeId synchPaint systemCommandId visible visibleId ═══ Protected Data - IMMPlayerPanel ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.27.1. IMMPlayerPanel::deviceType ═══ Returns the type of device this player panel was created for. See the valid device types in IMMDevice. public: unsigned long deviceType(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.27.2. IMMPlayerPanel::fastForwardButton ═══ Returns a pointer to the fast forward animated button. public: IAnimatedButton* fastForwardButton() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.3. IMMPlayerPanel::IMMPlayerPanel ═══ You can construct objects of this class using the following parameters: identifier Window identifier of the player panel you construct. It is recommended that you:  Give unique identifiers to all windows in the same frame window. In the same window means that the frame window is the first frame in their parent window chain.  Give the client window a window identifier of IC_FRAME_CLIENT_ID. parent The parent window of the player panel you construct. You must specify a parent window. This constructor throws an IInvalidParameter exception if you pass an IWindow* of 0. The parent window is primarily used for visible relationships. owner The owner window of the player panel you construct. deviceType The type of device the player panel is going to control. The main use of this is to determine the type of buttons to be displayed on the player panel. Optional. initial The initial position and size of the player panel you construct. The initial position is the lower-left corner of the player panel relative to the lower-left corner of the parent window. Optional. style Use the styles provided by IMultiCellCanvas Style to specify the control's styles. Optional. public: IMMPlayerPanel( unsigned long identifier, IWindow* parent, IWindow* owner, unsigned long deviceType = IMMDevice::other, const IRectangle& initial = IRectangle ( ), const IMultiCellCanvas::Style& style = IMultiCellCanvas::defaultStyle ( )); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Presentation Manager: The window identifier is limited to the range 0 through 65535. The owner window is primarily used for routing notification events and unprocessed messages. The operating system also uses the owner window chain to inherit colors. Used in samples: Multimedia MMSTEREO Sample: mltcd.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.4. IMMPlayerPanel::pauseButton ═══ Returns a pointer to the pause animated button. public: IAnimatedButton* pauseButton() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.5. IMMPlayerPanel::playableDevice ═══ Returns a pointer to the IMMPlayableDevice the player is controlling. This allows the application to determine which device is set into the player panel. public: IMMPlayableDevice* playableDevice() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMSTEREO Sample: mltcd.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.6. IMMPlayerPanel::playButton ═══ Returns a pointer to the play animated button. public: IAnimatedButton* playButton() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMSTEREO Sample: mltcd.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.7. IMMPlayerPanel::rewindButton ═══ Returns a pointer to the rewind animated button. public: IAnimatedButton* rewindButton() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.8. IMMPlayerPanel::setPlayableDevice ═══ Sets a pointer to the IMMPlayableDevice that the player panel will control. This allows the player panel to control almost any device that the user wants. For example, you might want to control a digital video device. So, you would create an IMMDigitalVideo device and pass it on this call. When the user presses the player panel buttons, such as play or pause, these functions would act upon that IMMDigitalVideo device. public: IMMPlayerPanel& setPlayableDevice( IMMPlayableDevice* device); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMSTEREO Sample: mltcd.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.9. IMMPlayerPanel::stepBackwardButton ═══ Returns a pointer to the step backward animated button. public: IAnimatedButton* stepBackwardButton() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltvid.cpp ═══ 1.27.10. IMMPlayerPanel::stepForwardButton ═══ Returns a pointer to the step forward animated button. public: IAnimatedButton* stepForwardButton() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltvid.cpp ═══ 1.27.11. IMMPlayerPanel::stopButton ═══ Returns a pointer to the stop animated button. public: IAnimatedButton* stopButton() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.27.12. IMMPlayerPanel::~IMMPlayerPanel ═══ public: virtual ~IMMPlayerPanel(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.28. IMMPlayerPanelHandler ═══ Description Derivation Constructors Public Functions Protected Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMPlayerPanelHandler ═══ IBase │ IVBase │ IHandler │ ICommandHandler │ IMMPlayerPanelHandler Inherited by none. ═══ Class Description - IMMPlayerPanelHandler ═══ immplyhd.hpp The IMMPlayerPanelHandler class processes the different command events for the player panel. You can override this class to provide more functionality or more precise control of the device. For example, you might call playFast instead of seekToEnd when the user presses the fast forward button for digital video. To do this, just subclass this class and implement your own processing for fast forward. The return value from the virtual functions specifies whether the command event is passed on for additional processing, as follows: true The command event requires no additional processing. Do not pass it to another handler. false The command event requires additional processing. Pass the command event on, as follows:  If there is another handler for the window, pass the command event on to the next handler.  If this is the last handler for the window, call IWindow::defaultProcedure to process the command event. ═══ Public Functions - IMMPlayerPanelHandler ═══ Constructors IMMPlayerPanelHandler ~IMMPlayerPanelHandler Inherited Members IHandler asDebugInfo asString disable enable handleEventsFor isEnabled stopHandlingEventsFor IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMPlayerPanelHandler - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMPlayerPanelHandler - Event Dispatching ═══ Event dispatching members evaluate an event to determine if it is appropriate for this handler object to process. If it is, this function calls the virtual function used to process the event. ═══ IMMPlayerPanelHandler - Event Processing ═══ Event processing members are invoked in response to the user pressing a button on the player panel, or they are invoked by the user of this class. These can be overridden to provide more functionality or more precise control of the device. All of these methods can be thought of as button presses, even though they might have been invoked directly. ═══ Protected Functions - IMMPlayerPanelHandler ═══ Event Dispatching command Event Processing fastForward pause play rewind stepBackward stepForward stop Inherited Members ICommandHandler command dispatchHandlerEvent systemCommand IHandler defaultProcedure dispatchHandlerEvent ═══ Protected Data - IMMPlayerPanelHandler ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.28.1. IMMPlayerPanelHandler::command ═══ Calls the virtual functions to process a command event for a player panel. protected: virtual Boolean command(ICommandEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltvid.cpp ═══ 1.28.2. IMMPlayerPanelHandler::fastForward ═══ Gets called when the user presses the fast forward button. The default action is to call seekToEndon the device. It also unlatches the play and pause buttons and disables the stop and pause buttons. protected: virtual Boolean fastForward(const IMMPlayerPanel& panel); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be a device set for the │ │ │player panel. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.28.3. IMMPlayerPanelHandler::IMMPlayerPanelHandler ═══ The User Interface Class Library provides only the default constructor for you to create a player panel handler object. public: IMMPlayerPanelHandler(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.28.4. IMMPlayerPanelHandler::pause ═══ Gets called when the user presses the pause button. The default action is to call pauseon the device. If the device is already paused, it calls resumeon the device and latches the play button. protected: virtual Boolean pause(const IMMPlayerPanel& panel); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be a device set for the │ │ │player panel. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.28.5. IMMPlayerPanelHandler::play ═══ Gets called when the user presses the play button. The default action is to call playon the device. It also unlatches the pause button and enables the stop and pause buttons. protected: virtual Boolean play(const IMMPlayerPanel& panel); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be a device set for the │ │ │player panel. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.28.6. IMMPlayerPanelHandler::rewind ═══ Gets called when the user presses the rewind button. The default action is to call seekToStarton the device. It also unlatches the play and pause buttons and disables the stop and pause buttons. protected: virtual Boolean rewind(const IMMPlayerPanel& panel); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be a device set for the │ │ │player panel. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.28.7. IMMPlayerPanelHandler::stepBackward ═══ Gets called when the user presses the step backward button. This is only possible when step is meaningful to the device, such as for video. The default action is to call stepFrameon the device. It also unlatches the play button. protected: virtual Boolean stepBackward(const IMMPlayerPanel& panel); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be a device set for the │ │ │player panel. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.28.8. IMMPlayerPanelHandler::stepForward ═══ Gets called when the user presses the step forward button. This is only possible when step is meaningful to the device, such as for video. The default action is to call stepFrameon the device. It also unlatches the play button. protected: virtual Boolean stepForward(const IMMPlayerPanel& panel); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be a device set for the │ │ │player panel. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.28.9. IMMPlayerPanelHandler::stop ═══ Gets called when the user presses the stop button. The default action is to call stopand seekToStarton the device. It also unlatches the play and pause buttons and disables the stop and pause buttons. protected: virtual Boolean stop(const IMMPlayerPanel& panel); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │There must be a device set for the │ │ │player panel. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.28.10. IMMPlayerPanelHandler::~IMMPlayerPanelHandler ═══ public: virtual ~IMMPlayerPanelHandler(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.29. IMMPositionChangeEvent ═══ Description Derivation Constructors Public Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMPositionChangeEvent ═══ IBase │ IVBase │ IEvent │ IMMPositionChangeEvent Inherited by none. ═══ Class Description - IMMPositionChangeEvent ═══ immevt.hpp The IMMPositionChangeEvent class is the class for position change events. They get generated when you start position tracking for a device and the position of the device changes. Use startPositionTracking to cause these events to be generated. ═══ Public Functions - IMMPositionChangeEvent ═══ Constructors IMMPositionChangeEvent ~IMMPositionChangeEvent Event Information device position userParameter Inherited Members IEvent controlHandle controlWindow dispatchingWindow eventId eventType handle operator = parameter1 parameter2 passToOwner result setControlHandle setDispatchingHandle setEventType setHandle setPassToOwner setResult window IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMPositionChangeEvent - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMPositionChangeEvent - Event Information ═══ Use these members to return the position, device and user parameter for the device that generated this event. ═══ Protected Data - IMMPositionChangeEvent ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.29.1. IMMPositionChangeEvent::device ═══ Returns a pointer to the device whose position is changing. public: IMMDevice* device() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.29.2. IMMPositionChangeEvent::IMMPositionChangeEvent ═══ Although you can construct objects of this class, typically IMMDeviceHandler::dispatchHandlerEvent creates objects of this class from an object of the class IEventor another IMMPositionChangeEvent object. public: IMMPositionChangeEvent(const IEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.29.3. IMMPositionChangeEvent::position ═══ Returns the position at the time the event was generated. public: IMMTime position() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.29.4. IMMPositionChangeEvent::userParameter ═══ Returns the user parameter that was set at the time of this event. See IMMDevice::setUserParameter for more information. public: unsigned short userParameter() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.29.5. IMMPositionChangeEvent::~IMMPositionChangeEvent ═══ public: virtual ~IMMPositionChangeEvent(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.30. IMMRecordable ═══ Description Derivation Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMRecordable ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMFileMedia │ IMMRecordable Inherited by: IMMConfigurableAudio ═══ Class Description - IMMRecordable ═══ immrecrd.hpp The IMMRecordable class is a base class and provides all of the common behavior for all recordable media devices. There are functions for cutting, copying, and pasting from a clipboard. Also, it includes delete, undo, and save functions. ═══ Public Functions - IMMRecordable ═══ Constructors ~IMMRecordable Editing canRedo canUndo copy cueForRecording cut deleteSelection paste record redo save saveAs undo Inherited Members IMMFileMedia filename isWriteable load loadOnThread IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMRecordable - Constructors ═══ Derived classes can use these members to create objects of this class. ═══ IMMRecordable - Editing ═══ Use these members to edit and record data by the device. ═══ IMMRecordable - Hidden Functions ═══ We have hidden these functions to prevent you from using them. ═══ Protected Functions - IMMRecordable ═══ Constructors IMMRecordable Inherited Members IMMFileMedia enableDataUpdate IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMRecordable ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMRecordable ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.30.1. IMMRecordable::canRedo ═══ Returns true if the device has any actions to be redone. public: Boolean canRedo() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.2. IMMRecordable::canUndo ═══ Returns true if the device has any actions that can be undone. public: Boolean canUndo() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.3. IMMRecordable::copy ═══ Copies data from the passed in start position to the passed in end position into the clipboard. If from is omitted, it uses the current position; if to is omitted, it uses the end of the data. The clipboard is cleared before the copy occurs. public: virtual IMMRecordable& copy( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the data. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.4. IMMRecordable::cueForRecording ═══ Cues the device for recording. This function causes any up front work that can occur to occur, thereby making the start of recording quick. This function does not have to be issued before recording; however, depending on the device, it might reduce the delay associated with the record function. For example, a sound card might have to clear some internal buffers before it can start recording from a microphone. So this function would clear out those internal buffers for the sound card. public: virtual IMMRecordable& cueForRecording( CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.5. IMMRecordable::cut ═══ Cuts the data from the passed in start position to the passed in end position into the clipboard. If data is already in the clipboard, it is overwritten. If from is omitted, it will use the current position; if to is omitted, it uses the end of the data. public: virtual IMMRecordable& cut( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the data. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.6. IMMRecordable::deleteSelection ═══ Deletes data from the passed in start position to the passed in end position. If from is omitted, it uses the current position; if to is omitted, it uses the end of the data. public: virtual IMMRecordable& deleteSelection( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the data. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.7. IMMRecordable::IMMRecordable ═══ Derived classes can use these members to create objects of this class. Overload 1 protected: IMMRecordable( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMRecordable from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMRecordable( const IString& deviceName, Boolean openNow, unsigned long instance, Boolean openShareable); A derived class can construct an IMMRecordable from the following: deviceName You must specify what device you wish to construct. openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.30.8. IMMRecordable::paste ═══ Replaces the data with data from the clipboard, from the passed in start position to the passed in end position. If neither from nor to is specified, it inserts the data at the current position. If from is omitted, it uses the start of the buffer; if to is omitted, it uses the end of the audio data in the buffer. If convert is true, it causes the audio data in the clipboard to be converted to the current audio format before being pasted; otherwise, no conversion occurs. If you are pasting audio data, and audio format for data in the clipboard is incompatible with this device's audio format, then convert should be set to true; otherwise, an exception occurs. public: virtual IMMRecordable& paste( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), Boolean convert = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid from position; possibly the from│ │ │position is greater than the end │ │ │position or the from position is greater│ │ │than the to position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid to position; possibly if the to │ │ │position is greater than the length of │ │ │the data. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The disk or buffer is full. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │There is insufficient memory to perform │ │ │the operation requested. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The clipboard format is not valid. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The clipboard cannot be opened. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │No recognizable information is in the │ │ │clipboard. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Unable to convert audio format in the │ │ │clipboard to the destination audio │ │ │format. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.9. IMMRecordable::record ═══ Starts recording at the begin location till it reaches the end location. If the end location is not specified, recording continues until a pause or stop occurs. If the begin location is not specified, recording starts at the current location. It is recommended that you temporarily acquire the device exclusively while you are recording; otherwise, the recording can become inactive if another device requests access to the device. public: virtual IMMRecordable& record( Boolean insert = true, const IMMTime& begin = IMMTime ( ), const IMMTime& end = IMMTime ( ), Boolean resumeIfPaused = true, CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid begin position; possibly the │ │ │begin position is greater than the │ │ │length of the data or the begin position│ │ │is greater than the end position. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Invalid end position; possibly if the │ │ │end position is greater than the length │ │ │of the data. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The disk or buffer is full. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.30.10. IMMRecordable::redo ═══ Redoes the record, cut, paste, or delete operation most recently undone by undo. The position is at the beginning of the file after a redo. You can redo up to the last save, which causes any previous actions to be cleared and cannot be redone. Not all devices support his function. public: virtual IMMRecordable& redo(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Cannot redo. Redo is not possible in │ │ │the current state; possibly there are no│ │ │actions to be redone (that is, the file │ │ │was just saved). │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.11. IMMRecordable::save ═══ Saves the current file. public: virtual IMMRecordable& save(CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found; possibly the │ │ │current data does not have a name. Use │ │ │saveAs with the file name. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Save to a read-only file; possibly the │ │ │currently loaded file was loaded as │ │ │read-only. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The disk or buffer is full. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │There is insufficient memory to perform │ │ │the save operation. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.30.12. IMMRecordable::saveAs ═══ Saves the current file as a different file. Any subsequent calls to the save function will overwrite this file. public: virtual IMMRecordable& saveAs( const IString& filename, CallType call = nowait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The file is not found; possibly the file│ │ │name string does not contain a valid │ │ │file name. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Save to a read-only file; possibly if │ │ │the currently loaded file was loaded as │ │ │read-only. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The disk or buffer is full. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │There is insufficient memory to perform │ │ │the save operation. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.13. IMMRecordable::undo ═══ Undoes the operation most recently performed by cut, record, paste, or delete. After an undo, the position is at the beginning of the media. You can undo up to the last save, which causes any previous actions to be cleared and cannot be undone. Not all devices support his function. public: virtual IMMRecordable& undo(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │Cannot undo. Undo is not possible in │ │ │the current state; possibly there are no│ │ │actions to be undone (that is, the file │ │ │is in the state where the last change │ │ │was made). │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.30.14. IMMRecordable::~IMMRecordable ═══ public: virtual ~IMMRecordable(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.31. IMMRemovableMedia ═══ Description Derivation Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMRemovableMedia ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMRemovableMedia Inherited by: IMMAudioCD IMMCDXA ═══ Class Description - IMMRemovableMedia ═══ immremed.hpp The IMMRemovableMedia provides all of the common behavior for all removable media devices. The main purpose of this class is to provide functions for devices that have physical media that is replaceable. Some examples of devices that might inherit from this are videoDiscs, CD players, cassette players, and VCRS. There are functions for loading or ejecting media, determining if media is present, and locking and unlocking a door on the device. Derived classes can use the virtual functions mediaLoaded and mediaUnloaded for determining if someone is changing the media. ═══ Public Functions - IMMRemovableMedia ═══ Constructors ~IMMRemovableMedia Door and Presence closeDoor isMediaPresent lockDoor openDoor unlockDoor Inherited Members IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMRemovableMedia - Constructors ═══ Derived classes can use these members to create objects of this class. ═══ IMMRemovableMedia - Door and Presence ═══ Use these members to open, close, lock, and unlock the door on the removable media device. ═══ IMMRemovableMedia - Media Functions ═══ These functions are used for the device class to be notified whenever the media contents have changed. ═══ IMMRemovableMedia - Notification Event Descriptions ═══ This INotificationId string is used for notifications that IMMRemovableMedia provides to its observers. ═══ Protected Functions - IMMRemovableMedia ═══ Constructors IMMRemovableMedia Inherited Members IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMRemovableMedia ═══ Notification Event Descriptions mediaLoadedId Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMRemovableMedia ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.31.1. IMMRemovableMedia::closeDoor ═══ Retracts the tray and closes the door, if possible. public: virtual IMMRemovableMedia& closeDoor(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.31.2. IMMRemovableMedia::IMMRemovableMedia ═══ Derived classes can use these members to create objects of this class. Overload 1 protected: IMMRemovableMedia( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMRemovableMedia from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMRemovableMedia( const IString& deviceName, Boolean openNow, unsigned long instance, Boolean openShareable); A derived class can construct an IMMRemovableMedia from the following: deviceName You must specify what device you wish to construct. openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.31.3. IMMRemovableMedia::isMediaPresent ═══ Returns true if media is inserted in the device; otherwise, it returns false. public: Boolean isMediaPresent(CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.31.4. IMMRemovableMedia::lockDoor ═══ Locks the media cover on the device, if any. This disables manual ejection of the media from the device. public: virtual IMMRemovableMedia& lockDoor( Boolean lock = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.31.5. IMMRemovableMedia::mediaLoadedId ═══ Notification identifier provided to observers when the current media-loaded state changes. IMMRemovableMedia provides a Boolean value in the eventData field of the INotificationEvent. This value will be true if the media is loaded and false, if the media is unloaded. public: static const INotificationId mediaLoadedId; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.31.6. IMMRemovableMedia::openDoor ═══ Opens the door and ejects the tray, if possible. public: virtual IMMRemovableMedia& openDoor( Boolean open = true, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.31.7. IMMRemovableMedia::unlockDoor ═══ Unlocks the media cover on the device, if any. This enables manual ejection of the media from the device. public: virtual IMMRemovableMedia& unlockDoor(CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.31.8. IMMRemovableMedia::~IMMRemovableMedia ═══ public: virtual ~IMMRemovableMedia(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.32. IMMRemovableMediaHandler ═══ Description Derivation Constructors Public Functions Protected Functions Protected Data To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMRemovableMediaHandler ═══ IBase │ IVBase │ IHandler │ IMMDeviceHandler │ IMMRemovableMediaHandler Inherited by none. ═══ Class Description - IMMRemovableMediaHandler ═══ immremhd.hpp The IMMRemovableMediaHandler class is the base handler class for removable devices. This class provides the ability for derived classes to implement their own processing when media is loaded or unloaded from a device. For example, if the user ejects the CD from a CD player, then you might want to gray out the controls of the CD player until the user inserts a new CD. ═══ Public Functions - IMMRemovableMediaHandler ═══ Constructors IMMRemovableMediaHandler ~IMMRemovableMediaHandler Device Attachment handleEventsFor Event Processing passDevice Media Loading mediaLoaded mediaUnloaded Inherited Members IMMDeviceHandler cuePoint deviceEvent handleEventsFor passDevice positionChange stopHandlingEventsFor IHandler asDebugInfo asString disable enable handleEventsFor isEnabled stopHandlingEventsFor IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMRemovableMediaHandler - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMRemovableMediaHandler - Device Attachment ═══ Use these members to attach the handler object to or from a given device. ═══ IMMRemovableMediaHandler - Event Processing ═══ Derived classes must supply these functions to process a pass device event. ═══ IMMRemovableMediaHandler - Hidden Members ═══ We have hidden these functions to prevent you from using them. ═══ IMMRemovableMediaHandler - Media Loading ═══ Use these members to provide processing when media is either loaded or unloaded from the device. They are implemented by derived classes. ═══ Protected Functions - IMMRemovableMediaHandler ═══ Inherited Members IMMDeviceHandler dispatchHandlerEvent IHandler defaultProcedure dispatchHandlerEvent ═══ Protected Data - IMMRemovableMediaHandler ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.32.1. IMMRemovableMediaHandler::handleEventsFor ═══ Attaches the handler to the specified IMMDevice object. This is overridden to force attachment of this handler to only one device. public: virtual IMMRemovableMediaHandler& handleEventsFor( IMMDevice* device); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.32.2. IMMRemovableMediaHandler::IMMRemovableMediaHandler ═══ Creates IMMRemovableMediaHandler objects. public: IMMRemovableMediaHandler(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.32.3. IMMRemovableMediaHandler::mediaLoaded ═══ Called whenever media is loaded into the device. public: virtual IMMRemovableMediaHandler& mediaLoaded(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.32.4. IMMRemovableMediaHandler::mediaUnloaded ═══ Called whenever media is unloaded from the device. public: virtual IMMRemovableMediaHandler& mediaUnloaded(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.32.5. IMMRemovableMediaHandler::passDevice ═══ Processes pass device events. It is implemented by derived classes. public: virtual Boolean passDevice(const IMMPassDeviceEvent& event); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.32.6. IMMRemovableMediaHandler::~IMMRemovableMediaHandler ═══ public: virtual ~IMMRemovableMediaHandler(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.33. IMMSequencer ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMSequencer ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMFileMedia │ IMMSequencer Inherited by none. ═══ Class Description - IMMSequencer ═══ immsequ.hpp The IMMSequencer class is the base class for MIDI (Musical Instrument Digital Interface) playback. MIDI is a standard specification for playing back music from a series of commands, rather than from actual audio data. The commands represent musical events, such as turning a note on and off, as well as timing mechanisms for specifying the duration of the note's sound. ═══ Public Functions - IMMSequencer ═══ Constructors IMMSequencer ~IMMSequencer Inherited Members IMMFileMedia filename isWriteable load loadOnThread IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMSequencer - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMSequencer - Hidden Functions ═══ We have hidden these functions to prevent you from using them. ═══ IMMSequencer - Implementation ═══ These members check if the passed in string is in the correct format to open the current device. ═══ Protected Functions - IMMSequencer ═══ Constructors IMMSequencer Implementation isOpenStringValid Inherited Members IMMFileMedia enableDataUpdate IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMSequencer ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMSequencer ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.33.1. IMMSequencer::IMMSequencer ═══ You can construct and destruct objects of this class. Overload 1 public: IMMSequencer( Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); You can construct an IMMSequencer from the following: openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 protected: IMMSequencer( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMSequencer from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.33.2. IMMSequencer::isOpenStringValid ═══ Returns true if the passed in open string is valid for this device. protected: virtual Boolean isOpenStringValid( const IString& deviceName) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.33.3. IMMSequencer::~IMMSequencer ═══ public: virtual ~IMMSequencer(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.34. IMMSpeed ═══ Description Derivation Constructors Public Functions Protected Data Nested Types To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMSpeed ═══ IBase │ IVBase │ IMMSpeed Inherited by none. ═══ Class Description - IMMSpeed ═══ immspeed.hpp The IMMSpeed class provides the speed functions in frames-per-second and as a percentage. The percentage value refers to a percent of the maximum speed for the device. A case for when you might use a percentage follows. You currently are playing video at the device's fastest rate, 100 percent. You want to cut down that playback to only 60 percent of what it currently is playing. To do this, create an IMMSpeed(60) and pass it to the set speed function. If you want the video to playback at specific frames-per-second value, use the frames-per-second format. ═══ Public Functions - IMMSpeed ═══ Constructors IMMSpeed ~IMMSpeed Format format speed Inherited Members IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMSpeed - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMSpeed - Format ═══ Use these members to specify the speed as a percentage or in frames-per-second. These members return the current speed format and value. ═══ Protected Data - IMMSpeed ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.34.1. IMMSpeed::format ═══ Returns the current speed format. This is either in frames-per-second or percentage. public: Format format() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.34.2. IMMSpeed::IMMSpeed ═══ You can construct and destruct objects of this class. Overload 1 public: IMMSpeed(unsigned long percent = 100); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMSpeed(Format format, unsigned long speed); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.34.3. IMMSpeed::speed ═══ Returns the speed value as either a percentage or in frames-per-second. public: virtual unsigned long speed() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.34.4. IMMSpeed::~IMMSpeed ═══ public: virtual ~IMMSpeed(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ Nested Types - IMMSpeed ═══ Enumerations Format ═══ Enums - Format ═══ enum Format { percentage=3, framesPerSecond }; Enumeration for specifying the way the speed is determined. ═══ 1.35. IMMTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Nested Types Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMTime ═══ IBase │ IVBase │ IMMTime Inherited by: IMMHourMinSecFrameTime IMMHourMinSecTime IMMMillisecondTime IMMMinSecFrameTime IMMTrackMinSecFrameTime ═══ Class Description - IMMTime ═══ immtime.hpp The IMMTime base device time class provides behavior common to all device times. IMMTime is the standard time and media position format supported by all of the multimedia devices. This time unit is 1/3000 second, or 333 microseconds. Most time values can be represented as unsigned long values. This class also provides function for converting an IMMTime value to an unsigned long value. All time values are based on 4 bytes. Because each time class is in different units, the maximum time value that each can contain is different. ═══ Public Functions - IMMTime ═══ Attributes hours hundredths minutes seconds thousandths Constructors IMMTime operator = ~IMMTime Conversions asMMTime operator unsigned long Diagnostics asString isValid Operators operator != operator + operator += operator - operator -= operator < operator <= operator == operator > operator >= Ordinal ordinal setTimeToOrdinal Inherited Members IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMTime - Attributes ═══ Use these members to parse the time into normal time values, for example, hours, minutes, and seconds. ═══ IMMTime - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMTime - Conversions ═══ Use these members to cast the time to an unsigned long or an unsigned long that is in the IMMTime format. ═══ IMMTime - Diagnostics ═══ Use these members to return the time as a string and allow you to determine if the time is valid. ═══ IMMTime - Format ═══ Defines the time format enumeration. This is used by devices to specify what type of time format it will use. ═══ IMMTime - Implementation ═══ These members set the validity of the time and change the time to a new value. ═══ IMMTime - Operators ═══ Use these operators to perform different mathematical operations on this time object. ═══ IMMTime - Ordinal ═══ Use these member to indicate generic positions. A time object returns an ordinal number, which represents the time at some particular granularity. This is useful for something that allows seeking and displays position, such as a slider. Because sliders generally do not process time values, use an ordinal number to establish the range of slider values. Ordinal numbers can be mathematically manipulated and converted back to time values, if necessary. Note: Some time values are difficult to represent as an ordinal value, such as IMMTrackMinSecFrameTime. Such a time object produces ordinal numbers that are dependent on unknown information, such as the table of contents of a CD. Some time classes might not be able to correctly implement setTimeToOrdinal. ═══ Protected Functions - IMMTime ═══ Implementation setMMTime setValid ═══ Public Data - IMMTime ═══ Constructors defaultTime ═══ Protected Data - IMMTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.35.1. IMMTime::asMMTime ═══ Returns this time value as an unsigned long that can be used to create an IMMTime. By default, this returns this time value. Derived classes should override this function to provide a way to be converted to an IMMTime value. public: virtual unsigned long asMMTime() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.2. IMMTime::asString ═══ Returns the time value as a string formatted as HH:MM:SS.MMM. public: virtual IString asString() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.3. IMMTime::defaultTime ═══ Used to denote a default time. public: static const unsigned long defaultTime; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.4. IMMTime::hours ═══ Returns the hours component of the time. public: virtual unsigned long hours() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.35.5. IMMTime::hundredths ═══ Returns the millisecond component of the time rounded to the nearest hundredth. public: virtual unsigned long hundredths() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.6. IMMTime::IMMTime ═══ You can construct and destruct objects of this class. Overload 1 public: IMMTime(unsigned long time = defaultTime); You can construct an IMMTime from: time A time value where each unit is equal to 1/3000 second. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp Overload 2 public: IMMTime(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltvid.cpp ═══ 1.35.7. IMMTime::isValid ═══ Returns true if the time value is valid. public: virtual Boolean isValid() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.8. IMMTime::minutes ═══ Returns the minutes component of the time. This is in the range of 0 to 59. public: virtual unsigned long minutes() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.35.9. IMMTime::operator != ═══ Returns true if this time is not equal to the passed in time. public: Boolean operator !=(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.10. IMMTime::operator + ═══ Returns the sum of this time and the passed in time. public: IMMTime operator +(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.11. IMMTime::operator += ═══ Adds the passed in time from this time object public: IMMTime& operator +=(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.12. IMMTime::operator - ═══ Returns the result of this time minus the passed in time. public: IMMTime operator -(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.13. IMMTime::operator -= ═══ Subtracts the passed in time from this time object. public: IMMTime& operator -=(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.14. IMMTime::operator < ═══ Returns true if this time is less than the passed in time. public: Boolean operator <(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.15. IMMTime::operator <= ═══ Returns true if this time is less than or equal to the passed in time. public: Boolean operator <=(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.16. IMMTime::operator = ═══ Sets the time to be equal to the passed in time. public: IMMTime& operator =(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time was invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.17. IMMTime::operator == ═══ Returns true if this time is equal to the passed in time. public: Boolean operator ==(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.18. IMMTime::operator > ═══ Returns true if this time is greater than the passed in time. public: Boolean operator >(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.19. IMMTime::operator >= ═══ Returns true if this time is greater than or equal to the passed in time. public: Boolean operator >=(const IMMTime& time) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.35.20. IMMTime::operator unsigned long ═══ Returns the time as a unsigned long where each time unit is equal to 1/3000 of a second. public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.21. IMMTime::ordinal ═══ Returns an ordinal number in milliseconds. By default, this is the time converted to milliseconds. Not all derived classes can return milliseconds. public: virtual unsigned long ordinal() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.22. IMMTime::seconds ═══ Returns the seconds component of the time. This is in the range of 0 to 59. public: virtual unsigned long seconds() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltvid.cpp Multimedia MMSTEREO Sample: mltwave.cpp ═══ 1.35.23. IMMTime::setMMTime ═══ Sets the current set time to the new value. The time unit for this value is 1/3000 second. protected: IMMTime& setMMTime(unsigned long newTime); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.24. IMMTime::setTimeToOrdinal ═══ Sets the time object to the value represented by the ordinal number in milliseconds. public: virtual IMMTime& setTimeToOrdinal(unsigned long ordinal); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.25. IMMTime::setValid ═══ Sets the validity of the current time value. With setValid, derived classes can change the validity of the time value. Validity means that this time object represents a valid time. protected: IMMTime& setValid(Boolean Valid = true); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.26. IMMTime::thousandths ═══ Returns the millisecond component of the time rounded to the nearest thousandth. public: virtual unsigned long thousandths() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.35.27. IMMTime::~IMMTime ═══ public: virtual ~IMMTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ Nested Types - IMMTime ═══ Enumerations Format ═══ Enums - Format ═══ enum Format { milliseconds=1, mmTime, minSecFrame=5, trackMinSecFrame, frames=8, hourMinSec, bytes=11, samples, hourMinSecFrame, mm24FramesPerSecond, mm25FramesPerSecond, mm30FramesPerSecond, mm30FramesPerSecondDrop }; Enumeration which denotes the different allowable time formats. Valid values are: milliseconds Represents the 1/1000 of a second time format. mmTime Represents the 1/3000 of a second time format. minSecFrame Represents the time format based on the 75-frames-per-second CD digital audio standard (another name for this is Red Book time format). trackMinSecFrame Represents the tracks-minutes-seconds-frames time format based on the 75-frames-per-second CD digital audio standard. This format is used primarily by CD audio devices. frames Represents the digital video frames time, where a number corresponds to a frame number. hourMinSec Represents the hours-minutes-seconds time format commonly used by videoDisc and digital video players. bytes Represents the wave audio bytes time, where a number corresponds to a byte number. samples Represents the wave audio samples time, where a number corresponds to a sample number. hourMinSecFrame Represents the hours-minutes-seconds-frames time commonly used by videoDisc and digital video players. mm24FramesPerSecond Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 24 frames-per-second. mm25FramesPerSecond Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 25 frames-per-second. mm30FramesPerSecond Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 30 frames-per-second. 30FramesPerSecondDrop Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 30 frames-per-second. ═══ 1.36. IMMTrackMinSecFrameTime ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMTrackMinSecFrameTime ═══ IBase │ IVBase │ IMMTime │ IMMTrackMinSecFrameTime Inherited by none. ═══ Class Description - IMMTrackMinSecFrameTime ═══ immttime.hpp The IMMTrackMinSecFrameTime data type class represents the tracks-minutes-seconds-frames (TTMMSSFF) time format. This format is used primarily by compact disc audio devices. ═══ Public Functions - IMMTrackMinSecFrameTime ═══ Attributes frames minutes seconds track Constructors IMMTrackMinSecFrameTime operator = ~IMMTrackMinSecFrameTime Conversion operator unsigned long Diagnostics asString Operators operator + operator += operator - operator -= Inherited Members IMMTime asMMTime asString hours hundredths isValid minutes operator != operator + operator += operator - operator -= operator < operator <= operator = operator == operator > operator >= operator unsigned long ordinal seconds setTimeToOrdinal thousandths IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMTrackMinSecFrameTime - Attributes ═══ Use these members to parse the data into tracks, seconds, minutes, and frames. ═══ IMMTrackMinSecFrameTime - Constructors ═══ You can construct, copy and destruct objects of this class. ═══ IMMTrackMinSecFrameTime - Conversion ═══ Use these members to cast the time to an unsigned long. ═══ IMMTrackMinSecFrameTime - Diagnostics ═══ Use these members to return the time as a string. ═══ IMMTrackMinSecFrameTime - Operators ═══ Use these operators to perform mathematical operations on time objects. ═══ Protected Functions - IMMTrackMinSecFrameTime ═══ Inherited Members IMMTime setMMTime setValid ═══ Public Data - IMMTrackMinSecFrameTime ═══ Inherited Members IMMTime defaultTime ═══ Protected Data - IMMTrackMinSecFrameTime ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.36.1. IMMTrackMinSecFrameTime::asString ═══ Returns the time value as a string formatted as TT MM:SS.FF. public: virtual IString asString() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.36.2. IMMTrackMinSecFrameTime::frames ═══ Returns the frames component of the time. public: virtual unsigned long frames() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.36.3. IMMTrackMinSecFrameTime::IMMTrackMinSecFrameTime ═══ You can construct, copy and destruct objects of this class. Overload 1 public: IMMTrackMinSecFrameTime( IMMAudioCDContents& contents, unsigned long track, unsigned long minutes, unsigned long seconds, unsigned long frames); You can construct an IMMHourMinSecFrameTime from: contents A table of contents for the compact disc that you want to create a time for. track A track number. minutes The number of minutes. seconds The number of seconds. frames The number of frames. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 2 public: IMMTrackMinSecFrameTime( const IMMTrackMinSecFrameTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Overload 3 public: IMMTrackMinSecFrameTime( IMMAudioCDContents& contents, unsigned long value); You can construct an IMMTrackMinSecFrameTime from: contents A table of contents for the compact disc that you want to create a time for. value A time value where: 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the track Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in sample: Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.36.4. IMMTrackMinSecFrameTime::minutes ═══ Returns the minutes component of the time. This is in the range of 0 to 59. public: virtual unsigned long minutes() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.36.5. IMMTrackMinSecFrameTime::operator + ═══ Returns the sum of the current set time and the passed in time. public: IMMTrackMinSecFrameTime operator +(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.36.6. IMMTrackMinSecFrameTime::operator += ═══ Adds the time to the current set time. public: IMMTrackMinSecFrameTime& operator +=(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.36.7. IMMTrackMinSecFrameTime::operator - ═══ Returns the result of the current set time minus the passed in time. public: IMMTrackMinSecFrameTime operator -(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.36.8. IMMTrackMinSecFrameTime::operator -= ═══ Subtracts the time from the current set time. public: IMMTrackMinSecFrameTime& operator -=(const IMMTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid or this │ │ │time object is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.36.9. IMMTrackMinSecFrameTime::operator = ═══ Sets the time to be equal to the passed in time. public: IMMTrackMinSecFrameTime& operator =( const IMMTrackMinSecFrameTime& time); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IInvalidRequest │The passed in time is invalid. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.36.10. IMMTrackMinSecFrameTime::operator unsigned long ═══ Returns the time as a unsigned long in the following format (FFSSMMTT): 1. 1st byte is the frames 2. 2nd byte is the seconds 3. 3rd byte is the minutes 4. 4th byte is the tracks This value is based on the current table of contents. public: virtual operator unsigned long() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.36.11. IMMTrackMinSecFrameTime::seconds ═══ Returns the seconds component of the time. This is in the range of 0 to 59. public: virtual unsigned long seconds() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.36.12. IMMTrackMinSecFrameTime::track ═══ Returns the track component of the time. public: virtual unsigned long track() const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mltcd.cpp ═══ 1.36.13. IMMTrackMinSecFrameTime::~IMMTrackMinSecFrameTime ═══ public: virtual ~IMMTrackMinSecFrameTime(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.37. IMMWaveAudio ═══ Description Derivation Constructors Public Functions Protected Functions Public Data Protected Data Public Data includes Styles and Notification IDs if they exist. To close all the panels in a chapter, double click on this panel's system menu. ═══ Derivation - IMMWaveAudio ═══ IBase │ IVBase │ INotifier │ IStandardNotifier │ IMMDevice │ IMMPlayableDevice │ IMMFileMedia │ IMMRecordable │ IMMConfigurableAudio │ IMMWaveAudio Inherited by none. ═══ Class Description - IMMWaveAudio ═══ immwave.hpp The IMMWaveAudio class provides recording and playing of sound files. The sound files are stored in a waveform format. Not only can you use the inherited functions, such as play, pause, setFormat, you can also use this class for cutting, copying, and pasting to and from an audio buffer. ═══ Public Functions - IMMWaveAudio ═══ Buffers copyFromBuffer copyToBuffer cutCopyBufferSize cutToBuffer pasteFromBuffer pasteToBuffer supportsWaveFormat Constructors IMMWaveAudio ~IMMWaveAudio Inherited Members IMMConfigurableAudio bitsPerSample blockAlignment bytesPerSecond channels format samplesPerSecond setBitsPerSample setBlockAlignment setBytesPerSecond setChannels setFormat setSamplesPerSecond IMMRecordable canRedo canUndo copy cueForRecording cut deleteSelection paste record redo save saveAs undo IMMFileMedia filename isWriteable load loadOnThread IMMPlayableDevice addCuePoint cueForPlayback length pause play position removeCuePoint resume seek seekToEnd seekToStart startPositionTracking stepFrame stop stopPositionTracking IMMDevice acquire aliasName close connectedDeviceId deletePendingEvents description deviceId deviceName deviceType disableAudio disableConnector enableAudio enableConnector isAcquired isAudioEnabled isCloseOnDestroy isConnectionSupported isConnectorEnabled isOpen mode open openOnThread prerollTime prerollType release requiresFiles setCloseOnDestroy setSpeedFormat setTimeFormat setVolume speedFormat supportsAudio supportsCommand supportsDigitalTransfer supportsDisableEject supportsEject supportsPlay supportsRecord supportsRecordInsertion supportsSave supportsStreaming supportsVideo supportsVolumeAdjustment timeFormat volume IStandardNotifier disableNotification enableNotification isEnabledForNotification notifyObservers operator = INotifier disableNotification enableNotification isEnabledForNotification notifyObservers IVBase asDebugInfo asString IBase asDebugInfo asString messageFile messageText setMessageFile version ═══ IMMWaveAudio - Buffers ═══ Use these members to edit the audio using buffers and setting attributes for the current audio. ═══ IMMWaveAudio - Constructors ═══ You can construct and destruct objects of this class. ═══ IMMWaveAudio - Hidden Functions ═══ We have hidden these functions to prevent you from using them. ═══ IMMWaveAudio - Implementation ═══ These members check if the passed in string is in the correct format to open the current device. ═══ Protected Functions - IMMWaveAudio ═══ Constructors IMMWaveAudio Implementation isOpenStringValid Inherited Members IMMConfigurableAudio translateAudioFlag IMMFileMedia enableDataUpdate IMMDevice deviceWindow isOpenStringValid itemCapability itemStatus lastError open openOnThread openStatus sendCommand setLastError setOpenStatus setPassDeviceRequested setUserParameter userParameter wasPassDeviceRequested IStandardNotifier addObserver notifyObservers observerList removeAllObservers removeObserver INotifier addObserver notifyObservers observerList removeAllObservers removeObserver ═══ Public Data - IMMWaveAudio ═══ Inherited Members IMMDevice allDevices ampMixer animation audioCD audioTape cdxa commandNotifyId cuePointId dat deviceEventId digitalVideo headphone microphone monitor other overlay passDeviceId positionChangeId sequencer speaker videoDisc videoTape waveAudio IStandardNotifier deleteId ═══ Protected Data - IMMWaveAudio ═══ Inherited Members IBase recoverable unrecoverable ═══ 1.37.1. IMMWaveAudio::copyFromBuffer ═══ Copies all of the audio data from the audio buffer to the current location. public: virtual IMMWaveAudio& copyFromBuffer( const IMMAudioBuffer& audioBuffer, CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.37.2. IMMWaveAudio::copyToBuffer ═══ Copies audio data into the audio buffer from the passed in begin position to the passed in end position. If from is omitted, it uses the current position; if to is omitted, it uses the end of the audio data. public: virtual IMMWaveAudio& copyToBuffer( IMMAudioBuffer& audioBuffer, const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The buffer is too small to hold that │ │ │data. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The passed in range is invalid; either │ │ │the to or the from position does not │ │ │point to a valid position or the │ │ │difference between from and to is not │ │ │greater than zero. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.37.3. IMMWaveAudio::cutCopyBufferSize ═══ Returns the size the audio buffer needs to be to contain the audio data from the passed in beginning position to the passed in ending position. If from is omitted, it uses the current position; if to is omitted, it uses the end of the audio data. public: virtual unsigned long cutCopyBufferSize( const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( )) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The buffer is too small to hold that │ │ │data. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The passed in range is invalid; either │ │ │the to or the from position does not │ │ │point to a valid position or the │ │ │difference between from and to is not │ │ │greater than zero. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.37.4. IMMWaveAudio::cutToBuffer ═══ Cuts audio data into the audio buffer from the passed in start position to the passed in end position. If from is omitted, it uses the current position; if to is omitted, it uses the end of the audio data. public: virtual IMMWaveAudio& cutToBuffer( IMMAudioBuffer& audioBuffer, const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The buffer is too small to hold that │ │ │data. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The passed in range is invalid; either │ │ │the to or the from position does not │ │ │point to a valid position or the │ │ │difference between from and to is not │ │ │greater than zero. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.37.5. IMMWaveAudio::IMMWaveAudio ═══ You can construct and destruct objects of this class. Overload 1 public: IMMWaveAudio( Boolean openNow = true, unsigned long instance = 0, Boolean openShareable = true); You can construct an IMMWaveAudio from the following: openNow If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the openfunctions to open the device yourself. instance The user can provide their own instance number instead of one being generated for them. openShareable If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Used in samples: Multimedia MMREMOTE Sample: mmremote.cpp Multimedia MMSTEREO Sample: mmstereo.cpp Overload 2 protected: IMMWaveAudio( unsigned long deviceIdentifier, const IString& newAlias = IString ( )); A derived class can construct an IMMWaveAudio from the following: deviceIdentifier The value the system uses to identify the device. newAlias The name you can use to associate a string to the device. Optional. Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.37.6. IMMWaveAudio::isOpenStringValid ═══ Returns true if the passed in open string is valid for this device. protected: virtual Boolean isOpenStringValid( const IString& deviceName) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ ═══ 1.37.7. IMMWaveAudio::pasteFromBuffer ═══ Replaces the audio data with data from the audio buffer, from the passed in begin position to the passed in end position. If neither from nor to is specified, then it inserts the data at the current position. If from is omitted, it uses the start of the buffer; if to is omitted, it uses the end of the audio data in the buffer. public: virtual IMMWaveAudio& pasteFromBuffer( const IMMAudioBuffer& audioBuffer, const IMMTime& from = IMMTime ( ), const IMMTime& to = IMMTime ( ), CallType call = wait); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The passed in range is invalid; either │ │ │the to or the from position does not │ │ │point to a valid position or the │ │ │difference between from and to is not │ │ │greater than zero. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.37.8. IMMWaveAudio::pasteToBuffer ═══ Pastes audio data into the passed in audio buffer. public: virtual IMMWaveAudio& pasteToBuffer( IMMAudioBuffer& audioBuffer, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The buffer is too small to hold that │ │ │data. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.37.9. IMMWaveAudio::supportsWaveFormat ═══ Returns true, if the format is supported. This allows an application to determine whether a specific wave audio format is supported. public: virtual Boolean supportsWaveFormat( unsigned long bitsPerSample, unsigned long samplesPerSecond, unsigned long channels, IMMAudioBuffer::Format format, CallType call = wait) const; Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘ Exceptions ┌────────────────────┬────────────────────────────────────────┐ │IAccessError │The device identifier is not valid; │ │ │possibly the device is closed. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device cannot acquire access to the │ │ │hardware device; possibly another │ │ │device of this same type was acquired │ │ │for exclusive use in this or another │ │ │process. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │An internal driver error occurred. │ ├────────────────────┼────────────────────────────────────────┤ │IInvalidRequest │The device must be in the open state │ │ │before calling this function. │ ├────────────────────┼────────────────────────────────────────┤ │IAccessError │The device hardware does not support │ │ │this format; possibly the combination of│ │ │the passed in audio attributes is not │ │ │supported by the system. │ └────────────────────┴────────────────────────────────────────┘ ═══ 1.37.10. IMMWaveAudio::~IMMWaveAudio ═══ public: virtual ~IMMWaveAudio(); Platform Support ┌────────────┬────────────┐ │PM │MOTIF │ ├────────────┼────────────┤ │Yes │No │ └────────────┴────────────┘