現在Microsoft Visual Studio .NET VC++でMFCを使用しツールを作成し用と思っています。
MDIで異なるフォームを持ったウィンドウを表示させています。
フォームにピクチャーボックスを配置しDirectXのデバイスを関連付けし
3Dモデルを表示しようと思っています。
DirectXのデバイスの初期化の引数にウィンドウハンドルが必要なんですが
ピクチャボックスのウィンドウハンドルが取得できません。
ピクチャボックスを配置したCFormView内でDirectXのデバイスを初期化すれば
ウィンドウハンドルを取得できるのですが、
このデバイスはツール内で唯一のものなのでグローバル宣言し
初期化もグローバル関数内で行いたいと思いましたので
外からCFormViewのメンバ変数にアクセスしピクチャボックスのウィンドウハンドルの取得したいと思っています。
ソースのどこを見てもCFormViewの実体を宣言しているところが無く
CWinApp内でCMultiDocTemplateで使用されているだけで
CFormViewのウィンドウハンドルやpublicで宣言されている
メンバ変数にアクセスすることが出来ません。
CFormViewのメンバ変数にアクセスする方法を教えていただけないでしょうか。
初歩的な質問かもしれませんが、よろしくお願いします。
今アクティブなものでよければ、
(CFormView*)((CFrameWnd*)AfxGetMainWnd())->GetActiveView()
失礼、MDIでしたね。
CFrameWnd* pFrame = (CFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pChild = (CMDIChildWnd *)pFrame->GetActiveFrame();
CFormView* pFormView = (CFormView*)pChild->GetActiveView();
dairygoodsさん、ありがとうございます。
無事取得することが出来ました。
しかし、メンバ変数を取得するだけでも大変なんですね・・・。
これは個々のCFormView内で処理を済ませるべきって事なのかもしれませんね。
もう少し、処理の流れを検討したいと思います。
ありがとうございました。
> しかし、メンバ変数を取得するだけでも大変なんですね・・・。
メンバ変数を他から貰おうとしないのが上策。
"誰が何をすればスマートか"を考えるが肝要です。
ツイート | ![]() |