リソースを持つ汎用クラス

[戻る]
NOR 2011/04/04(月) 12:04:10
Visual C++ 2008 MFCです
ある特定の機能を持たせたコントロールのクラスを
他のプロジェクトでも使えるようにしておきたいと思っています
(アイコン付きのリストビューやビットマップボタンなど)。

リソースを持たない場合は、スタティックライブラリにしておいたり、
そのソースとヘッダをそのまま別プロジェクトにも追加してしまえば、
深く考えずにプロジェクトに組み込むことができますが、
リソースを持つものはどのように流用するべきものなのでしょうか?

・その都度、元のrcファイルやresource.hから必要な部分をコピペしてもらう?
・ソースやヘッダごとMFC拡張DLLにしてしまう?
・スタティックライブラリの中にもうまくリソースごと組み込める?

リソースさえ持っていなければ通常のクラスと同じように使えるはずなので、
可能な限り、利用者側はリソースを編集せずに使えるようにしたいのですが、
みなさんはどのように流用されていますでしょうか。

仲澤@失業者 2011/04/04(月) 12:33:24
DLLにすると思うのですが。みんなそうだし(vv;)。

仲澤@失業者 2011/04/04(月) 12:35:35
orz。当然ですが「MFC拡張DLL」にはしません。

NOR 2011/04/08(金) 11:21:17
ご意見ありがとうございます。
rc2ファイルなどをうまく使いこなせば、
リソースを持ったクラスをうまく再利用できるのかなと思ったのですが、
おとなしくDLLにしてしまうべきということなのですか。

ちなみに、MFC拡張DLLにはしないということですが、
それはMFCの派生クラスとして作らないということになるのでしょうか?

前述の通り、アイコン付きのリストビューやビットマップボタン、
さらには専用のマウスカーソルやコンテキストメニューや
文字列リソースを内部で持ったコントロールなどを再利用したいのですが。

仲澤@失業者 2011/04/08(金) 16:09:26
>ちなみに、MFC拡張DLLにはしないということですが、
>それはMFCの派生クラスとして作らないということになるのでしょうか?

すみません。orz 訂正させてもらいます。
現在ではSxS(サイドバイサイド)構成になっているので、十分な信頼性が
ありますよね。もちろんCDialogを継承したクラスをDLLに切り出して
しまえば、MFC共有DLLと動的にリンクすることになり結果「MFC拡張DLL」
となります。

以前はMFCのバージョンによる互換性の無さにはがっかりしたもので、
こういった楽観的な構成はあまりやたがらなかったもんで、つい。
現在では自分もしっかり_AFXDLLしてますです・・・とほほ(vv;)。

ryo 2011/04/10(日) 17:06:25
.rcや.rc2を駆使しただけでは
アイコンやビットマップファイル対しては何にも作用しない。
結局、これらも移動、プロジェクトに追加などすることになる

また、利用先のプロジェクトが初期状態で何もしてないならまだしも
途中で追加することも考えると文字列リソース、resource.hに定義内容なんかは、
すでに割り振られている名前や番号がかぶらないようにしないといけないでしょう

>可能な限り、利用者側はリソースを編集せずに使えるようにしたいのですが
これが最重要項目なら、DLL一択

NOR 2011/04/18(月) 15:57:09
[[解決]]
>>可能な限り、利用者側はリソースを編集せずに使えるようにしたいのですが
>これが最重要項目なら、DLL一択

ご意見ありがとうございます。
やはりそうなってしまいますか。

オリジナルのコントロールなどを作った際、
ソースを直接プロジェクトに組み込んだりlibファイルにまとめたりして
他のプロジェクトでも簡単に使い回せるようにしていたのですが、
独自のマウスカーソルやコンテキストメニューなどを
追加機能として持たせたとたんに、使い回しが難しくなってしまうのですね。

リソースのありなしだけで使いかたをガラッと変えるのも変な気がしますし、
それなら再利用を前提とした汎用クラスは
すべて拡張DLLを使う方法にしたほうが良いのかもしれません。

古いスレッドには追加発言できません。