/****************/ /* MopoCad.CPP */ /****************/ // Esimerkki LAF:n (Little Application Framework/ // Timothy P. Justice) käytöstä. // LAFissa voi olla vain yksi ikkuna kerrallaan! // LAFin rajoitusten vuoksi piirretään viiva aina kun // näppäin painetaan pohjaan. Samalla murtoviivan // talletus on jätetty pois, koska APF on todellakin vain // yksinkertaiseen piirtämiseen suunniteltu (esim. ei // muita hiiriviestejä kuin mouseDown!). #include #include "..\mopocad.rh" class MPoint { // Piste joka on murtoviivan osa. int x; int y; public: MPoint(POINT p) { x = p.x; y = p.y; } MPoint(int ix=0,int iy=0) { x = ix; y = iy; } int operator==(MPoint &p) { return ( p.x == x && p.y == y ); } POINT p() { POINT t; t.x = x; t.y = y; return t;} }; MPoint MovePoint(-2000,-2000); // Merkki siirrosta /************************ Luokat *******************************************/ class TMopoCadApp : public application { MPoint old; public: TMopoCadApp(char *apName, char *apTitle, HINSTANCE hInstance, HINSTANCE hPrevInstance) : application(apName, apTitle,hInstance, hPrevInstance) { old = MovePoint; }; void mouseDown(int,int); void paint(); }; /********************* TMopoCadApp metodit *********************************/ void TMopoCadApp::mouseDown(int x, int y) { MPoint point(x,y); if ( !(old == MovePoint) ) line(old.p(),point.p()); old = point; } void TMopoCadApp::paint() { old = MovePoint; } /********************* Pääohjelma ******************************************/ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR , int) { TMopoCadApp MopoCadApp("LAFMopoCad","MopoCad",hInstance,hPrevInstance); return MopoCadApp.run(); }