名字和使用所需名称而不是前缀T注册您的班级

时间:2011-11-26 09:48:31

标签: c++builder c++builder-2010

将在c ++构建器中创建的任何组件都将分配TComponentName。 例如,当我创建一个表单并将其分配给MyWidget时,它继承了TForm 得到class TMyWidget : TForm{}表格。使用类似检查员的间谍++,您可以看到应用程序的注册类名。

关于这一点,我的问题如下。

  • 是否可能,然后如何创建我们的表单,组件 用我们想要的名字(不包括前缀T)?

我这样做的方式我创建了VCL Forms App并保存了它。然后用我自己想要的类名替换TForm1,比如说,在我的情况{。{1}}中,在__classid()arg的.h,.dfm项目源文件中,但是有编译和链接问题!

告诉我如何实现这一目标的方向,而不仅仅是通过更改VCL来源!

1 个答案:

答案 0 :(得分:1)

您可以覆盖虚拟CreateParams()方法,以更改分配给HWND窗口分配的TForm的类名,例如:

void __fastcall TMyWidget::CreateParams(TCreateParams &Params)
{
    TForm::CreateParams(Params)
    StrLCopy(Params.WinClassName, _D("WidgetCl0x01"), (sizeof(Params.WinClassName) / sizeof(Char)) - 1);
}

使用Object Inspector中的Name属性在代码中更改TForm类本身的类名,不要尝试按名称进行调整。只要知道它将始终以T作为前缀,除非您禁用TForm的DFM并在代码中手动创建其所有内容,否则无法避免这种情况,因此类名无关紧要。