如何把系统自带的高版本RichEdit封装成BCB的控件

tianshanfe 2007-12-28 02:21:08
要新建这个组件应该怎样做呢?
我有一段代码,可以编译通过,但是运行不了。
.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);
}
}

//---------------------------------------------------------------------------
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianshanfe 2007-12-29
  • 打赏
  • 举报
回复
沒有人知道嗎?
拜托了
tianshanfe 2007-12-29
  • 打赏
  • 举报
回复
沒有人知道嗎?
拜托了

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧