複数のコントロールをクラス化するには


さとう  2007-10-15 03:47:03  No: 66569

MFC(2005)でアプリケーションを作成しています。
EditBoxとSpinContorol、StaticTextがセットで複数存在するダイアログを作っています。
この3つのコントロールを持つクラスを作成し、ダイアログに表示
し、決まりきった処理を作成したクラス側で行いたいのですが、
やり方がよくわかりません。
1、何する。
2、どうする。
のように教えていただけないでしょうか?
ちなみに、SubclassDlgItemを利用して、ボタンを拡張することができました。複数のコントロールがある場合も、SubclassDlgItemを利用したとき
のような動作をさせたいのですが、その方法がよくわかりません。


さとう  2007-10-15 07:07:28  No: 66570

こんなイメージなんですが・・・

Dialog(MFC)
+-------------------------------------+
|  +-----------+ +------+ +--------+  |
|  |StaticText1| |Edit1 | |Button1 |  |
|  +-----------+ +------+ +--------+  |
|  +-----------+ +------+ +--------+  |
|  |StaticText2| |Edit2 | |Button2 |  |
|  +-----------+ +------+ +--------+  |
|  +-----------+ +------+ +--------+  |
|  |StaticText3| |Edit3 | |Button3 |  |
|  +-----------+ +------+ +--------+  |
+-------------------------------------+

↑こういうダイアログを作りたくて
+-----+ +------+ +--------+
|TextX| |EditX | |ButtonX |
+-----+ +------+ +--------+

この3つのコントロールを1つにまとめて(例えばCPartsクラス)
関連するメッセージなどの処理はこのクラスの中で行い

Dialogでは、メンバ変数に
CParts m_Parts1;
CParts m_Parts2;
CParts m_Parts3;

とかしてアクセスできるようにするには?
などといった手順が知りたいです。
1.CPartsクラスはDialogを基本クラスとして作ればいいのか?
2.作ったところで実装するダイアログにはどのように実装するのか?
3.メッセージをどのようにして取るのか?


subaru  2007-10-16 02:53:48  No: 66571

#ダイアログリソースを使用する場合の方法です。

>1.CPartsクラスはDialogを基本クラスとして作ればいいのか?
Yes

>2.作ったところで実装するダイアログにはどのように実装するのか?
コントロールにするダイアログリソースのプロパティを変更
Style→子
Control→True
Visible→True

CDialog::Create()でコントロールを作成します。

>3.メッセージをどのようにして取るのか?
基本コントロール側で処理しますがGetParent()で親の参照もできます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加