004
11.05.2005, 16:51 Uhr
mmc20
puss in boots
|
ich hatte das mal so gelöst: (ist schon ne weile her... geht evtl besser zu machen)
C++: |
// members :private CPoint cpOld; CRect crOld;
// OnInitDialog() oder andere initialisierung cpOld = CPoint(-1,-1); crOld = CRect(-1,-1,-1,-1); //...
void CDeinDlg::OnLButtonDown(UINT nFlags, CPoint point) { // hier noch abfangen wenn sich der mauscursor nicht über deiner // zeichenfläche befindet cpOld = CPoint(-1,-1); DrawSelBox( point );
CDialog::OnLButtonDown(nFlags, point); }
void CDeinDlg::OnLButtonUp(UINT nFlags, CPoint point) { // hier noch abfangen wenn sich der mauscursor nicht über deiner // zeichenfläche befindet DrawSelBox(CPoint(-1,-1));
CDialog::OnLButtonUp(nFlags, point); }
void CDeinDlg::OnMouseMove(UINT nFlags, CPoint point) { // hier noch abfangen wenn sich der mauscursor nicht über deiner // zeichenfläche befindet if ( (nFlags & MK_LBUTTON) == MK_LBUTTON ) DrawSelBox( point );
CDialog::OnMouseMove(nFlags, point); }
void CDeinDlg::DrawSelBox(CPoint point) { CRect rect(0,0,0,0); CWnd* wp = GetDlgItem( IDC_STATIC_ZEICHENFLAECHE ); CDC* pDC = wp->GetDC();
if ( cpOld.x == -1 ) cpOld = point; else { pDC->DrawFocusRect( &crOld ); if ( point.x == -1 ) { wp->ReleaseDC( pDC ); return; } }
rect = CRect( cpOld.x, cpOld.y, point.x, point.y ); rect.NormalizeRect();
pDC->DrawFocusRect( &rect ); crOld = rect;
wp->ReleaseDC( pDC ); return; }
|
Dieser Post wurde am 11.05.2005 um 17:00 Uhr von mmc20 editiert. |