メインのダイアログをクリックしたら,自分で作成した別のダイアログが表示されるようなコードを書きました。
手法としては,
【1】ポインタを使用する。
1.メインのダイアログ(親ダイアログ)とは別に子ダイアログを作成。
2.子ダイアログにひもづくヘッダーを親ダイアログにひもづくヘッダーにインクルード。
3.親ダイアログにひもづくソースコードでポインタなどを使用し,子ダイアログを呼び出す。
【2】ウィンドウメッセージを使用する。
1.メインのダイアログ(親ダイアログ)とは別に子ダイアログを作成。
2.子ダイアログにひもづくヘッダーをメインのダイアログにひもづくヘッダーにインクルード。
3.親ダイアログにひもづくソースコードにSendMessage関数を入力。
4.子ダイアログにひもづくソースコードのBEGIN_MESSAGE_MAP~END_MESSAGE_MAPの間にON_Message()を加える。この関数の引数には,3で入力したSendMessage関数の引数のウィンドウのハンドルをわたす。
5.ウィンドウのハンドルを受け取ったら,子ダイアログが表示される。
おおざっぱですが,メインのダイアログとは別のダイアログを表示させるために2通りの方法をおもいつきました。しかし,【2】のような手法を用いなくとも【1】の方法で十分な気がしますし,そもそも【2】のSendMessage関数を使用した方法がウィンドウメッセージを使用した方法かどうかもよくわかりません。長くなりましたが,私の質問は
【質問】
1.【2】のやり方はウィンドウメッセージを使用した方法といっていよいのでしょうか。違うのであれば,ウィンドウメッセージを使用した方法を教えていただきたいです。
2.そもそもウィンドウメッセージのメリットがわかりません。クラスウィザードからで呼びすことができ,Windowsに直接命令できる便利な関数とは思っているのですが,その解釈は正しいのでしょうか。(もし,その解釈が正しいとすると今回の子ダイアログの表示方法は効率の悪い方法ということになる気がします…)
3.ウィンドウメッセージの関数はWM_…と表記されています。EN…という表記の関数も見つけたのですが,これはなんの略でしょうか。(情けない話,調べて見つけることができませんでした。)
4.ウィンドウプロシージャーという言葉を知りました。ウィンドウメッセージを理解する上で必要な気がするのですが,いまいちどういう仕組みなのか理解することができませんでした。PostMessageやSendMessageとセットで理解するものではないかと思っているのですが…
理解する上で,何かご助言をいただけると幸いです。
長文失礼しました。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/12 17:40
2018/08/13 02:53
2018/08/15 03:01