• ベストアンサー

VC++6.0の基本的な質問(操作)

VC++初心者です 別々のプログラムA、とBがあったとします。プログラムAの中で使われているクラスの派生クラスをプログラムBで作ろうと思いますが、そういう場合みなさんどうしてますか(簡単な方法ありませんか)? また作ったクラスやリソースをワークスペース内から削除(コメントアウトではなく)したいのですが、うまくいきません。これも何か良い方法ありませんか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nobe
  • ベストアンサー率66% (59/89)
回答No.3

こんにちは。 こんな答えでよいのか判りませんが ご参考になればと思います。 お仕事でも趣味でも良く使う方法です。 VC++6.0ならMFCが使えますよね。 MFCはDLLというライブラリですが、作り手は そのサブクラス(派生したクラス) を作ることが出来ます。 これはM社さまがお勧めの方法で、 私もこれと同じように良く使うクラスをDLLにして 作っておきます。 追加するクラスがMFCを使用している 必要はありません。適当なクラスでOKです。 MFCは単純にDLLを作るためにあるのだ、 と思ってください。 適当な所に置いてパスを通して置きます。 不具合はサブクラスで修正すればよいので DLLが増えていきますがWindowsなので 気にしません(笑)。 1.DLLの作成はアプリケーションウィザードを   使って、AppWizard(dll)というのを選びます。   ※アプリケーションウィザードは既存の    プロジェクトに追加することも出来ます。 2.作成するDLLの種類というのを聞いてくると   思いますので、最初に選択されている   「MFCの共有DLLを使用」を選びます。   他の選択は各自で自由に選んでください。 3.終了のボタンを押すと、theAppというオブ   ジェクトが1つだけのソースが出来ます。 4.このクラスはDLLのインスタンスの実態   ですが特に作り手がなにかする訳ではあり   ませんので気にしないで下さい  (そのうち判ってくるでしょう)。 5.あとはここに自分で作成したクラスを追加   していきます。 6.忘れてならないのは、エクスポートの設定で、   自分で作成したクラスに   __declspec(dllexport)というキーワードを   つけることです。   また、同じクラスを他のプログラムで使ったり   派生させるにはこのヘッダファイルを   #includeすると思いますが、   今度はここのキーワードが   __declspec(dllimport)で無ければなりません。   そこでマクロを作っておいて、   DLLをメイクするときは   __declspec(dllexport)を、それ以外では   __declspec(dllimport)になるようにします。    → マクロは自分で考えてみてください。   以下に例を示します; 例: この例ではCMyClassのDLLをコンパイルする時に  プリプロセッサの定義名としてDLLMYCLASS_MAKEを  追加してコンパイルします。  他のプログラムで使うときは定義しません。 #ifdef DLLMYCLASS_MAKE #define DLLAPI __declspec(dllexport) #else #define DLLAPI __declspec(dllimport) #endif class DLLAPI CMyClass { ... }; 7.作成されたDLLはインポート用のライブラリ   (.lib)が出力先のRelease/Debugのフォルダに   出来ますので、   ヘッダファイルとこのライブラリがあれば   サブクラスのDLLやプログラムが作れます。 8.拡張子が .DLL のファイルだけインポートして   使うプログラムと同じ場所か環境変数PATHが   通ったところに置いてください。   勇気があるなら、Windowsディレクトリや   System32ディレクトリに置いてもOKです。 さて、後者のご質問ですが、 1.まず削除したいクラスを含むファイルを開いて   いたら閉じます。 2.次に、ワークスペース(クラス一覧が表示   されているビュー)にFileViewというのが   あるので、そこから削除したいクラスを含む   ファイルを削除します。   マウスで選んでDeleteキーを押してください。   ヘッダファイルも忘れずに削除します。 3.さらに、エクスプローラを立ち上げて今削除   したファイルの実態を消します。   VCのFileViewは連動しているわけではないので   ここは面倒なところです。Ver7.0に当たる   Microsoft Visual Studio .Net 2003ではここが   改善されて一発でファイルが削除されるように   なりました。 4.さらに、また面倒ですが、一度VCを閉じます  (完全に終わらせてください)。   そして、エクスプローラで拡張子が .clw と   いうファイルがあると思いますので、これも   消してしまいます。   これはクラスウィザードの環境ファイルです。 5.VCに戻って、Ctrl+Wと入力するとクラス   ウィザードが起動しますが、設定ファイルが   無いので確認のダイアログが出ます。   [OK]を選択します。 6.次に「ソースファイルの選択」という   ダイアログが出ますのでここでは単純に[OK]を   選んでください。 7.そうするとクラスウィザードからも   プロジェクトからもクラスのファイルが   消えます。 8.注意点として、その消したクラスのヘッダ   ファイルを他のファイルで参照(#include)   していたとき、その参照は消えませんので   手動で消すしかありません。 余談ですが、 MFCを使ってプログラムをしているときで、 たとえば他のプログラムで自分用に CStaticクラスをサブクラス化したCMyStaticクラス を作ったがダイアログメンバとしてそのクラスが 使えないときなどは、普通にファイルをプロジェクト に追加しただけではだめですが、4~7を行うと 出来るようになります。 お役に立ちましたら幸いです。

_comcom
質問者

お礼

大変お詳しいお答えありがとうございます。 さっそく試して、うまくいきました。 大変役立ちました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

元のクラスに関連するファイルをプログラムBのディレクトリへコピー。 プログラムBのプロジェクトを開く。 [プロジェクト]-[プロジェクトへ追加]-[ファイル]から追加。 では? ファイルを開いて右クリックメニューにも項目があったかも。 あるいは、[表示]-[ワークスペース]のFileViewにエクスプローラからドラッグ&ドロップする荒技も。 削除は[Del]キーでOKだったハズ。 あるいはリソースIDや自動挿入されたソースが消えないという事でしょうか?こちらは手動で削除しかないかも。

_comcom
質問者

お礼

ありがとうございます。 やってみます。

全文を見る
すると、全ての回答が全文表示されます。
  • uyama33
  • ベストアンサー率30% (137/450)
回答No.1

消したい物を左クリックします。 上の方の、ファイル、編集、。。。 の編集をクリックして削除をクリック で消えるでしょう。

_comcom
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VC++でメニューの消し方

    VC++V6.0(MFC)で書かれたソースコードのメニューを 消したいんですけどその方法が分かりません。 どうやったら消せるんですか? リソースエディタで編集できるまでは分かったんですが 消す方法はやっぱり分かりません。 ちなみにソースコードは http://hirotake.web.infoseek.co.jp/ の InverseKinematic.lzh (231KB) (Visual C++ Ver 6.0用) (解凍したら「ワークスペースを開く」で InverseKinematic.dswをクリックするだけでビルド準備OKです) どうかお願いします。

  • 基本クラスのポインタで、派生クラスのメンバ関数を呼び出す方法?

    VC++でプログラミングをしています。 A(基本クラス) B(派生クラス) を作成しました。Bは、Aの特別な場合です。 このとき、基本クラスAのポインタから、派生クラスBにのみあるメンバ関数を呼ぶことはできないのでしょうか? 基本クラスAにも同じ名前の関数があれば、仮想関数をオーバーロードすれば呼び出せるようですが、この関数は、基本クラスには不要なので、できれば使わないメンバ関数を基本クラスに書きたくありません。 (純粋仮想関数という方法もあるようですが、) 操作としましては、 Aのポインタ配列 A* a[100]を作成し 特別な場合のみ派生クラスBのメンバ関数だけを実行させたいのです。 派生クラスにのみあるメンバ関数を、Readとします。 for(i=0;i<100;i++){ if(派生クラスBの場合){ a[i]->Read() } } 現状では、コンパイルエラーで、 関数Readは、aのメンバ関数ではありませんとなってしまいます。 以上よろしくお願いします。

  • VC++の外部依存関係

    VC++初心者です。 タイトル通りVC++のFile Viewにある外部依存関係とは何ですか? ここにワークスペースに自分自信で追加したインクルードファイル以外のものが出てきます。なんとなく、コンパイルオプション(プロジェクトの設定メニュー)に設定してあるインクルードファイル類と関係がありそうにも思えますが、そうなのでしょうか? 今、手元にVC++が無いので、実際に試せないのですが、この外部依存関係に出てくるインクルードファイルも自分で追加したものの様にVC++上で編集して保存出来てしまうのでしょうか? また、インクルードファイル以外にも外部依存関係という所に設定次第で表示されるものがあるのでしょうか? 例えば、そのワークスペース内のプログラムで使用するテキストファイル(iniファイル等)等も表示されるのでしょうか? (これは無さそうですが。。。) 以上、よろしくお願いします。

  • VC++についてです

    クラスの中で他のクラスで定義した変数を使う場合はどのようにしたらいいのでしょうか?又、Cで作ったプログラムをVC++組み込もうとしているのですが、変数宣言等はどのクラスのどこにすれば、他のクラスでも使えるようになるのでしょうか? よろしくお願いいたします。

  • 異なるプロジェクトの参照

    同じワークスペースにある、異なるプロジェクトのクラスを使う方法を教えてください。 VC++ 4.0 windowsXP

  • VC++

    今.NETでVC++をやっているのですが、 Aのエディットボックスでキーボードから文字を入力、 決定ボタンを押下後、Bのエディットボックスに出力させるプログラムを教えていただけませんか? Cは経験あるのですが、VC++となると少し…

  • VC++でプログラミングしていますが

    VC++である文章を入力すると、Aか、Bという文章が表示されるプログラムを書きたいと思っています。 ある文章を入力するとAという文章が表示されるプログラムはできたのですが、AまたはBを表示させることができません。 どのように書けば良いのでしょうか。 初歩的な質問かもしれませんがよろしくお願いします。

  • 至急教えてください(VC++)

    VC++の質問です。 クラスA : クラスBを宣言 B b; クラスB : クラスCを宣言 C c; クラスC クラスCからクラスBでpublicで宣言されている関数を読み出すには どうしたらよいのでしょうか。 自分を宣言したクラスのポインタを取得する関数とかがあるのでしょうか。

  • VCでヘッダが見えないエラー

     Vista上でVisualStudio2008を使っています。c:\Program Files下にWinPcapをインストールして、ユーザホームのドキュメントフォルダ下にVCのワークスペースを作成してあります。  この状態で、WinPcapのサンプルプロジェクトを作ってプログラム実行すると、  fatal error C1083: include ファイルを開けません。'pcap.h': No such file or directory というエラーが出ます。VCは管理者権限で起動しています。ヘッダファイルのあるディレクトリの読み取り権限はあります。  他に何を確認すべきか教えてください。

  • 別のワークスペースからダイアログ、ヘッダ、CPPを挿入したい

    申し訳ございません、お教えください。 他のワークスペースからダイアログのリソース、ヘッダ、CPP を挿入したいのですがわかりません。 どなたか教えてください。 Win CE eMbedded VC++ 4.0で開発しております。 宜しくお願いいたします。

このQ&Aのポイント
  • エスティマHV補機バッテリー温度センサーの構造や流用の方法についてご質問があります。
  • エスティマHVの補機用バッテリーが寿命を迎えたため、流用する互換サイズのバッテリーを考えています。
  • 純正品との決定的な違いはガス抜きプラグと温度センサーの有無です。センサーユニットを流用することで機能するか、ご相談したいです。
回答を見る