"Refresh"-Button in DLL!?
-
Hallo zusammen!
Ich habe eine SDI-Anwendung, mit einer von CView abgeleitetend Ansichtsklasse (Name:"sehend"). Einige Dialogfelder habe ich aus Wartungsgründen und zwecks Wiederverwendbarkeit (ich brauche diese ebenso in einem 2. Programm) in ne DLL (MFC-Anwendungs-Assistent DLL) gesteckt.
In einem Dialog konnte man die Ansicht mit einem "Refresh"-Button neu zeichnen, wofür ich meine eigene Funktion draw() in der Klasse "sehend" benutzt habe. Das hat auch gut geklappt! Nachdem der Dialog jetzt in der DLL ist, wollte ich das verallgemeinern auf eine CView-Klasse, da ich die DLL sonst jedes mal wieder an eine abgeleitete Klasse anpassen müsste!
Mit dieser Funktion wird also jetzt der Dialog gestartet:
NMEditPropDialog((CView*)sehend);Im Konstruktor bekommt der Dialog also einen Pointer auf ein CView-Objekt.
Bei Klick auf den "Refresh"-Button soll folgendes ausgeführt werden:
sehend->Invalidate(); sehend->OnInitialUpdate();Nun bekomme ich dabei aber folgende Fehlermeldung in AFX2WIN.INL, Linie 112:
ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd));Also ist da irgendwie ein Fehler aufgetreten. Da ich mich mit dem nicht so auskenne, würde ich Euch gerne um Rat bitten!
Was ich gehört habe ist, daß es wohl problematisch sein könnte, den Pointer von einer Applikation einer anderen zu geben. Dies wäre wohl hier der Fall, weil es eine MFC-Anwendungs-DLL ist... (keine Ahnung!)
Soll ich einen anderen DLL-Typ nehmen, oder gibts da ne simple Lösung, oder überhaupt keine??
Würde mich WIRKLICH über jeden Typ freuen...!!!
Vielen Dank!
Gruß, Tobias
-
keiner hat ne Idee?
-
Hm, wäre es nciht eifnacher deinem View von der DLL ne Nachricht zu schicken? Und daraufhin zeichnet sich der View dann selbst neu?