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