リソースを持つ汎用クラス – プログラミング – Home

リソースを持つ汎用クラス
 
通知
すべてクリア

[解決済] リソースを持つ汎用クラス


NOR
 NOR
(@NOR)
ゲスト
結合: 23年前
投稿: 128
Topic starter  

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

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

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

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


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

DLLにすると思うのですが。みんなそうだし(vv;)。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

orz。当然ですが「MFC拡張DLL」にはしません。


返信引用
NOR
 NOR
(@NOR)
ゲスト
結合: 23年前
投稿: 128
Topic starter  

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

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

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


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

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

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

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


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

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

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

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


返信引用
NOR
 NOR
(@NOR)
ゲスト
結合: 23年前
投稿: 128
Topic starter  

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

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

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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