Ableiten von CStatic
-
Hiho Leutz,
für meine Grafikanzeige mit OpenGL habe ich mir eine Klasse von CStatic abgeleitet mit dem Assistenten(VS 2005).
Nun wollte ich den Standardkonstruktor nutzen, um gewissen Werte zu initialisieren. Der Standardkonstruktor war schon deklariert in der Klasse und wenn ich nun auch definiere in der cpp kommen folgende Fehlermeldungen:(ohne Definition nur mit Deklaration kompiliert er problemlos)StaticOGL.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual struct CRuntimeClass * __thiscall CStaticOGL::GetRuntimeClass(void)const " (?GetRuntimeClass@CStaticOGL@@UBEPAUCRuntimeClass@@XZ)".
StaticOGL.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall CStaticOGL::~CStaticOGL(void)" (??1CStaticOGL@@UAE@XZ)" in Funktion ""public: virtual void * __thiscall CStaticOGL::`scalar deleting destructor'(unsigned int)" (??_GCStaticOGL@@UAEPAXI@Z)".
Ich weis jetzt nicht so recht, was ich da machen soll. Also der Linkerfehler is mir schon klar, aber jetzt der Zusammenhang mit der MFC und den tollen Makros was da wieder nicht zusammenpasst, das leider nicht.
Weis wer Rat?
-
hast du denn die classe CStaticOGL mit in dein project eingebunden/hinzugefügt?
-
LowFly schrieb:
hast du denn die classe CStaticOGL mit in dein project eingebunden/hinzugefügt?
Ja
hab grad rausgefunden woran es liegt: der Assistent hat in der cpp kein IMPLEMENT_DYNAMIC gemacht, warum auch immer ... .
-
Eine Frage habsch trotzdem mal noch: welchem Methodenaufruf fügt der Assistent ein, um Steuerelemente zu initilaieren und zu "Createn"?
Weil ich habe mir einem CSTatic auf eine mDialog eine COntrolvariable angelegt udn hab diese einfach durch meine angeleitete Static-Klasse vom Typ her ersetzt. Jetzt der geht der aber nie ins Create rein von meiner Klasse???
-
schlag mich aber wenn nichts im constructor der classe steht wohin er nach aufruf der klasse gehen soll pasiert doch nix oder? (lieg ich da falsch).
also must du doch dann m_static.Create(...,...,..,...); aufrufen oder nicht
-
LowFly schrieb:
schlag mich aber wenn nichts im constructor der classe steht wohin er nach aufruf der klasse gehen soll pasiert doch nix oder? (lieg ich da falsch).
also must du doch dann m_static.Create(...,...,..,...); aufrufen oder nichtOK ich schlag dich

Ich beschreibe mal mein allgemeines Ziel:
Ich möchte auf einem Dialog ein Static-Steuerelement hinzufügen. Das zieh ich per Ressourceneditor da hin. Darauf soll dann meine Grafikausgabe erfolgen(per OpenGL).
Nun möchte ich eine gewisse Interaktivität(schieben, zoomen, usw.), wozu ich Mausereignisse abfangen muss im Steuerelement.
Also leite ich mir von CStatic eine Klasse ab und füge gewünschte meine gewünschte Funktionalität hinzu.
So nun wollt ich einfach mir eine Controlvariable zu dem normalaen Static-Steuerelement erstellen. Das steht nun in der h-Datei des Dialogs und ist vom Typ CStatic. Und da schreib ich dann einfach mein eigenes Static rein.Das Erstellen des Fensters udn binden an den DIalog übernimmt dabei ja weiterhin der Assistent.
So nun leider scheint der kein Create zu benutzen, weil ich hab die Methode überscchrieben, der geht da aber nie rein.Ich bin für Vorschläge offen!
-
Langsam nervt mich VS mal wieder: nicht nur das Intellisense in dieser Klasse aus irgendeinem Grund keine Daten der Elternklassen anzeigt, nein jetzt wird nicht mal mehr der die Nachricht für LBUTTONDOWN der Maus gefangen. WM_PAINT komischweise geht. Und das Problem drüber is auch immer noch da
