#ifndef _DVCAP_MAINWINDOW_HPP_ #define _DVCAP_MAINWINDOW_HPP_ #ifndef _COMMON_WINDOW_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif #ifndef _COMMON_PUREMENU_HPP_ #include #endif #ifndef _COMMON_BLOCK_HPP_ #include #endif #ifndef _COMMON_MMTIMER_HPP_ #include #endif #ifndef _STATBAR_STATUSBAREX_HPP_ #include #endif #ifndef _DVCAP_DEVICENOTIFICATION_HPP_ #include #endif #ifndef _DVCAP_CAPTUREDEVICEGRAPH_HPP_ #include #endif #ifndef _TOOLBAR_TOOLBAR_HPP_ #include #endif class MainWindow : public Window { public: MainWindow(void); virtual ~MainWindow(); static String className(void); private: enum{StatusBarID=200,ToolBarID=201,EditHourID=202,EditMinuteID=203,EditSecondID=204,EditFrameID=205,TCButtonID=206}; enum{InitialWidth=650,InitialHeight=480,DefaultVideoWidth=360,DefaultVideoHeight=240,WidthEdge=5,HeightEdge=95}; enum{TimerResolution=55}; // 55 ms enum{Part1,Part2,DevStatusPart}; void registerClass(void); void insertHandlers(void); void removeHandlers(void); void setParts(void); void handleDeviceChange(CallbackData &cbData); void message(const String &message)const; void markGraphModeMenu(int itemID); void markToolBarButton(bool enableRecord,bool enableOthers); bool setPreviewWindow(void); void dvAppSetup(bool graphResult); bool dvRefreshMode(void); void dvStatusText(const String &text); bool dvUpdateTapeInfo(void); bool dvPutVcrMode(int mode); bool dvDisplayTimecode(void); bool dvSeekAtn(void); bool handleFileSetOutput(void); void handleFileSetInput(void); void handleFileSaveGraph(void); void handleFileCaptureSize(void); void handleModePreview(void); void handleModeDVToFile(void); void handleModeDVToFileNoPre(void); void handleModeFileToDV(void); void handleModeFileToDVNoPre(void); void handleModeDVToFileType2(void); void handleModeDVToFileNoPreType2(void); void handleModeFileToDVType2(void); void handleModeFileToDVNoPreType2(void); void handleOptionsRefreshMode(void); void handleOptionsCheckTape(void); void handleOptionsDecodeSize(void); void handleOptionsFrameRate(void); void handleHelpAbout(void); void handlePlay(void); void handlePause(void); void handleStop(void); void handleRecord(void); void handleForward(void); void handleReverse(void); void handleForwardFastest(void); void handleSkipNext(void); void handleSkipPrev(void); void handleReverseFastest(void); void handleSeekATN(void); CallbackData::ReturnType paintHandler(CallbackData &someCallbackData); CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData); CallbackData::ReturnType commandHandler(CallbackData &someCallbackData); CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData); CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData); CallbackData::ReturnType createHandler(CallbackData &someCallbackData); CallbackData::ReturnType setFocusHandler(CallbackData &someCallbackData); CallbackData::ReturnType userHandler(CallbackData &someCallbackData); CallbackData::ReturnType deviceChangeHandler(CallbackData &someCallbackData); CallbackData::ReturnType atnTimerHandler(CallbackData &someCallbackData); CallbackData::ReturnType capLimitTimerHandler(CallbackData &someCallbackData); CallbackData::ReturnType framesTimerHandler(CallbackData &someCallbackData); Callback mPaintHandler; Callback mDestroyHandler; Callback mCommandHandler; Callback mKeyDownHandler; Callback mSizeHandler; Callback mCreateHandler; Callback mUserHandler; Callback mDeviceChangeHandler; Callback mATNTimerHandler; Callback mCapLimitTimerHandler; Callback mFramesTimerHandler; static char szClassName[]; static char szMenuName[]; DeviceNotification mDeviceNotification; SmartPointer mStatusBar; SmartPointer mToolBar; SmartPointer mCaptureDeviceGraph; SmartPointer mEdit1; SmartPointer mEdit2; SmartPointer mEdit3; SmartPointer mEdit4; SmartPointer mTCButton; CaptureDeviceGraph::GraphType mGraphType; PureMenu mAppMenu; bool mHaveDevice; int mVideoWidth; int mVideoHeight; DWORD mCapStartTime; MMTimer mAtnTimer; MMTimer mCapLimitTimer; MMTimer mFramesTimer; String mStrTimecode; // so we don't have to allocate a string for each timer frequency period DWORD mHours; // for timecode handling DWORD mMinutes; // for timecode handling DWORD mSeconds; // for timecode handling String mOutputFileName; String mInputFileName; }; inline String MainWindow::className(void) { return String(szClassName); } inline void MainWindow::message(const String &message)const { ::MessageBox(*this,message.str(),"DVCAP",MB_OK); } inline void MainWindow::dvStatusText(const String &text) { if(!mStatusBar.isOkay())return; mStatusBar->setText(text,DevStatusPart); } #endif