CustomHint
-
Ich habe probiert damit ein eigenes Hint Fenster zu schreiben. Aber ich krieg immer einen Fehler bei
HintWindowClass = __classid(TBlueHint);[Linker Error] Unresolved external '__fastcall Controls::THintWindow::NCPaint(void *)' referenced from Project1.objHatte jemand schon mal das gleiche Problem oder einen Tipp?
-
Hast Du ALLES was zum HintWindow gehoert in der HEADER- Datei geschrieben???
Constructor und Paint NICHT in CPP- Datei der Form.
-
Jetzt habe ich alles in der haeder Datei. Nun kommt:
[C++ Error] Unit1.h(35): E2303 Type name expected
[C++ Error] Unit1.h(35): E2034 Cannot convert 'TMetaClass *' to 'int'
-
Merkwuerdig ist das. Bei mir klappt das problemlos.
Mach mal in leeres Projekt (nur eine leere Form) das:
//HEADER- DATEI UNIT1.H #include <vcl.h> //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- class TColorHint: public THintWindow { __fastcall TColorHint::TColorHint(TComponent * Owner): THintWindow(Owner) { Canvas->Font->Name="Times New Roman"; Canvas->Font->Color=clYellow; Canvas->Font->Style=Canvas->Font->Style<<fsItalic; Canvas->Font->Size=12; } void __fastcall TColorHint::Paint(void) { Color=clBlue; TRect R=ClientRect; R.Left=R.Left + 2; R.Top=R.Top + 2; DrawText(Canvas->Handle,Caption.c_str(),-1, &R,DT_LEFT|DT_NOPREFIX| DT_WORDBREAK|DrawTextBiDiModeFlagsReadingOnly()); } }; //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten void __fastcall FormCreate(TObject *Sender); private: // Anwenderdeklarationen public: // Anwenderdeklarationen __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif //CPP- DATEI UNIT1.CPP //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { HintWindowClass=__classid(TColorHint); ShowHint=true; Hint="Jetzt wird`s bunt"; } //---------------------------------------------------------------------------
-
[Linker Error] Unresolved external '__fastcall Controls::THintWindow::NCPaint(void *)' referenced from D:\BCB\PROJECTS\UNIT1.OBJGlaub mir,ich hab's so eingefügt wie du's beschrieben hast. BCB6.0 Enterprise...
-
hab hier noch was gefunden. Aber auch so klappt es nich...
-
Hi, ich wollte nur mal so anmerken, dass ich gerade vor exakt dem gleichen Problem sitze... ich versuch auch schon die ganze Zeit diese verdammten HintWindows zu verändern... und immer diese Meldungen...
-
Und ja... auch wenn cih eine neue Form nehme und da den Beispielcode von Bytes And More reintue, so wie sie es sagen... nunja... kommt die gleiche Meldung: Unresolved external...
- Windoof
-
Hallo,
Tragt mal das hier in die Klasse mit ein...
void __fastcall TBlueHint::NCPaint(HDC DC) { }Bis dann denn,

Nash
-
Suchfunktion benutzen! Z.B.
http://c-plusplus.net/forum/viewtopic.php?t=95689&highlight=*ncpaint*
-
Hallo,
Anscheinend gibt's da Unterschiede zwischen den BCB-Versionen. Im BCB6 geht's auf jeden Fall nicht so wie anfangs beschrieben. Nur durch einfügen einer leeren NCPaint-Funktion geht's.

Vielleicht hat ja jemand die BCB4-Pro-Version, dann kann man ja mal den Quellcode vergleichen...Bis dann denn,

Nash
-
Ja, so funktioniert es fast einwandfrei, nur wenn man 2 Elemente mit Hint-Effekten gleich nebeneinander hat und wartet, bis das HintWindow aufgeht und die Maus über das andere bewegt, zeichnet er den Rahmen des HintWindows nicht richtig... aber ich hab einfach TApplication::HintShortPause auf 100 gestellt, so blendet er es kurz wieder aus und öffnet es neu, und es funktioniert so prima

- Windoof
-
Also bei mir compiliert es jetzt auch. Aber das Hint sieht immer noch aus wie vorher?!?!?