1 #include <afxwin.h>
2 #include "resource.h"
3 #include "MyView.h"
4 #include "MyDoc.h"
5
6 IMPLEMENT_DYNCREATE(CMyDoc,CDocument)
7 BEGIN_MESSAGE_MAP (CMyDoc, CDocument)
9 ON_COMMAND (IDM_FILE_NEW,OnNew)
10
11 ON_COMMAND_RANGE (IDM_BREITE_KRASSDUENN, IDM_BREITE_SEHR_DICK, OnBreite ) //von krassduenn - sehrdick wird OnBreite() aufgerufen
12 ON_COMMAND_RANGE (IDM_FARBE_SCHWARZ, IDM_FARBE_WEISS, OnFarbe )
13 ON_COMMAND_RANGE (IDM_FIGUR_LINIE, IDM_FIGUR_ELLIPSE, OnFigur )
14
15 ON_UPDATE_COMMAND_UI_RANGE (IDM_BREITE_KRASSDUENN, IDM_BREITE_SEHR_DICK, OnUpdateBreiteUI ) //wird bei neuzeichnen des menues aufgerufen
16 ON_UPDATE_COMMAND_UI_RANGE (IDM_FARBE_SCHWARZ, IDM_FARBE_WEISS, OnUpdateFarbeUI )
17 ON_UPDATE_COMMAND_UI_RANGE (IDM_FIGUR_LINIE, IDM_FIGUR_ELLIPSE, OnUpdateFigurUI )
18
19 END_MESSAGE_MAP()
20
21 //*************************************************************************************
22 //Function: Konstruktor
23 //Return value: none
24 //description: initialisierung und werte vorbelegen (ginge auch über die .rc)
25 //*************************************************************************************
26 CMyDoc :: CMyDoc()
27 {
28 m_farbe = IDM_FARBE_SCHWARZ;
29 m_breite = IDM_BREITE_KRASSDUENN;
30 m_figur = IDM_FIGUR_LINIE;
31
32 m_akt_breite = 1;
33 m_akt_farbe = RGB(0,0,0);
34 m_akt_figur = IDM_FIGUR_LINIE;
35 }
36 //*************************************************************************************
37 //Function: OnNewDocument
38 //Return value: none
39 //description: wird aufgerufen, wenn eine neue zeichenfläche generiert werden soll.
40 // nachricht wird von der aktiven view zuerst an das dokument geschickt
41 //*************************************************************************************
42 void CMyDoc::OnNew()
43 {
44 if(!CDocument::OnNewDocument() ) //muss drin sein, da beim erzeugen des ersten fensters, die basisklasse aufgerufen wird
45 return;// FALSE;
46 if(!pArray.IsEmpty() )
47 {
48 pArray.RemoveAll();
49 UpdateAllViews(NULL);
50 }
51
52 return; //TRUE;
53 }
54
55 void CMyDoc::OnExit()
56 {
57 //SendMessage(WM_CLOSE,0,0);
58 }
59 //*************************************************************************************
60 //Function: Array
61 //Return value: none
62 //description: initialisiert 8 farbwerte
63 //*************************************************************************************
64 const COLORREF CMyDoc :: crColors[8]=
65 {
66 RGB(0,0,0),
67 RGB(255,0,0),
68 RGB(0,0,255),
69 RGB(255,255,0),
70 RGB(0,255,0),
71 RGB(255,0,255),
72 RGB(0,255,255),
73 RGB(255,255,255)
74 };
75 //*************************************************************************************
76 //Function: Array
77 //Return value:none
78 //description: initialisiert 6 breitenwerte zur verwendung mit einem stift (Pen)
79 //*************************************************************************************
80 const UINT CMyDoc::uiBreite[6]=
81 {
82 1,
83 8,
84 16,
85 24,
86 32,
87 64
88 };
89
90 //*************************************************************************************
91 //Function: OnBreite()
92 //Return value: void
93 //description: setzt neue breite, die ausgewählt wurde (menue) und akt.breite, wird aber
94 // noch nicht gezeichnet
95 //*************************************************************************************
96 void CMyDoc :: OnBreite(UINT ID)
97 {
98 m_breite = ID;
99 m_akt_breite = uiBreite[ID - IDM_BREITE_KRASSDUENN ];
100 }
101
102 //*************************************************************************************
103 //Function: OnFarbe()
104 //Return value: void
105 //description:setzt neue farbe, die ausgewählt wurde (menue) und akt.farbe, wird aber
106 // noch nicht gezeichnet
107 //*************************************************************************************
108 void CMyDoc :: OnFarbe(UINT ID)
109 {
110 m_farbe = ID;
111 m_akt_farbe = crColors[ID - IDM_FARBE_SCHWARZ];
112 }
113
114 //*************************************************************************************
115 //Function:OnFigur()
116 //Return value: void
117 //description:setzt neue figur, die ausgewählt wurde (menue) und akt.figur, wird aber
118 // noch nicht gezeichnet
119 //*************************************************************************************
120 void CMyDoc :: OnFigur(UINT ID)
121 {
122 m_figur = ID;
123 m_akt_figur = ID;
124 }
125 //*************************************************************************************
126 //Function: OnUpdateBreiteUI()
127 //Return value: void
128 //description: die funktion setzt nun sichtbar den neuen hacken im auswahlmenue
129 //*************************************************************************************
130 void CMyDoc::OnUpdateBreiteUI(CCmdUI *pCmdUI)
131 {
132 pCmdUI->SetCheck(pCmdUI->m_nID == m_breite );
133 }
134
135 //*************************************************************************************
136 //Function: OnUpdateFarbeUI
137 //Return value: void
138 //description: die funktion setzt nun sichtbar den neuen hacken im auswahlmenue
139 //*************************************************************************************
140 void CMyDoc::OnUpdateFarbeUI(CCmdUI *pCmdUI)
141 {
142 pCmdUI->SetCheck(pCmdUI->m_nID == m_farbe );
143 }
144
145 //*************************************************************************************
146 //Function: OnUpdateFigurUI
147 //Return value: void
148 //description: die funktion setzt nun sichtbar den neuen hacken im auswahlmenue
149 //*************************************************************************************
150 void CMyDoc::OnUpdateFigurUI(CCmdUI *pCmdUI)
151 {
152 pCmdUI->SetCheck(pCmdUI->m_nID == m_figur );
153 }
154
syntax highlighted by Code2HTML, v. 0.9.1