開発環境: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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Office(Windows版,Word/Excel/PowerPoint等)にログインできません 4 2022/07/24 15:18
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Windows 10 MSアカウントの「個人設定をクラウドから削除します」は機能していないのでしょうか? 1 2022/11/20 17:01
- C言語・C++・C# Seleniumで「ファイルを開く」ダイアログボックスのフォルダ指定する方法を教えてください。 1 2022/05/09 07:38
- Microsoft ASP Windows10エンタープライズ版をインストールしたらアプリが使えなくなった 3 2023/03/07 11:08
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- YouTube Win10 Youtubeの動画を開くと、必ず右下に設定ダイアログ?が表示されます 2 2023/03/26 11:35
- フリーソフト stable diffusion gui について 1 2022/10/25 18:31
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ダイアログクラスのコントロールを別クラスで参照するには?
C言語・C++・C#
-
エディットボックスの入力制限について
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
-
4
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
5
子ダイアログのデータを親ダイアログで取得するには
C言語・C++・C#
-
6
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
7
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
8
コンボボックスのドロップダウンリストが表示されない
C言語・C++・C#
-
9
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
10
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
11
MFC、ダイアログベースでのモードレス作成
C言語・C++・C#
-
12
OnInitDialog()の関数の組み込み方
C言語・C++・C#
-
13
ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・
C言語・C++・C#
-
14
既定のコンストラクタがない?
C言語・C++・C#
-
15
EDITコントロールで入力できる文字を制限するには?
C言語・C++・C#
-
16
ビジュアルC++でボタンの有効/無効
C言語・C++・C#
-
17
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
18
charからLPTSTRへの変換方法
C言語・C++・C#
-
19
VC++でコントロールの境界線を描画する方法
C言語・C++・C#
-
20
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンが2つだけのデジタル時...
-
APEXでボイスチャットが出来ま...
-
Googleナビで高速に乗って遠出...
-
AndroidのAPN設定をいじってい...
-
A4判40文字×35行、フォントサイ...
-
ワードの原稿調整について
-
LogMeIn Hamachi について質問...
-
「設定してほしい」と「設定さ...
-
振動試験の掃引の条件設定について
-
親がAndroidで子がiPhoneで子供...
-
OMRON PLC CP2Eのプログラム
-
セルスター ARG10A
-
VBAで参照設定を行いたい GUID...
-
アウトルックですが、既読なの...
-
QRコードって無限に作れるんで...
-
OLYMPUSの日付について教えて欲...
-
ちびまる子ちゃんの体育着
-
カーリースの残価設定の質問で...
-
「マンガミーヤ」は「windows1...
-
ダイアログ間のデータ渡し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ボタンが2つだけのデジタル時...
-
AndroidのAPN設定をいじってい...
-
親がAndroidで子がiPhoneで子供...
-
Googleナビで高速に乗って遠出...
-
振動試験の掃引の条件設定について
-
VARDIA,デジタル受信設定の暗証...
-
WINDOWS PCとスマホについて
-
ワードの原稿調整について
-
APNがApplicationになっている
-
「設定してほしい」と「設定さ...
-
WAKWAKメールのIMAP設定方法を...
-
OLYMPUSの日付について教えて欲...
-
JCOM利用で、TVを買い替えする...
-
このPCのスペックではあと何年...
-
セルスター ARG10A
-
ウーバーイーツで楽天ペイで支...
-
QRコードって無限に作れるんで...
-
時刻を自動で設定するができない
-
X-R管理図 管理限界線の更新頻...
-
honeyviewの質問
おすすめ情報