100% CPU-Last
-
OK, hier kann man es runterladen (586 KB):
http://www.zwette.de/temp/TMLA_test.zip
Es ist unter Visual Studio 6 entwickelt worden, allerdings jetzt in VS7 importiert und weiterbearbeitet.
zwette
-
die hohe cpu auslastung ist ja nur auf seite 1. da wird sich der fehler ja wohl ziemlich schnell finden lassen.
-
...und auf der letzten auch...!!??

-
Kann es sein, das er hier nicht mehr rauskommt??
for(int nZaehler = 1; nZaehler < m_Seitennummern; nZaehler++) { m_tabellenSeite[nZaehler] -> SetWindowPos(&wndTop, nX, nY, nXz, nYz, SWP_HIDEWINDOW); }Ist die SetRec-Methode in der TabCtrl-Klasse.
zwette
-
was du brauchst ist ein Profiler - mit dem man die Stellen findet, wo es sehr langsam wird.
Wenn jemand einen für MSVC++ (.NET) kennt
bitte mailen.
-
Meinst du sowas wie VTune von Intel?
zwette
PS: HAB EINEN! http://www.codework.com/glowcode/product.html
-
Die OnPaint-Funktion hat sich als Schuldiger herausgestellt, aber wie bekomme ich das so hin, das er nicht dauernd nur zeichnet? Anscheinend hab ich keine korrekte Verknüpfung zwischen WM_PAINT und OnPaint!? Sie zeichnet nämlich permanent neu...
zwette
-
Darf ich nochmal raten? Du benutzt nicht CPaintDC in OnPaint, sondern GetDC() o.ä. CPaintDC ruft im Destruktor ValidateRect auf. Da dies bei dir nicht geschieht bleibt der Bereich invalidated (*g*) und es wird ständig neu gezeichnet. Also, entweder:
void CMyWnd::OnPaint() { CPaintDC dc(this); ... }oder:
void CMyWnd::OnPaint() { ... ValidateRect(0); }EDIT: (Habs mir in deinem Projekt angeguckt. Ist so wie ich vermutet habe. Nimm die OnPaint-Funktionen raus wenn du sie nicht brauchst oder schreib "CPaintDC dc(this);" rein.)
-
noch ein hinweis: wenn man in deinem programm ESCAPE drückt, geht der aktuelle dialog zu. das ist bestimmt nicht so gewollt.
-
schrieb:noch ein hinweis: wenn man in deinem programm ESCAPE drückt, geht der aktuelle dialog zu. das ist bestimmt nicht so gewollt.
Woher willst du das wissen?

-
@MaSTaH:
Hey, THX, es funktioniert, im Grunde hattest du Recht, da ich aber einigen Quellcode (aus Sicherheitsgründen) unterschlagen hatte, konntest Du es nicht auf den Punkt bringen.
Ich hatte zuerst:
void CResonator_Single::OnPaint(void) { if (m_pGraph->GetDrawn() == true) // stellt fest, ob schon ein Graph gezeichnet wurde { CPaintDC dc(this); m_pGraph->DrawChart(m_pFileGraphS12, m_hWndGraphArea, S12_DATA); } }es muss natürlich lauten:
void CResonator_Single::OnPaint(void) { CPaintDC dc(this); if (m_pGraph->GetDrawn() == true) // stellt fest, ob schon ein Graph gezeichnet wurde { m_pGraph->DrawChart(m_pFileGraphS12, m_hWndGraphArea, S12_DATA); } }Nochmal ein dickes DANKE SCHÖN!
@:)
Wie kann ich denn das unterbinden? Gibts etwas ne ESC-Message? Ist nicht gewollt (@MaSTaH )...zwette
-
Es müsste so gehen:
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE) return TRUE; return CDialog::PreTranslateMessage(pMsg); }