000
25.07.2003, 10:36 Uhr
0xdeadbeef
Gott (Operator)
|
Moin,
Ja, auch ich muss mich ab und zu mal mit der MFC rumschlagen . Es geht um folgendes: Ich hab mir ne Custom Control zusammengebastelt und dahinter ne Klasse gesetzt, die von CWnd abgeleitet ist. Ich muss in dem Ding ein bisschen rumzeichnen, von daher schien mir das am meisten Sinn zu machen. Ich hab dem Ding dann einen Message Handler für WM_PAINT verpasst, in dem ich mir einen CPaintDC für das Fenster erstelle und ein bisschen drin rumzeichne. Soweit, so gut, das macht er auch noch. Ich muss allerdings auch auf Mauseingaben achten, also verpass ich ihm Message Handler für WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE und WM_RBUTTONUP. In der Routine, die WM_MOUSEMOVE behandelt, (OnMouseMove) muss ich ebenfalls in das Fenster reinzeichnen, ich erstelle mir also wieder einen CPaintDC und versuche drin rumzuzeichnen. Der Code läuft dann etwa so:
| C++: |
void CMyWnd::OnMouseMove(UINT nFlags, CPoint point) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if(nFlags & MK_LBUTTON) { UpdateWindow(); CPaintDC dc(this); dc.RectAngle(m_ptStartingPoint, point); }
CWnd::OnMouseMove(nFlags, point); }
|
m_ptStartingPoint wird in CMyWnd::OnLButtonDown(UINT, CPoint) gesetzt, es geht darum, einen Bereich zu markieren. Er kompiliert auch anstandslos und ohne Warnungen, aber wenn ich den Code dann ausführe und die Maus über das Fenster ziehe (linke Taste gedrückt), passiert nichts. Kein Rechteck, nicht mal irgendwie verplant in die Gegend gezeichnet. Auch sonst kein Effekt. Scheinbar reagiert der CPaintDC nicht auf das, was ich ihm sage, und ich weiß nicht warum.
Hat von euch vielleicht jemand ne Idee, woran das liegen könnte? -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |