開発環境: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も見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
ダイアログクラスのコントロールを別クラスで参照するには?
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
エディットボックスの入力制限について
C言語・C++・C#
-
-
4
【C++/CLI.NET】コンボボックスの値の設定・取得
C言語・C++・C#
-
5
EDITコントロールで入力できる文字を制限するには?
C言語・C++・C#
-
6
ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・
C言語・C++・C#
-
7
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
8
コンボボックスのドロップダウンリストが表示されない
C言語・C++・C#
-
9
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
10
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
11
MFC ダイアログ上のID取得について
C言語・C++・C#
-
12
コンボボックス表示文字列を取得する場合
C言語・C++・C#
-
13
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
14
ダイアログをスクロールさせるには
C言語・C++・C#
-
15
MFCでコンボボックスを選択不可状態にしたい
C言語・C++・C#
-
16
【C++/CLI】コンボボックスの値を取得したい
C言語・C++・C#
-
17
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
18
ラジオボタンのグループ化
C言語・C++・C#
-
19
MFCで水平スクロールバー
C言語・C++・C#
-
20
コンボボックスにリストが表示されません・・・
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleナビで高速に乗って遠出...
-
AndroidのAPN設定をいじってい...
-
「設定してほしい」と「設定さ...
-
ボタンが2つだけのデジタル時...
-
振動試験の掃引の条件設定について
-
親がAndroidで子がiPhoneで子供...
-
このPCのスペックではあと何年...
-
A4判40文字×35行、フォントサイ...
-
PC版のレインボーシックスシー...
-
VBAで参照設定を行いたい GUID...
-
APNがApplicationになっている
-
ワードの原稿調整について
-
セルスター ARG10A
-
Googleカレンダーで祝日に予定...
-
メールの送受信について。
-
honeyviewの質問
-
アウトルックですが、既読なの...
-
VSSの作業フォルダを未設定に戻...
-
LogMeIn Hamachi について質問...
-
根抵当権について教えてください。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleナビで高速に乗って遠出...
-
AndroidのAPN設定をいじってい...
-
「設定してほしい」と「設定さ...
-
ボタンが2つだけのデジタル時...
-
振動試験の掃引の条件設定について
-
WAKWAKメールのIMAP設定方法を...
-
APNがApplicationになっている
-
JCOM利用で、TVを買い替えする...
-
メールの送受信について。
-
Googleカレンダーで祝日に予定...
-
APEXでボイスチャットが出来ま...
-
固定電話の留守電設定について
-
親がAndroidで子がiPhoneで子供...
-
時刻を自動で設定するができない
-
ワードの原稿調整について
-
バンダイ プリモプエル コプ...
-
OLYMPUSの日付について教えて欲...
-
アウトルックですが、既読なの...
-
セルスター ARG10A
-
叶姉妹って本当に金持ちなんで...
おすすめ情報