#include #include #include char MainWindow::szClassName[]="Proto"; char MainWindow::szMenuName[]="mainMenu"; MainWindow::MainWindow(void) { mPaintHandler.setCallback(this,&MainWindow::paintHandler); mDestroyHandler.setCallback(this,&MainWindow::destroyHandler); mCommandHandler.setCallback(this,&MainWindow::commandHandler); mKeyDownHandler.setCallback(this,&MainWindow::keyDownHandler); mSizeHandler.setCallback(this,&MainWindow::sizeHandler); mCreateHandler.setCallback(this,&MainWindow::createHandler); mTimerHandler.setCallback(this,&MainWindow::timerHandler); mActivateAppHandler.setCallback(this,&MainWindow::activateAppHandler); mDisplayChangeHandler.setCallback(this,&MainWindow::displayChangeHandler); insertHandlers(); registerClass(); ::CreateWindow(szClassName,szClassName, WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_DLGFRAME|WS_CLIPCHILDREN|WS_SIZEBOX, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,processInstance(),(LPSTR)this); show(SW_SHOW); update(); } MainWindow::~MainWindow() { destroy(); } void MainWindow::insertHandlers(void) { insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); insertHandler(VectorHandler::PaintHandler,&mPaintHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::SizeHandler,&mSizeHandler); insertHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler); insertHandler(VectorHandler::CreateHandler,&mCreateHandler); insertHandler(VectorHandler::TimerHandler,&mTimerHandler); // insertHandler(VectorHandler::ActivateAppHandler,&mActivateAppHandler); // insertHandler(VectorHandler::DisplayChangeHandler,&mDisplayChangeHandler); } void MainWindow::removeHandlers(void) { removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); removeHandler(VectorHandler::PaintHandler,&mPaintHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::SizeHandler,&mSizeHandler); removeHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler); removeHandler(VectorHandler::CreateHandler,&mCreateHandler); removeHandler(VectorHandler::TimerHandler,&mTimerHandler); // removeHandler(VectorHandler::ActivateAppHandler,&mActivateAppHandler); // removeHandler(VectorHandler::DisplayChangeHandler,&mDisplayChangeHandler); } void MainWindow::registerClass(void)const { WNDCLASS wndClass; if(::GetClassInfo(processInstance(),className(),(WNDCLASS FAR*)&wndClass))return; wndClass.style =CS_HREDRAW|CS_VREDRAW; //|CS_OWNDC|CS_DBLCLKS; wndClass.lpfnWndProc =(WNDPROC)Window::WndProc; wndClass.cbClsExtra =0; wndClass.cbWndExtra =sizeof(MainWindow*); wndClass.hInstance =processInstance(); wndClass.hIcon =::LoadIcon(NULL,IDI_APPLICATION); wndClass.hCursor =::LoadCursor(NULL,IDC_ARROW); wndClass.hbrBackground =(HBRUSH)::GetStockObject(WHITE_BRUSH); wndClass.lpszMenuName =szMenuName; wndClass.lpszClassName =szClassName; ::RegisterClass(&wndClass); assert(0!=::GetClassInfo(processInstance(),className(),(WNDCLASS FAR*)&wndClass)); } CallbackData::ReturnType MainWindow::createHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::destroyHandler(CallbackData &/*someCallbackData*/) { removeHandlers(); ::PostQuitMessage(0); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::activateAppHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::displayChangeHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::sizeHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case MAINMENU_FILEPRINT : handleFilePrint(); break; case MAINMENU_FILEOPEN : handleFileOpen(); break; default : break; } return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::paintHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::timerHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainWindow::keyDownHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } void MainWindow::handleFilePrint(void) { } void MainWindow::handleFileOpen(void) { return; }