#include #include #include #include MainFrame::MainFrame(void) { mPaintHandler.setCallback(this,&MainFrame::paintHandler); mCloseHandler.setCallback(this,&MainFrame::closeHandler); mQueryEndSessionHandler.setCallback(this,&MainFrame::queryEndSessionHandler); mDestroyHandler.setCallback(this,&MainFrame::destroyHandler); mCommandHandler.setCallback(this,&MainFrame::commandHandler); mKeyDownHandler.setCallback(this,&MainFrame::keyDownHandler); mSizeHandler.setCallback(this,&MainFrame::sizeHandler); mCreateHandler.setCallback(this,&MainFrame::createHandler); insertHandlers(); } MainFrame::~MainFrame() { removeHandlers(); } void MainFrame::insertHandlers(void) { FrameWindow::insertHandler(MainFrame::DestroyHandler,&mDestroyHandler); FrameWindow::insertHandler(VectorHandler::PaintHandler,&mPaintHandler); FrameWindow::insertHandler(VectorHandler::CommandHandler,&mCommandHandler); FrameWindow::insertHandler(VectorHandler::SizeHandler,&mSizeHandler); FrameWindow::insertHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler); FrameWindow::insertHandler(VectorHandler::CloseHandler,&mCloseHandler); FrameWindow::insertHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler); FrameWindow::insertHandler(VectorHandler::CreateHandler,&mCreateHandler); } void MainFrame::removeHandlers(void) { FrameWindow::removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); FrameWindow::removeHandler(VectorHandler::PaintHandler,&mPaintHandler); FrameWindow::removeHandler(VectorHandler::CommandHandler,&mCommandHandler); FrameWindow::removeHandler(VectorHandler::SizeHandler,&mSizeHandler); FrameWindow::removeHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler); FrameWindow::removeHandler(VectorHandler::CreateHandler,&mCreateHandler); FrameWindow::removeHandler(VectorHandler::CloseHandler,&mCloseHandler); FrameWindow::removeHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler); } CallbackData::ReturnType MainFrame::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wParam()) { case IDM_CASCADE : cascade(); break; case IDM_TILE : tile(); break; case IDM_ARRANGE : arrange(); break; case IDM_CLOSEALL : closeAll(); break; case IDM_MINIMIZEALL : minimizeAll(); break; case IDM_RESTOREALL : restoreAll(); break; case FILE_BROWSE : handleFileBrowse(); break; default : break; } return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::keyDownHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::paintHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::createHandler(CallbackData &/*someCallbackData*/) { createControls(); show(SW_SHOW); update(); mStatusControl->setText("Ready."); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::queryEndSessionHandler(CallbackData &someCallbackData) { if(getClient().hasChildren())return (CallbackData::ReturnType)FALSE; return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::closeHandler(CallbackData &someCallbackData) { destroy(); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::destroyHandler(CallbackData &/*someCallbackData*/) { removeHandlers(); ::PostQuitMessage(0); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::sizeHandler(CallbackData &someCallbackData) { Rect statusRect; Rect cRect; mStatusControl->windowRect(statusRect); cRect.right(someCallbackData.loWord()); cRect.bottom(someCallbackData.hiWord()); getClient().moveWindow(0,0,cRect.right(),cRect.bottom()-(statusRect.bottom()-statusRect.top())); return (CallbackData::ReturnType)FALSE; } void MainFrame::createControls(void) { Rect controlRect; Rect statusRect; mStatusControl=::new StatusBarEx(*this,StatusBarID); mStatusControl.disposition(PointerDisposition::Delete); mStatusControl->clientRect(statusRect); controlRect.bottom(height()/2-statusRect.bottom()); } BrowseView &MainFrame::createBrowseView(void) { SmartPointer mdiWindow; BrowseView *pBrowseView; if(getDocumentClass("BrowseView",mdiWindow)){mdiWindow->top();return (BrowseView&)*mdiWindow;} insert(*(pBrowseView=::new BrowseView)); operator[](size()-1).createWindow(*this,"BrowseView","Browse","mainMenu","PAINT"); return *pBrowseView; } void MainFrame::handleFileBrowse(void) { BrowseView &browseView=createBrowseView(); // browseView.browse("d:\\download\\altbin~1.den"); browseView.browse("d:\\download\\altbin~1.den"); // browseView.browse("d:\\download\\altbin~1.pho"); // browseView.browse("c:\\work\\nntp\\news\\altbin~1.den"); } // ** virtuals void MainFrame::mdiDestroy(MDIWindow &mdiWindow) { } void MainFrame::mdiActivate(MDIWindow &mdiWindow) { } void MainFrame::mdiDeactivate(MDIWindow &mdiWindow) { }