0

C ++ Builderで作成されるコンポーネントには、TComponentNameが割り当てられます。たとえば、フォームを作成してMyWidgetに割り当てると、TFormを継承するクラスがフォームを取得class TMyWidget : TForm{}します。spy ++のようなインスペクターを使用すると、アプリの登録済みクラス名を確認できます。

これに関して私の質問は次のとおりです。

  • フォームやコンポーネントを希望の名前(プレフィックスTを除く)で作成する方法はありますか?

私のやり方で、VCLフォームアプリを作成して保存しました。次に、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);
}

Nameオブジェクトインスペクターのプロパティを使用してTForm、コード内のクラス自体のクラス名を変更します。名前で調整しようとしないでください。常にプレフィックスが付けられることを知っておいてTください。DFMを無効にしてTForm、そのすべてのコンテンツをコードで手動で作成しない限り、クラス名は重要ではありません。

于 2011-11-30T02:26:06.050 に答える