
開発環境:vista Visual Studio 2012 C言語
メインのダイアログから、他のダイアログにデータを渡したい場合(もしくはその逆)は、どうすればよいのでしょうか。
受け渡しするものを、すべてグローバルにする方法は思いつくのですが、これ以外の方法ではどのようにすればよいのでしょうか。
参考になるサイトやAPIなどを教えてください。
例えば、
アプリケーションで、設定のメニューバーを押すと、ダイアログが出てきて設定をするというイメージです。この場合、ユーザが設定した値をメインのダイアログに渡しているということですよね。
No.2ベストアンサー
- 回答日時:
>この値をポインターとして認識させ、構造体に入れる。
>(ここの部分が分からないです。単純にアドレス渡しみたいな感じかなと思いやってみると「二項演算子 '=' : 型 'LPARAM' の右オペランドを扱う演算子が見つかりません」と出てきてしまって。)
普通にキャストするだけです。
static LPSettingData lpSD = NULL;
case WM_INITDIALOG:
lpSD = reinterpret_cast<LPSettingData>(lParam);
みたいな感じで。
# DialogBoxParam()で渡してましたな。私の場合。 モーダルダイアログだったので。
# モードレスダイアログの場合はCreateDialogParam()などで渡した構造体変数の寿命に注意する必要があります。
# ローカル変数のような寿命の短いモノを使うとアクセスするときには…なんてコトになりかねませんのでご注意を。
何度もお付き合い頂き、ありがとうございました。
無事にデータを渡すことが出来ました。今、モードレスダイアログで行っているので、今度モーダルダイアログの方もやってみます。また、注意事項等もいただき、本当に助かりました。
これからも、言語勉強を頑張っていきたいと思います。
No.1
- 回答日時:
Win32APIってコトでいいんでしょうかね?
>アプリケーションで、設定のメニューバーを押すと、ダイアログが出てきて設定をするというイメージです。この場合、ユーザが設定した値をメインのダイアログに渡しているということですよね。
私のやっている方法だと…
メインダイアログ(というか呼び出し側)で構造体などに突っ込んで、
構造体のアドレスをCreateDialogParam()のLPARAMとして渡します。
設定ダイアログの方では、WM_INITDIALOGのLPARAMで受け取った値を構造体へのポインタとしてアクセス、ポインタをstatic変数なりに保存しておきます。
設定ダイアログを閉じるときに、設定内容を構造体に設定してIDOKなどの戻り値で呼び出し側に返します。
設定された値を呼び出し側で取り出して適用します。
# IDCANCELで戻ってきた場合は破棄します。(というか設定ダイアログ側で反映させない)
モードレスダイアログの場合は…独自メッセージなりで処理でしょうかねぇ。
SendMessage()で構造体とかやりとり…でしょうか。
# PostMessage()ではなく。<渡した構造体なりの寿命の問題がありますからPostMessage()では危険。
大変ありがとうございました。
おかげさまで、どのようにすれば、値の受け渡しが出来るのかがよく分かりました。ただ、一つだけ問題が・・・。こちらの方も、教えていただけたら幸いです。
>LPARAMで受け取った値を構造体へのポインタとしてアクセス、ポインタをstatic変数なりに保存しておきます。
ここの部分が分からないです。いろいろと試してみたりしたのですけれど。LPARAMで受け取った値をどう処理すればよいのかが。
CreateDialogParam()のLPARAMで構造体のアドレスを渡す。
↓
ダイアログ側で、LPARAMのところに構造体のアドレスが入ってくる。
↓
この値をポインターとして認識させ、構造体に入れる。
(ここの部分が分からないです。単純にアドレス渡しみたいな感じかなと思いやってみると「二項演算子 '=' : 型 'LPARAM' の右オペランドを扱う演算子が見つかりません」と出てきてしまって。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「設定してほしい」と「設定さ...
-
AndroidのAPN設定をいじってい...
-
ペイントのページ設定を保存したい
-
ボタンが2つだけのデジタル時...
-
31日に初海外旅行へ行くので...
-
VLCのホットキーの設定が有効に...
-
振動試験の掃引の条件設定について
-
A4判40文字×35行、フォントサイ...
-
Windows11搭載のノートpcの設定...
-
Googleナビで高速に乗って遠出...
-
無線LANルーターはリチウム電池...
-
固定電話の留守電設定について
-
時刻を自動で設定するができない
-
エクセルVBAのヘッダーの設定に...
-
[オートフィルタ]の適用範囲の...
-
VBAで参照設定を行いたい GUID...
-
VSSの作業フォルダを未設定に戻...
-
携帯の待受画面の背景が過去に...
-
PACサーバーとは?
-
PC9801で拡張232C(PC-9801-101)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows11搭載のノートpcの設定...
-
Googleナビで高速に乗って遠出...
-
ボタンが2つだけのデジタル時...
-
「設定してほしい」と「設定さ...
-
AndroidのAPN設定をいじってい...
-
31日に初海外旅行へ行くので...
-
固定電話の留守電設定について
-
振動試験の掃引の条件設定について
-
時刻を自動で設定するができない
-
叶姉妹って本当に金持ちなんで...
-
APNがApplicationになっている
-
VLCのホットキーの設定が有効に...
-
A4判40文字×35行、フォントサイ...
-
OLYMPUSの日付について教えて欲...
-
アウトルック2019ですがIMAPで...
-
ウーバーイーツで楽天ペイで支...
-
WAKWAKメールのIMAP設定方法を...
-
JCOM利用で、TVを買い替えする...
-
【Town of Host】
-
バンダイ プリモプエル コプ...
おすすめ情報