1 //Prak2 MFC ohne Assistenten
  2 //Author: Steve Moser
  3 //Email: smoser@anno74.de
  4 //Datum: 20.10.2003

  5 
  6 
  7 
  8 //Beispiel einer Anwendung unter Verwendung der MFC-Klassenbibliothek

  9 //***********************************************************************
 10 // kritzel.h: Deklaration der Klassen
 11 //***********************************************************************

 12 class CMyApp : public CWinApp
 13 {
 14 public:
 15     virtual BOOL InitInstance ();  //wird überschrieben und im eigenen code aufgerufen

 16 };
 17 
 18 
 19 //************************************************************************
 20 //Eigene View Klasse abgeleitet von CSrollView
 21 //Hier werden alle Messages das Zeichnen betreffend abgefangen und behandelt
 22 //Es handelt sich hier nur um das ClientFenster
 23 //************************************************************************

 24 class CMyView : public CScrollView
 25 {
 26 public:
 27     CMyView();
 28     virtual void OnDraw(CDC* pDC);  // Überladen, um diese Ansicht darzustellen
 29 
 30     UINT		m_akt_breite;		// momentan ausgewählte einstellungen
 31     COLORREF	m_akt_farbe;		// werden temporär zwischengespeichert
 32     UINT		m_akt_figur;
 33 
 34     CPtrList pArray;				//Pointer Array, zuständig zur speicherung der bereits

 35 private:							//gezeichneten Objekte

 36     bool m_movement;				//wird gesetzt wenn mousemove aktiv
 37     bool m_locked;					//wird gesetzt nach capturing (ButtonDown), aufgehoben nach ButtonUp
 38 
 39     CPoint m_start;					//startpunkt einer figur
 40     CPoint m_ende;					//endpunkt der zu zeichnenden figur
 41 
 42     HCURSOR m_standard;				//vordefinierter typ für den cusor
 43 
 44     void InvertLine(CDC* pDC, CPoint start, CPoint ende);	//loescht das bereits gezeichnete
 45     CPoint MakeQuadrat(CPoint point);						//dient zur kreisberechnung
 46     void AddToList();										//fuegt ein objekt dem pArray hinzu

 47 protected:
 48 
 49     afx_msg void OnSize( UINT,int,int );					//wird bei scrolloperationen aufgerufen
 50     afx_msg void OnLButtonDown (UINT nFlags, CPoint point);
 51     afx_msg void OnLButtonUp (UINT nFlags, CPoint point);
 52     afx_msg void OnMouseMove(UINT nFlags, CPoint point);
 53     afx_msg void OnContextMenu (CWnd * pWnd, CPoint pos);	//initialisiert das rechtemausmenue
 54     afx_msg void OnMenuUpdate(UINT ID);						//gleicht hauptmenue und contextmenue ab
 55 
 56 
 57 
 58     DECLARE_MESSAGE_MAP ()
 59 };
 60 //***********************************************************************
 61 //Eigene Klasse von CObject abgeleitet
 62 //Einfache Struktur, die zum speichern der bereits gezeichneten Objekte dient
 63 //***********************************************************************

 64 class mObject:public CObject
 65 {
 66 public:
 67     CPoint sStart;
 68     CPoint sEnde;
 69     UINT sType;
 70     UINT sBreite;
 71     COLORREF sFarbe;
 72 
 73 };
 74 //************************************************************************
 75 //Eigene Hauptfenster Klasse
 76 //************************************************************************

 77 class CHauptFenster : public CFrameWnd
 78 {
 79 public:
 80     CHauptFenster ();				//konstruktor; alle initialisierungen werden hier erledigt

 81     CMyView *m_pMyView;				//pointer auf eigen erstellte klasse

 82     UINT m_breite;
 83     UINT m_farbe;
 84     UINT m_figur;
 85 
 86     afx_msg void OnBreite(UINT ID);	//bei menueveraenderungen werden diese funktionen aufgerufen
 87     afx_msg void OnFarbe(UINT ID);
 88     afx_msg void OnFigur(UINT ID);
 89 
 90 private:
 91     static const	COLORREF crColors[5];	//farbendeklaration
 92     static const	UINT uiBreite[6];		//stiftbreitendeklaration

 93 
 94 protected:
 95     afx_msg int OnCreate (LPCREATESTRUCT);								//verbindet hier die view mit dem parentwindow
 96     afx_msg void OnDrawItem (int nIDCtl, LPDRAWITEMSTRUCT lpdis);		// wird beim zeichnen des menues aufgerufen
 97     afx_msg void OnMeasureItem (int nIDCtl, LPMEASUREITEMSTRUCT lpmis); //legt dimensionen fest um das submenue zu zeichnen
 98 
 99     afx_msg void OnFileNew();
100     afx_msg void OnExit();
101     afx_msg void OnUpdateBreiteUI(CCmdUI* pCmdUI); //funktionen werden über messages zum updaten der
102     afx_msg void OnUpdateFigurUI(CCmdUI* pCmdUI);  //menueeintraege verwendet
103     afx_msg void OnUpdateFarbeUI(CCmdUI* pCmdUI);
104 
105     DECLARE_MESSAGE_MAP ()
106 
107 };
108 
109 


syntax highlighted by Code2HTML, v. 0.9.1