掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアログボックスをクラス化するさいプロシージャをメンバ化するには? (ID:72134)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>>1 >BOOL CALLBACK DefdlgProc() のことでしょうか DialogBoxParam()に渡すダイアログボックスプロシージャです。 関数名は何でもよいです。 >>4 >dlg = (Dialog*)((CREATESTRUCT*)lPalam)->lpCreateParams; 仮に当該クラスをclass XXDLGとすると WM_INITDIALOG でのlParamはXXDLGのインスタンスのポインタの はずなので、XXDLG * xxDlg = ( XXDLG *)lParam;のはず。 CREATESTRUCTはMFCが使ってるやつですね。つまりMFCも似た様な 仕組みを利用しているわけです。 >5番6番をどのように実装したらいいのか・・・申し訳ありませんが >ソースでのご教授をお願いいたします。 ダイアログボックスプロシージャをCOM_DLG_Proc()とすると BOOL COM_DLG_Proc( HWND h, UINT m, WPARAM w, LPARAM l) { XXDLG * xxDlg; if( WM_INITDIALOG == m){ xxDlg = ( XXDLG *)lParam; ::SetWindowLongPtr( h, DWLP_USER, xxDlg); xxDlg->HWND_Set( h); // メンバHWNDの設定 } else{ xxDlg = ( XXDLG *)::GetWindowLongPtr( h, DWLP_USER); } return xxDlg->INST_CallBack( m, w, l); } てな感じ、コンパイルしてないのでよろしく。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.