プロが教える店舗&オフィスのセキュリティ対策術

VisualC++6.0のリソースエディタで
コントロールの中に
カスタムコントロールというものがありますが
これってどういうふうに使う物なのでしょうか?

MFCでダイアログボックスの中に独自の子ウインドウを持たせたいのですが
カスタムコントロールを使えばひょっとして楽にできるのかな、
と思ったのですが宜しくお願いします。

A 回答 (3件)

> 要はCreateWindowする手間が省けるといったところなのでしょうか。



そうですね。
座標を指定して CreateWindow するのと比べるとコントロールのレイアウトがしやすいと思います。

#1 の
> 楽になるかというと,ならないような気がします。
という書き込みは少し勘違いで書いてしまいました。

ウィンドウクラスを登録するためにウィンドウプロシージャを書かなければならないので面倒,
と思っていたのですが,よく考えると何もしないウィンドウプロシージャで登録しておいて,
後から CWnd 派生クラスでサブクラス化すればいいんですよね。

# 私が以前やったのが SDK のみで作ったカスタムコントロールを,
# MFC 使用のプロジェクトで使うというものだったので混乱してしまいました。

そうすると,手間は CStatic の派生クラスを作る場合とさほど変らなさそうです。

両方の方法を解説しているページがあったので紹介します。
参考 URL の,「カスタムコントロールの作成方法」「スタティックコントロールのサブクラス化」
です。

参考URL:http://skpon.portland.co.uk/mfc_index.htm
    • good
    • 0
この回答へのお礼

大変勉強になりました。ありがとうございました。

お礼日時:2003/11/10 21:50

> 結局カスタムコントロールの使い方はいまいちわかりませんでした。

editだとエディトコントロールはできたのですが
> 他にどういうクラスがあるのかよくわからなかったもので・・・

例として(すぐ試せるように),edit を使いました。
自分で登録(RegisterClassEx)したウィンドウクラス名を使うのが本来の使い方だと思います。
実際そういう使い方をしたことがあります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。早速試してみました。
クラスはウインドウクラスなんですね。CWndなどのMFCクラスと勘違いしていました。
早速RegisterClassExで登録するとうまくいきました。
要はCreateWindowする手間が省けるといったところなのでしょうか。

お礼日時:2003/11/10 11:16

「カスタムコントロール」を貼り付けた後,


右クリックして「プロパティ」を選んでください。

プロパティの「クラス」のところに,
ウィンドウクラス名を記入します。

試しに edit などと記入して,ビルド&実行してみると,
カスタムコントロールの部分がエディットボックスに置き換えられていることが分かると思います。

楽になるかというと,ならないような気がします。

「独自の子ウィンドウ」を CStatic の派生クラスにでもして,
ダイアログにはとりあえず普通のスタティックコントロールを貼り付けておいて,
サブクラス化(ClassWizard のメンバ変数の追加で,CStatic の派生クラスを割り当てればOK)したほうが楽そうです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。CStaticを派生させるのが
一番楽そうですね。
結局カスタムコントロールの使い方はいまいちわかりませんでした。editだとエディトコントロールはできたのですが
他にどういうクラスがあるのかよくわからなかったもので・・・

お礼日時:2003/11/09 23:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!