CFormViewのメンバ変数にアクセスする方法は?

解決


ハルボン  2006-07-09 08:58:55  No: 62483

現在Microsoft Visual Studio .NET VC++でMFCを使用しツールを作成し用と思っています。
MDIで異なるフォームを持ったウィンドウを表示させています。

  フォームにピクチャーボックスを配置しDirectXのデバイスを関連付けし
3Dモデルを表示しようと思っています。
DirectXのデバイスの初期化の引数にウィンドウハンドルが必要なんですが
ピクチャボックスのウィンドウハンドルが取得できません。
ピクチャボックスを配置したCFormView内でDirectXのデバイスを初期化すれば
ウィンドウハンドルを取得できるのですが、
このデバイスはツール内で唯一のものなのでグローバル宣言し
初期化もグローバル関数内で行いたいと思いましたので
外からCFormViewのメンバ変数にアクセスしピクチャボックスのウィンドウハンドルの取得したいと思っています。

  ソースのどこを見てもCFormViewの実体を宣言しているところが無く
CWinApp内でCMultiDocTemplateで使用されているだけで
CFormViewのウィンドウハンドルやpublicで宣言されている
メンバ変数にアクセスすることが出来ません。
CFormViewのメンバ変数にアクセスする方法を教えていただけないでしょうか。

  初歩的な質問かもしれませんが、よろしくお願いします。


dairygoods  2006-07-10 18:30:45  No: 62484

今アクティブなものでよければ、
(CFormView*)((CFrameWnd*)AfxGetMainWnd())->GetActiveView()


dairygoods  2006-07-10 18:33:35  No: 62485

失礼、MDIでしたね。

CFrameWnd* pFrame = (CFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pChild = (CMDIChildWnd *)pFrame->GetActiveFrame();
CFormView* pFormView = (CFormView*)pChild->GetActiveView();


ハルボン  2006-07-11 08:56:41  No: 62486

dairygoodsさん、ありがとうございます。
無事取得することが出来ました。
しかし、メンバ変数を取得するだけでも大変なんですね・・・。
これは個々のCFormView内で処理を済ませるべきって事なのかもしれませんね。
もう少し、処理の流れを検討したいと思います。

  ありがとうございました。


επιστημη  2006-07-11 19:16:42  No: 62487

> しかし、メンバ変数を取得するだけでも大変なんですね・・・。

メンバ変数を他から貰おうとしないのが上策。
"誰が何をすればスマートか"を考えるが肝要です。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加