- ベストアンサー
カスタムコントロール
VisualC++6.0のリソースエディタで コントロールの中に カスタムコントロールというものがありますが これってどういうふうに使う物なのでしょうか? MFCでダイアログボックスの中に独自の子ウインドウを持たせたいのですが カスタムコントロールを使えばひょっとして楽にできるのかな、 と思ったのですが宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> 要はCreateWindowする手間が省けるといったところなのでしょうか。 そうですね。 座標を指定して CreateWindow するのと比べるとコントロールのレイアウトがしやすいと思います。 #1 の > 楽になるかというと,ならないような気がします。 という書き込みは少し勘違いで書いてしまいました。 ウィンドウクラスを登録するためにウィンドウプロシージャを書かなければならないので面倒, と思っていたのですが,よく考えると何もしないウィンドウプロシージャで登録しておいて, 後から CWnd 派生クラスでサブクラス化すればいいんですよね。 # 私が以前やったのが SDK のみで作ったカスタムコントロールを, # MFC 使用のプロジェクトで使うというものだったので混乱してしまいました。 そうすると,手間は CStatic の派生クラスを作る場合とさほど変らなさそうです。 両方の方法を解説しているページがあったので紹介します。 参考 URL の,「カスタムコントロールの作成方法」「スタティックコントロールのサブクラス化」 です。
その他の回答 (2)
> 結局カスタムコントロールの使い方はいまいちわかりませんでした。editだとエディトコントロールはできたのですが > 他にどういうクラスがあるのかよくわからなかったもので・・・ 例として(すぐ試せるように),edit を使いました。 自分で登録(RegisterClassEx)したウィンドウクラス名を使うのが本来の使い方だと思います。 実際そういう使い方をしたことがあります。
お礼
ご回答ありがとうございます。早速試してみました。 クラスはウインドウクラスなんですね。CWndなどのMFCクラスと勘違いしていました。 早速RegisterClassExで登録するとうまくいきました。 要はCreateWindowする手間が省けるといったところなのでしょうか。
「カスタムコントロール」を貼り付けた後, 右クリックして「プロパティ」を選んでください。 プロパティの「クラス」のところに, ウィンドウクラス名を記入します。 試しに edit などと記入して,ビルド&実行してみると, カスタムコントロールの部分がエディットボックスに置き換えられていることが分かると思います。 楽になるかというと,ならないような気がします。 「独自の子ウィンドウ」を CStatic の派生クラスにでもして, ダイアログにはとりあえず普通のスタティックコントロールを貼り付けておいて, サブクラス化(ClassWizard のメンバ変数の追加で,CStatic の派生クラスを割り当てればOK)したほうが楽そうです。
お礼
ご回答ありがとうございます。CStaticを派生させるのが 一番楽そうですね。 結局カスタムコントロールの使い方はいまいちわかりませんでした。editだとエディトコントロールはできたのですが 他にどういうクラスがあるのかよくわからなかったもので・・・
お礼
大変勉強になりました。ありがとうございました。