Files
Work/midiwrt/MUSDLG.HPP
2024-08-07 09:16:27 -04:00

80 lines
2.9 KiB
C++

#ifndef _MUSDIALOG_HPP_
#define _MUSDIALOG_HPP_
#include <common/window.hpp>
#include <common/dwindow.hpp>
#include <common/string.hpp>
#include <common/owner.hpp>
#include <common/bitmap.hpp>
#include <midiwrt/muscnv.hpp>
#include <midiwrt/led.hpp>
class MUSDlg : public Window, private MUSConverter
{
public:
MUSDlg(Window &parentWindow,String midiPathFileName,String musPathFileName);
MUSDlg(DWindow &parentWindow,String midiPathFileName,String musPathFileName);
~MUSDlg();
WORD performDialog(void);
protected:
WORD virtual handleScoreStart(void);
WORD virtual handleReleaseNote(PureEvent &pureEvent,PureDelay &pureDelay,PureNote &releaseNote,BYTE trackNumber);
WORD virtual handlePlayNote(PureEvent &pureEvent,PureDelay &pureDelay,PureNote &playNote,BYTE trackNumber);
WORD virtual handlePitchBend(PureEvent &pureEvent,PureDelay &pureDelay,BYTE pitchBenderValue,BYTE trackNumber);
WORD virtual handleReset(PureEvent &pureEvent,PureDelay &pureDelay,BYTE tempoValue,BYTE trackNumber);
WORD virtual handleController(PureEvent &pureEvent,PureDelay &pureDelay,PureController &pureController,BYTE trackNumber);
WORD virtual handleScoreEnd(PureDelay &pureDelay);
private:
enum{xTrack=35,yTrack=40,xTempo=98,yTempo=40};
enum{btnRed=192,btnGreen=192,btnBlue=192};
enum{CaptionHeight=20,StartOrdinal=5020,EndOrdinal=5194};
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
CallbackData::ReturnType drawItemHandler(CallbackData &someCallbackData);
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
CallbackData::ReturnType controlColorHandler(CallbackData &someCallbackData);
void registerClass(void)const;
void insertHandlers(void);
void removeHandlers(void);
void createDialogControls(void);
void handleTempoDnEvent(void);
void handleTempoUpEvent(void);
void handleConvertFileEvent(void);
void loadInstruments(void);
void setMessage(String messageString)const;
void yieldTask(void)const;
WORD isComponentWnd(HWND hWnd)const;
Callback<MUSDlg> mCommandHandler;
Callback<MUSDlg> mCreateHandler;
Callback<MUSDlg> mDrawItemHandler;
Callback<MUSDlg> mPaintHandler;
Callback<MUSDlg> mDestroyHandler;
Callback<MUSDlg> mCloseHandler;
Callback<MUSDlg> mControlColorHandler;
OwnerDraw mOwnerDraw;
LedDisplay *mlpLedTrackDisplay;
LedDisplay *mlpLedTempoDisplay;
LinkedBitmap mLinkedBitmap;
HWND mhButtonUpWnd;
HWND mhButtonDnWnd;
HWND mhButtonCvtWnd;
HWND mhListBoxWnd;
HWND mhStaticWnd;
HWND mhParentWnd;
HBRUSH mhGrayBrush;
String mOutputPathFileName;
HINSTANCE mhInstance;
static char szClassName[];
static char szMenuName[];
};
inline
void MUSDlg::setMessage(String messageString)const
{
::SendMessage(mhStaticWnd,WM_SETTEXT,0,(LPARAM)(LPSTR)messageString);
}
#endif