0

将在 c++ builder 中创建的任何组件都将被分配 TComponentName。例如,当我创建一个表单并将其分配给 MyWidget 时,继承 TForm 的类就会获取class TMyWidget : TForm{}表单。使用 spy++ 之类的检查器,您可以查看应用程序的已注册类名。

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

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

我这样做的方式是创建 VCL Forms App 并保存它。然后用我自己想要的类名替换 TForm1,例如,WidgetCl0x01 在 __classid() arg 中的 .h,.dfm,project 源文件中,但存在编译和链接问题!

告诉我如何通过更改 VCL 源来实现这一目标!

4

1 回答 1

1

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

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

使用NameObject Inspector 中的属性来更改TForm代码中类本身的类名,不要试图通过名称来调整它。只要知道它总是以 a 为前缀T,除非你禁用 's DFM 并在代码中手动创建其所有内容,否则你无法避免这种TForm情况,那么类名将无关紧要。

于 2011-11-30T02:26:06.050 回答