Custom Control

公開:2004-05-21 06:16
更新:2020-02-15 04:36
カテゴリ:アプリ・ライブラリ・言語,windows

ダイアログエディタで「カスタム・コントロール」というのがあります。

これをダイアログにセットしてプロパティを表示すると下記のようになります。

classはWIndow Classを入れるようですが、なんだかよくわかりません。
VS.NETのヘルプを見るとこう書いてあります。

この機能は、Windows で用意されていないコントロールを使用できるようにするためのものです。実行時には、コントロールはウィンドウ クラス (C++ クラスとは異なります) に関連付けられます。このタスクを実現する一般的な方法は、ダイアログ ボックスに静的コントロールなどのコントロールをインストールすることです。実行時には、そのコントロールを OnInitDialog 関数内で削除し、カスタム コントロールに置き換えます。
これは、旧式のテクニックです。ほとんどの場合は、ActiveX コントロールを記述するか、または Windows コモン コントロールをサブクラス化することをお勧めします。
...要するに、

  1. カスタムコントロール配置
  2. classプロパティにウィンドウクラスを設定
  3. サブクラス化する
ということでしょうか?
しかし、ウィンドウクラスを指定ということは、ダイアログを作る前にカスタムコントロールのウィンドウクラスをRegisterClassしておかなくはいけないということですね。
この辺のテクニックってどうなのかと思い検索しますと、ダイアログclassのコンストラクタでウィンドウクラスを登録するんですね。
その後SubclassWindowすればよいようです。
いろいろ検索してみたら、MFCでカスタムコントロールを作る方法を解説しているページがありました。

さらに、どこか忘れましたが、ヒントとなるようなものも見つけました。そこには「WTLのCBitmapButtonの実装を参考にせよ」と書いてありました。なるほど、CBitmapButtonはカスタムコントロールだったんですよね。