Ticket #132: Trend_Testfkt.txt

File Trend_Testfkt.txt, 3.0 KB (added by Melanie Hermann, 13 years ago)

Mit dieser Funktion kann die RessourceException provoziert werden.

Line 
1// Wenn die Funktion Draw() folgendermaßen aussieht kann die RessourceException innerhalb ~ 25 Minuten provoziert werden
2// Es gibt dann eine Exception beim Erstellen der CPens
3
4
5 unsigned long c = 0;
6 for(;;) // TEST!!! ENDLOSSCHLEIFE!!!
7 {
8
9 TRACE(_T("Draw()-Durchlauf: %ld\n"), ++c);
10 static bool first = true;
11
12 CStdMemDC memDC(dc, m_staticRect);
13
14 CPen linePen = CPen(PS_SOLID, 2, crdarkblue);
15 CPen limitPen = CPen(PS_SOLID, 1, crdarkgreen);
16 CPen gridPen = CPen(PS_SOLID, 1, crdarkgray);
17 CPen fontPen = CPen(PS_SOLID, 1, crblack);
18
19 LOGFONT lf;
20
21 Compat_GetLogFont(&lf);
22
23 lf.lfHeight = 14;
24 lf.lfWeight = FW_NORMAL;
25#ifdef WINCE
26 lf.lfWidth = 5;
27#endif
28 CFont axisFontHori, axisFontVert;
29 axisFontHori.CreateFontIndirect(&lf);
30 lf.lfEscapement = 900;
31 axisFontVert.CreateFontIndirect(&lf);
32
33 GetClientRect(&m_staticRect);
34
35 m_staticRectHeight = m_staticRect.bottom - m_staticRect.top;
36 m_staticRectWidth = m_staticRect.right - m_staticRect.left;
37
38 SetTrendRect();
39
40 if (first)
41 { // Hintergrund wird nur einmal gezeichnet und dann abgespeichert, damit er wieder geladen und angezeigt werden kann
42 dc->FillSolidRect(&m_staticRect, crdlghinter);
43
44 m_dc_oldPen = dc->SelectObject(&gridPen); // Alten Pen merken
45
46 dc->SelectObject(&limitPen);
47
48 dc->SelectObject(&fontPen);
49
50 //dc->SelectObject(m_dc_oldPen); // Alten Pen zurückschreiben, sonst anscheinend MemoryLeak
51
52 // Hintergrundbild speichern
53 m_bkgrndCDC.CreateCompatibleDC(dc);
54 m_bkgrndBitmap.CreateCompatibleBitmap(dc, m_staticRect.Width(), m_staticRect.Height());
55 m_bkgrndCDC.SelectObject(m_bkgrndBitmap); // Kein Sichern von 'oldBitmap', da diese NULL ist
56 m_bkgrndCDC.BitBlt(m_staticRect.left, m_staticRect.top, m_staticRect.Width(), m_staticRect.Height(), dc, m_staticRect.left, m_staticRect.top, SRCCOPY);
57
58 first = false;
59 }
60
61 // Gespeichertes Hintergrundbild laden
62 if (0 == memDC.BitBlt(m_staticRect.left, m_staticRect.top, m_staticRect.Width(), m_staticRect.Height(), &m_bkgrndCDC, m_staticRect.left, m_staticRect.top, SRCCOPY))
63 {
64 first = true;
65 continue;
66 }
67
68 if (-1 != CDlgTrend::sm_comboBoxValueSel)
69 { // Wenn in der ComboBox ein Wert zur Anzeige ausgewählt wurde
70 }
71 else //if (true == dtOk)
72 { // Wert sichtbar, Daten vorhanden und Datentyp des gewählten Wertes ist für Anzeige geeignet
73 m_memDC_oldFont = memDC.SelectObject(&axisFontVert); // Alte Font merken
74 memDC.SetBkMode(TRANSPARENT);
75
76 memDC.SelectObject(&axisFontHori); // Schrift für aktuellen Wert auswählen
77 m_memDC_oldPen = memDC.SelectObject(&linePen); // Alten Pen merken
78
79 memDC.SelectObject(&axisFontHori);
80
81 memDC.SetBkMode(TRANSPARENT);
82
83 //memDC.SelectObject(m_memDC_oldFont); // Alte Font zurückschreiben, sonst anscheinend MemoryLeak
84 //memDC.SelectObject(m_memDC_oldPen); // Alten Pen zurückschreiben, sonst anscheinend MemoryLeak
85 }
86 }