如何把系统自带的高版本RichEdit封装成BCB的控件
要新建这个组件应该怎样做呢?
我有一段代码,可以编译通过,但是运行不了。
.h文件
class PACKAGE MyRichEdit : public TRichEdit
{
private:
THandle flibhandle;
protected:
virtual void __fastcall CreateParams(Controls::TCreateParams ¶ms);
virtual void __fastcall DestroyWnd(void);
public:
__fastcall MyRichEdit(TComponent* Owner);
__published:
};
//---------------------------------------------------------------------------
#endif
.cpp文件
//---------------------------------------------------------------------------
void __fastcall MyRichEdit::CreateParams(Controls::TCreateParams ¶ms)
{
const char richeditmodulename[] = "riched20.dll";
char controlclassname[] = "RichEdit20W";
int olderror;
olderror = SetErrorMode(SEM_NOOPENFILEERRORBOX);
flibhandle = (unsigned int)LoadLibrary(richeditmodulename);
if((flibhandle>0)&&(flibhandle<HINSTANCE_ERROR))
{
flibhandle = 0;
}
if(flibhandle==0)
{
MyRichEdit::CreateParams(Params);
return;
}
SetErrorMode(olderror);
MyRichEdit::CreateParams(Params);
Params.Style = Params.Style |(HideScrollBars ? 0 : ES_DISABLENOSCROLL)|(HideSelection ? 0 :ES_NOHIDESEL);
CreateSubClass(Params, controlclassname);
}
//---------------------------------------------------------------------------
void __fastcall MyRichEdit::DestroyWnd(void)
{
MyRichEdit::DestroyWnd();
if(flibhandle!=NULL)
{
FreeLibrary((void*)flibhandle);
}
}
//---------------------------------------------------------------------------