Files
Work/sample/DevHndlr.hpp
2024-08-07 09:16:27 -04:00

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