OpenCV-Bilddarstellung auf Zeichenebene im Dialogfenster

Du könntest Deinem Thread einen Zeiger auf das Fenster übergeben. Damit kannst Du dann Invalidate aufrufen.
Eine andere Möglichkeit wäre, dem Fenster mit SendMessage bzw. PostMessage eine WM_PAINT Nachricht zu schicken. Da bin ich mir aber nicht so ganz sicher.
 
Evt. funktioniert auch dieser Aufruf innerhalb des Threads:
Code:
CView *pView = ((CFrameWnd *)AfxGetMainWnd())->GetActiveView();

if( pView )
{
    pView->Invalidate();
}
Gruß
MCoder
 
das funktioniert leider nicht, wäre auch zu schön um war zu sein, dann könnte ich mir die Messages sparen.
Code:
CView *pView = ((CFrameWnd *)AfxGetMainWnd())->GetActiveView();
if( pView )
{
    pView->Invalidate();
}

bei meinem momentanen Versuch schicke ich eine Message WM_UPDATE_IMAVIEW von meinem Bearbeitungsthread, der Zugriff auf das Bild hat. Meine MyView hat keinen Zugriff auf das Bild.

Code:
	m_pMainWnd->PostMessage( WM_UPDATE_IMAVIEW , (WPARAM) m_image );

so übergebe ich eine Zeiger auf mein Bild an den View, der es dann darstellen soll. OnDraw stellt das Bild dann da. So zumindest der Plan.
Wo ist der Vorteil zu Euren Vorschlägen? (außer das meiner momentan nicht funktioniert;) ) Genauer gesagt läuft das Programm und OnDraw wird auch aufgerufen, nur zu sehen ist nichts.
Eine eine Ahnung, woran das liegen kann?

das Problem ist, dass ich dem View das Bild geben muß. Hätte jemand eine bessere Idee als einen Zeiger mit einer Message zu verschicken?

Code:
class CMyView: public CFormView
{
	IplImage		*m_image;
}

Code:
LRESULT CMyView::OnUpdateImaView(WPARAM pImage, LPARAM)
{
	m_image = (IplImage *)pImage;
	CRect rect;
	LPCRECT lpRect = ▭
	GetDlgItem(IDC_IMAGE)->GetWindowRect(&rect);
	InvalidateRect( lpRect, FALSE);

	return TRUE;
}

Gruß Jower
 
Zuletzt bearbeitet:
okay, ich glaube ich hab´s jetzt hingekriegt, war noch ein kleiner bug drin. :)
Trotzdem ist das Ganze mehr als kompliziert, also wenn jemand eine elegante Idee hat, nur raus damit.
Gruß Jower
 

Neue Beiträge

Zurück