71 lines
2.2 KiB
C++
71 lines
2.2 KiB
C++
#ifndef _SAMPLE_DEVICEHANDLER_HPP_
|
|
#define _SAMPLE_DEVICEHANDLER_HPP_
|
|
#ifndef _COMMON_WINDOW_HPP_
|
|
#include <common/window.hpp>
|
|
#endif
|
|
#ifndef _COMMON_MMSYSTEM_HPP_
|
|
#include <common/mmsystem.hpp>
|
|
#endif
|
|
|
|
class DeviceHandler
|
|
{
|
|
public:
|
|
enum PlayMode{Wait,NoWait};
|
|
DeviceHandler(Window &windowHandler);
|
|
DeviceHandler(const DeviceHandler &someDeviceHandler);
|
|
virtual ~DeviceHandler();
|
|
WORD operator==(const DeviceHandler &someDeviceHandler)const;
|
|
DeviceHandler &operator=(const DeviceHandler &someDeviceHandler);
|
|
protected:
|
|
enum ErrorCode{InvalidFormat,InvalidDeviceHandle,InvalidHeader};
|
|
virtual void openHandler(CallbackData &someCallbackData);
|
|
virtual void closeHandler(CallbackData &someCallbackData);
|
|
virtual void doneHandler(CallbackData &someCallbackData);
|
|
virtual void message(const String &strErrorMessage)const;
|
|
void mmSystemErrorMessage(MMRESULT mmResult)const;
|
|
void genericErrorMessage(ErrorCode errorCode)const;
|
|
private:
|
|
void insertHandlers(void);
|
|
void removeHandlers(void);
|
|
CallbackData::ReturnType mmOpenHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType mmCloseHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType mmDoneHandler(CallbackData &someCallbackData);
|
|
Callback<DeviceHandler> mMMOpenHandler;
|
|
Callback<DeviceHandler> mMMCloseHandler;
|
|
Callback<DeviceHandler> mMMDoneHandler;
|
|
Window &mWindowHandler;
|
|
};
|
|
|
|
inline
|
|
DeviceHandler::DeviceHandler(Window &windowHandler)
|
|
: mWindowHandler(windowHandler)
|
|
{
|
|
mMMOpenHandler.setCallback(this,&DeviceHandler::mmOpenHandler);
|
|
mMMCloseHandler.setCallback(this,&DeviceHandler::mmCloseHandler);
|
|
mMMDoneHandler.setCallback(this,&DeviceHandler::mmDoneHandler);
|
|
insertHandlers();
|
|
}
|
|
|
|
inline
|
|
DeviceHandler::DeviceHandler(const DeviceHandler &someDeviceHandler)
|
|
: mWindowHandler(someDeviceHandler.mWindowHandler)
|
|
{
|
|
mMMOpenHandler.setCallback(this,&DeviceHandler::mmOpenHandler);
|
|
mMMCloseHandler.setCallback(this,&DeviceHandler::mmCloseHandler);
|
|
mMMDoneHandler.setCallback(this,&DeviceHandler::mmDoneHandler);
|
|
insertHandlers();
|
|
}
|
|
|
|
inline
|
|
DeviceHandler::~DeviceHandler()
|
|
{
|
|
removeHandlers();
|
|
}
|
|
|
|
inline
|
|
DeviceHandler &DeviceHandler::operator=(const DeviceHandler &/*someDeviceHandler*/)
|
|
{
|
|
return *this;
|
|
}
|
|
#endif
|