掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアログボックスをクラス化するさいプロシージャをメンバ化するには? (ID:72132)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
大昔に書いた、自分のDLGクラスは次のようになってましたので、 参考にしてください。 1.全DLG共用のコールバックをC関数で作る。 2.DLG(ウインドウの作成)は当該クラス(Dialog)のメンバ関数で作成し DialogBoxParam()を使う。このときLPARAM dwInitParam に 当該クラス(Dialog)のthisを渡す。 当然、DLG共用のコールバックはfriendにしてある。 3.DLG共用のコールバックで、WM_INITDIALOGを受領したとき、 引数のLPARAMにさっきのthis(=Dialog*)が渡ってくる。 4.ので、クラスインスタンスポインタ(=Dialog*)にLPARAMをキャストして、 SetWindowLongPtr()で、DWLP_USER位置にクラスポインタ(=Dialog*) を埋め込む。 5.WM_INITDIALOG以外のメッセージは、GetWindowLongPtr()でDWLP_USER位置 から、クラスポインタ(=Dialog*)を取得してそれの->MyProc()を コールして、戻り値をリターンする。 6.当然MyProc()では、不要な処理はDefdlgProc()で処理する。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.