CTreeCtrlの派生クラスのエクスポート方法について – プログラミング – Home

CTreeCtrlの派生クラスのエクス...
 
通知
すべてクリア

CTreeCtrlの派生クラスのエクスポート方法について


supuli
 supuli
(@supuli)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

初質問ですので、不手際あるかと思いますが、あわせてご指南ください。
開発環境は、Windows2000,VisualStudio6.0です。
MFC拡張DLLを作成しています。
別の拡張DLLに、CTreeCtrlの派生クラスをのせた画面を呼び出せるようにしたいので
す。
ソースが手元にないので記憶の限りで記述させていただきます。

画面クラスと、CTreeCtrlの派生クラスをエクスポートし、
(class __declspec(dllexport) 派生クラス名 : public CTreeCtrl)
画面が呼び出せはするのですが、画面を閉じる時に、Access Violationが起きてしまい
ます。
デバッグで追いかけたところ、呼び出し時に、呼び出し元にて確保してあるリソースハ
ンドルがクリアされてしまいました。
const HINSTANCE hInstance = AfxGetResourceHandle();
AfxSetResourceHandle(DLL のインスタンス ハンドル);
CDialog dlg;
dlg.DoModal();//画面呼び出し時に、上のhInstanceがNULLになってしまいます。
AfxSetResourceHandle(hInstance);

CTreeCtrlの派生クラスに、メンバ変数が存在しない場合は、hInstanceはNULLになりま
せんでした。
現在手詰まりで、どこから調べたらよいかも分からない状況です。
助言、宜しくお願いいたします。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

リソースは全てDLLに含まれていますか?

> const HINSTANCE hInstance = AfxGetResourceHandle();
> AfxSetResourceHandle(DLL のインスタンス ハンドル);

拡張DLLは、自分自身をリソース検索列に追加するので、
こういう操作は不要だと思うのですが、
何か理由があってのことでしょうか?


返信引用
超初心者
 超初心者
(@超初心者)
ゲスト
結合: 23年前
投稿: 139
 

CDialog dlg;
じゃなくて
CTreeCtrlの派生クラスを使用しているCDialogの派生クラスじゃないの?


返信引用
supuli
 supuli
(@supuli)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

説明不足ですみません。
>拡張DLLは、自分自身をリソース検索列に追加するので、
>こういう操作は不要だと思うのですが、
>何か理由があってのことでしょうか?
知識不足でリソース検索列の意味が分からないので教えてください。
初期画面として、VCでExeを用意しており、そこから、各拡張DLLを呼び出しています。
呼び出された拡張DLLから、さらに別の拡張DLLを呼び出したりもしています。
Exeなり、拡張DLLなり、切り替えるときには、
上記のようにリソースハンドルを切り替えるもの
というお決まりのものだと思っていました。

>CDialog dlg;
>じゃなくて
>CTreeCtrlの派生クラスを使用しているCDialogの派生クラスじゃないの?
その通りです。言葉足らずですみません。
CDialogの派生クラスに、CTreeCtrlの派生クラスをメンバ変数にして用意しています。

CObjectの派生クラスなんかはエラーは発生していないです。
以上、宜しくお願いいたします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました