#include #include #include #include #include #include MainFrame::MainFrame(void) { mQueryEndSessionHandler.setCallback(this,&MainFrame::queryEndSessionHandler); mCloseHandler.setCallback(this,&MainFrame::closeHandler); mSizeHandler.setCallback(this,&MainFrame::sizeHandler); mCommandHandler.setCallback(this,&MainFrame::commandHandler); mCreateHandler.setCallback(this,&MainFrame::createHandler); mDestroyHandler.setCallback(this,&MainFrame::destroyHandler); insertHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler); insertHandler(VectorHandler::CloseHandler,&mCloseHandler); insertHandler(VectorHandler::SizeHandler,&mSizeHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::CreateHandler,&mCreateHandler); insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } MainFrame::~MainFrame() { removeHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler); removeHandler(VectorHandler::CloseHandler,&mCloseHandler); removeHandler(VectorHandler::SizeHandler,&mSizeHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::CreateHandler,&mCreateHandler); removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } CallbackData::ReturnType MainFrame::queryEndSessionHandler(CallbackData &someCallbackData) { if(getClient().hasChildren())return (CallbackData::ReturnType)FALSE; return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::destroyHandler(CallbackData &someCallbackData) { postQuitMessage(); ::WinHelp(*this,0,HELP_QUIT,0); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::closeHandler(CallbackData &someCallbackData) { destroy(); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::createHandler(CallbackData &someCallbackData) { mStatusControl=::new StatusBarEx(*this,getClient(),StatusControlID); mStatusControl.disposition(PointerDisposition::Delete); setParts(SinglePart); setText("Ready"); setCaption(); bringWindowToTop(); return (CallbackData::ReturnType)TRUE; } 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; } 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 PSMENU_FILEOPEN : handleFileOpen(); break; case PSMENU_FILECLOSE : handleFileClose(); break; case PSMENU_FILESAVE : handleFileSave(); break; case PSMENU_FILESAVEAS : handleFileSaveAs(); break; case PSMENU_FILEPRINT : handleFilePrint(); break; case PSMENU_FILEQUIT : handleFileQuit(); break; case PSMENU_SINGLECONNECTION : handleFileOpenSingleConnection(); break; case PSMENU_SELECTGROUP : handleFileSelectGroup(); break; } // if(someCallbackData.wParam()>=StartDynamicID)handleFileOpenEvent(someCallbackData); return (CallbackData::ReturnType)FALSE; } void MainFrame::setParts(int numParts) { GlobalData statParts; if(1==numParts){statParts.size(1);*((int*)&statParts[0])=FirstPartWidth;} else {statParts.size(2);*((int*)&statParts[0])=FirstPartWidth;*((int*)&statParts[0]+1)=SecondPartWidth;} mStatusControl->setParts(statParts); } void MainFrame::setText(const String &strText) { if(!mStatusControl.isOkay())return; mStatusControl->setText(strText); mStatusControl->update(); } void MainFrame::splash(void) { // SplashScreen splashScreen("APISPY","",3000); // splashScreen.perform(); } void MainFrame::setCaption(String strText) { String strCaption; windowText(strCaption); FrameWindow::setCaption(strCaption); } void MainFrame::handleFileOpen(void) { GDIPoint cursorPos; cursorPos.x(0); cursorPos.y(0); PureMenu popupMenu(PureMenu::PopupMenu); popupMenu.insertMenu(0,PureMenu::ItemString,PSMENU_SINGLECONNECTION,"Single &Connection..."); popupMenu.insertMenu(1,PureMenu::ItemString,PSMENU_SELECTGROUP,"Select &Group..."); popupMenu.trackPopupMenu(*this,cursorPos,PureMenu::CenterAlign|PureMenu::TopAlign); } void MainFrame::handleFileOpenSingleConnection(void) { SmartPointer mdiWindow; ProcessView *processView; ConnectionDialog connectionDialog; String strComputerName; if(!connectionDialog.perform(*this,strComputerName))return; processView=::new ProcessView; processView->createWindow(*this,String(STRING_PROCESSVIEWCLASSNAME),"ProcessView","viewMenu","psicon"); insert(*processView); processView->connect(strComputerName); } void MainFrame::handleFileSelectGroup(void) { } void MainFrame::handleFileClose(void) { } void MainFrame::handleFileSave(void) { } void MainFrame::handleFileSaveAs(void) { } void MainFrame::handleFilePrint(void) { } void MainFrame::handleFileQuit(void) { postMessage(*this,WM_CLOSE,0,0L); } // *** virtuals void MainFrame::mdiDestroy(MDIWindow &mdiWindow) { } void MainFrame::mdiActivate(MDIWindow &mdiWindow) { #if 0 String strWindowText; mdiWindow.windowText(strWindowText); if(strWindowText.betweenString(0,' ')==String("Definitions"))setParts(DoublePart); *mStatusControl=mdiWindow.getMenu(); mStatusControl->setSequentialResourceDescriptors(SPYMENU_FILEOPEN,STRING_DESCRIPTORFILEOPEN,(STRING_DESCRIPTORHELPABOUT-STRING_DESCRIPTORFILEOPEN)+1); removeHistory(mdiWindow.getMenu()); applyHistory(mdiWindow.getMenu()); if(mAPIDebug.isOkay()&&mAPIDebug->isDebugging()) { enableMenuItems(0,SPYMENU_FILECLOSE,PureMenu::ByCommand,PureMenu::ItemEnabled); enableMenuItems(0,SPYMENU_FILEOPEN,PureMenu::ByCommand,PureMenu::InsertFlags(PureMenu::ItemDisabled|PureMenu::ItemGrayed)); } else if((mAPIDebug.isOkay()&&!mAPIDebug->isDebugging())||!mAPIDebug.isOkay()) { enableMenuItems(0,SPYMENU_FILECLOSE,PureMenu::ByCommand,PureMenu::InsertFlags(PureMenu::ItemDisabled|PureMenu::ItemGrayed)); enableMenuItems(0,SPYMENU_FILEOPEN,PureMenu::ByCommand,PureMenu::ItemEnabled); } #endif } void MainFrame::mdiDeactivate(MDIWindow &mdiWindow) { // String strWindowText; // mdiWindow.windowText(strWindowText); // if(strWindowText.betweenString(0,' ')==String("Definitions"))setParts(SinglePart); // mStatusControl->setText(" "); }