A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
dlg.DoModal()でサブダイアログを表示しているのであれば
DoModalからの返り値を受け取ってこれを判断材料にして
サブダイアログの情報をメインダイアログ側で受け取って保存しておきましょう
チェックボックスやリストボックスの情報を得るには
GetMyCheckやGetMyListなどユーザー定義関数などでコントロールから情報を得る方法や、ダイアログのメンバー変数とコントロールを結びつけておくなどいろいろな方法があります
MFCでしたら ダイアログの編集画面を表示させておいて
変数と結び付けたいコントロールを選択します
VC2003のメニューから プロジェクト > 変数の追加 で
変数名などを定義しましょう
このときアクセス(A)が『public』ならば外部からもその変数は使えます
たとえば CheckBoxに対して追加した変数が m_myCheckだったとして
コントロール型なら
dlg.m_myCheck.GetCheck()
# この場合 m_myCheckがCButton型なので GetCheckでチェックされているかを取得する
値(Value)型ならば
dlg.m_myCheck
# 値型の場合は ダイアログが閉じる際に変数を更新してから閉じるため変数のチェックのみでいい
# キャンセルボタンや ダイアログの閉じるボタンの場合は更新されない場合があります
といった具合で使えます
なんにせよ 今あるコントロールがどのような管理がなされているのかを明示しましょう
ダイアログのコントロールを管理できる変数がどこにあるのかなど …
この回答への補足
解答ありがとうございます。
チャックボックスの値の取得が分かりましたが、listboxの情報(アイテムを選択した時(背色がついた部分))をどうやってメイン側で受け取るかうまくいきませんが、まだお願いいたします。
No.3
- 回答日時:
下の回答をした者です。
失礼。コンストラクタでCButtonを呼んではだめですね。
コンストラクタで値をもらったら、それをCSubDialogにメンバとして持っておき、OnOnInitDialogなどで設定する必要があると思います。
失礼しました。
この回答への補足
>DoModalで表示されたモーダルダイアログということでいいですかね。
説明不足で申し訳ありません、その通りです。
CSubDialogData ddata=dlg.getSettingData();
とか。
>このCSubDialogDataとかgetSettingDataとかは設定内容によって自分で
>作りましょう。
>で、このもらったデータをメインダイアログのデータメンバに持って
>おきます。
>で、サブダイアログのコンストラクタにこのデータを受け取る
>コンストラクタを追加する。
CSubDialog::CSubDialog(CSubDialogData ddata)
申し訳ありませんが、初心者でよくわからないので、もう少し詳しく教えていただければ、、、、
お願いいたします。
No.2
- 回答日時:
DoModalで表示されたモーダルダイアログということでいいですかね。
モードレスダイアログだと多少話が違ってくるのですが…。
普通は、メインダイアログに値をもらって持っておくと思います。
ボタンAでクラスCSubDialogのダイアログを表示させるとき、
void CMainDialog::OnBtnA() {
CSubDialog dlg;
dlg.DoModal();
}
のようなことをすると思います。
このDoModalが戻ってきたとき、すでにダイアログは終了しているので、dlgのメンバ関数を呼んで設定した値をもらいます。
例えば、DoModalのあとに、
CSubDialogData ddata=dlg.getSettingData();
とか。
このCSubDialogDataとかgetSettingDataとかは設定内容によって自分で作りましょう。
で、このもらったデータをメインダイアログのデータメンバに持っておきます。
で、サブダイアログのコンストラクタにこのデータを受け取るコンストラクタを追加する。
CSubDialog::CSubDialog(CSubDialogData ddata)
とか。
で、この中でCButton::SetCheckとかで各種設定項目を初期化する、と。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- プリンタ・スキャナー Brother MFC-7460DNの一時停止解除について 1 2022/12/03 12:38
- プリンタ・スキャナー エプソンとブラザーどちらのプリンタがいいでしょうか 6 2022/12/23 15:38
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- フリーソフト 編集ソフトのムービーメーカーについて教えてください 3 2023/02/25 16:20
- プリンタ・スキャナー ブラザー プリンターMFC-J4720N 2 2022/07/17 20:10
- その他(セキュリティ) Software Distribution folder の rename 手順 1 2022/08/19 13:08
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- オンラインゲーム もうすぐスプラトゥーン3が発売されるということで、現在購入しようか迷っています。 私は完全初心者で、 1 2022/08/27 01:38
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- CAD・DTP DraftSight 2022 PC乗り換え方法 とアカウント?の確認方法 1 2022/11/26 23:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
フォームでPDFを表示させた...
-
エクセルのコントロールツール...
-
エクセル - リストボックスのマ...
-
CEdit の内容が変わった時にメ...
-
連続で印刷すると画像が更新さ...
-
コモンダイアログコントロール...
-
DateTimePickerでに年月までし...
-
VB6.0のデザイン時 コントロー...
-
リストコントロール(MFC or API...
-
ActiveXコントロールを.NETにイ...
-
WM_SIZEを発生させる方法
-
VScrollBarの点滅を何とかしたい。
-
C++6.0でのresource.hについて
-
ドッキングウィンドウ(コント...
-
TabControlとToolBarの背景色変更
-
C#でChartコントロールを...
-
VC6 コントロールウインドウの表示
-
msiインストーラでフォルダのセ...
-
ACCESSのリストボックスで・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
C++6.0でのresource.hについて
-
DateTimePickerでに年月までし...
-
エクセル - リストボックスのマ...
-
コモンダイアログコントロール...
-
フォームでPDFを表示させた...
-
連続で印刷すると画像が更新さ...
-
ActiveXコントロールを.NETにイ...
-
スピンボタンを右クリックして...
-
警告表示を非表示にしたい
-
TabControlとToolBarの背景色変更
-
ワードのドロップダウンリスト
-
CEdit の内容が変わった時にメ...
-
文字色を変えたい(ACCESS VBA)
-
VScrollBarの点滅を何とかしたい。
-
EXCELVBA リストボックスで選択...
-
regsvr32でActiveX登録を行ったocx
-
VBAでリストボックス内で↑↓の操...
-
VB6.0のデザイン時 コントロー...
おすすめ情報