問題タブ [classwizard]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mfc - MS VC++ 6 クラス ウィザード
OK、私が開発しているアプリケーションは、DOS の C からさまざまな種類の C++ を経て、過去 16 年間ほぼ継続的に開発されてきましたが、現在は主に MFC と StingRay GUI およびその他のさまざまな SDK を備えた C++ に基づいています。
私はリリース ビルドに VS 2005 を使用していますが、GUI ビルドの多くにはまだ MSVC 6 を使用しています。これは、この環境では ClassWizard がその後の弱い同等のツールよりもはるかに高速であるためです。ClassWizard を使用して、独自のユーザー定義型のコードを自動的に生成していることに注意してください (カスタム DDXを参照)。多くのメンバー変数とメソッドを一度に追加するのが好きです。Visual Studio の新しいバージョンのように一度に 1 つずつ作成することは、大きな後退です。同時に、複数の IDE で作業するのも面倒です。
私の質問は 2 つの部分に分かれています。
ClassWizard を VS 2005 または VS 2008 で動作させる方法はありますか?
私のような古い C++ ハックに同様のレベルの生産性を提供する代替または代替 IDE の低下はありますか?
c++ - 基本クラスから派生した ATL COM クラスを作成する方法は?
"ATL シンプル オブジェクト" ウィザードでは、新しいクラスが既存のコクラスとそのインターフェイスから派生することを指定する方法が提供されません。Visual Studio 2008 で、既存のクラスから派生した新しい ATL COM クラスを作成するにはどうすればよいですか (つまり、 Base
implementsであり、その implementsから派生した新しいクラスIBase
を作成したいのですが、ここで、は from から派生しています)。Derived
Base
IDerived
IDerived
IBase
更新: 簡単に聞こえますが、ウィザードで生成された ATL クラスには、最大 6 つの基本クラス、COM マップ、接続ポイント マップがあります。これらの基本クラスとマップのどれを派生クラスで繰り返す必要がありますか? マップが派生クラスで繰り返される場合、基本クラス マップのコンテンツを含める必要がありますか、それとも追加のアイテムだけを含める必要がありますか? 基本クラスの順序は重要ですか? FinalConstruct()
とはどうFinalRelease()
ですか?派生クラスで繰り返す必要がDECLARE_PROTECT_FINAL_CONSTRUCT
ありますか?DECLARE_REGISTRY_RESOURCEID
すべてのボイラープレートを除いて空のサンプル基本クラスを次に示します。では、派生クラスはどのように見えるでしょうか?
mfc - CPropertySheet ウィザード MFC アプリケーションで既定のボタンを削除するには?
こんにちは..MFC アプリケーションで CPropertySheet と CpropertyPage を使用してセットアップ ウィザードを設計しています.設計は完了しましたが、問題は..通常の CProperty シートには、4 つの既定のボタン "BACK NEXT FINISH HELP" があります.. .しかし、[次へ]ボタンと[終了]ボタンのみが必要です...次のコードを使用してそれを実行しましたが、実行時エラーが発生しました..「スタックオーバーフロー」このコードを正確にどこに含めるかわかりません(つまりどのクラス..この機能をどのように利用するか..誰でも私を助けることができます..
BOOL CExtractorFinalUIDlg::OnSetActive() { CSelfExtractor setButtons = (CSelfExtractor )GetParent(); setButtons->SetWizardButtons(PSWIZB_NEXT | PSWIZB_FINISH | PSWIZB_CANCEL);
CExtractorFinalUIDlg::OnSetActive(); を返します。
}
visual-studio - 新しいコード要素を返すことができませんでした。構文エラーの可能性があります
グループボックスの下に2つのラジオボタンがあり、最初の1つのグループをtrueにしました。しかし、ラジオボタン変数を追加すると、「新しいコード要素を返すことができませんでした。構文エラーの可能性があります」というメッセージが表示されます。理由は何でしょうか。
c++ - VS2010 での ClassWizard のカスタマイズ
VS2010 SP1 の登場により、私は再び VS2008 から新しいバージョンへの移行を検討しています。これの主な理由は、VC6 の長年のユーザーとして、ClassWizard が優れた生産性向上ツールであり、待望の復帰を歓迎していることです。ただし、ClassWizard は問題なく動作しますが、カスタム DDX ルーチンの作成に必要な .CLW ファイルに相当するものが見つかりません。たとえば、VC6 で長さの入力を定期的に処理する場合、CLW ファイルに次の行があります。
これにより、ClassWizard から長さ変数を追加できます。これが VS2010 でまだサポートされているのか、それとも VC6 に追いつくのにあと 1 年かかるのでしょうか?
c++ - VS2010でクラスをClassWizardにインポートできますか?
VS2010で、クラスを.hおよび.cppファイルからClassWizardにインポートして、ClassWizardを使用してクラスを操作できるようにする方法はありますか(変数の追加など)。プロジェクトに持ち込んだファイルのかなりの数VS2008から移行したとき、ClassWizardで使用できないようです。VS6に戻ると、CLWファイルを手動で編集することでこれを行うことができましたが、これは使用できなくなりました。関連する質問を参照してください
この情報を格納するファイルはMyProjectName.sdfだと思います。これは、エクスプローラーによってSQL Server Compact Editionデータベースファイルとしてリストされていますが、編集できるツールがあるかどうかはわかりません。
visual-studio - Visual Studio ClassWizard エラー
MSVC 2013 のクラスで ClassWizard スタートアップ エラーが発生します。
次に開きますが、ダイアログ コントロールとメッセージ ハンドラが認識されません。
ダイアログは、すべての標準 MFC コントロールを使用します。
resource.h 内のすべてのリソース ID 値は一意です。
//{{AFX_DATA
、 などのマークを{{AFX_MSG
適宜付けてみました。無効。
同じダイアログ ID の新しいクラスを生成しようとしました。ClassWizard は、新しいクラスを開始するときに同じメッセージを表示します。
プロジェクトまたはリソース ファイルに気に入らないものがあるようです。
何か案は?このことを診断する方法はありますか?ありがとうございました。
c++ - VS2013 のクラス ウィザードが OCX コントロールの属性メソッドを作成しない
OCX コントロールを使用する VC++6.0 で構築されたレガシー アプリケーションがあります。VS2013 でビルドするようにアプリケーションをアップグレードしました。最初は正常にビルドして実行できましたが、Class Wizard を使用して ocx.h および ocx.cpp ファイルを再生成しようとしたときに、
- ソリューション エクスプローラーでプロジェクトを右クリック
- ActiveX コントロールから Add:Class:MFCClass を選択する
- [追加]ボタン
- 登録済みコントロールのリストから OCX を選択
- コピーするインターフェイスを選択
- [完了]ボタン
生成された h および cpp 出力ファイルにすべての属性メソッドがありません
また、レジストリを使用する代わりに Class Wizard に OCX ファイルを直接指定しようとしましたが、結果は同じでした。ocx.h および ocx.cpp ファイルを手動で編集して欠落している属性メソッドを追加しましたが、Class Wizard がそれらを生成しない理由がわかりません。VC++6.0 バージョンに戻って、ファイルが正しく生成されるかどうかを確認しようと考えましたが、同じメニュー オプションが利用できないため、6.0 を使用して ocx.h および ocx.cpp ファイルを生成する方法がわかりません。
Hans のコメントに応えて 2018 年 3 月 5 日を追加
元の OCX プロジェクトで欠落している属性の 1 つを次に示します。
=====FILE:SigPlusCtl.h=========
=====ファイル:SigPlusCtl.cpp=========
=====ファイル:SigPlusImage.cpp====
そして、この不足している属性を使用するために、コンテナ プロジェクトで生成された .h および .cpp ファイルに追加する必要があったものを次に示します。VS2013 で再生成する前に、コンテナー アプリの元の OCX .h および .cpp ファイルからこのコードをコピーしました。VC++6.0 を使用してこれらのファイルを再生成できなかったため (以下の最初のコメントを参照)、このコピーされたコードがもともと VC++6.0 ウィザードによって作成されたものなのか、元のプログラマーがこれらのヘッダー ファイルも編集したのかはわかりません。
========FILE:sigplus================
========ファイル:sigplus.cpp=============
クラスウィザードにとって重要かどうかはわかりませんが、メソッドの場所は、OCX コントロールのメソッドの実装がすべて SigPlusCtl.cpp ファイルに配置されるのではなく、複数の .cpp ファイルに分散されているという点で、やや型破りです。
3-20-18 追加
Hans による 3-20 のコメントに続いて、Visual Studio 2013 で ocx ファイルを開いて TYPELIB を調べようとしました。しかし、TYPELIB フォルダーを展開すると、HEX ダンプしか表示されません。
OLE/COM Object Viewerを使用して OCX TypeLib インターフェイスを見ると、[プロパティ] の下に表示されていないプロパティが表示されますが、Get および Set メソッドの明示的な宣言が表示されません。たとえば、プロパティImageFileFormatはありますが、 GetImageFileFormatとSetImageFileFormatはありません。OCX コントロールのソースには、これらの Get/Set メソッドの明示的な定義があります。
メソッドの下の Get メソッドと Set メソッドの明示的なリストが OLE Viewer に表示されることを期待する必要がありますか?
18/3/20 17:00PDT 追加
@HansPassart がコメントで言及した#importを調べました。この Microsoft 固有のディレクティブは、クラス ウィザードの使用に代わるものと思われます。クラス ウィザードで生成されたファイル sigplus.h および sigplus.cpp をプロジェクトから削除し、追加しました。
メインヘッダーファイルに。#importディレクティブをコンパイルすると、sigplus.TLH および sigplus.TLI (ヘッダーと実装) ファイルが生成され、TLI ファイルを明示的にインクルードする sigplus.TLH がインクルードされます。#import をコンパイルすると、これら 2 つのファイルが生成され、生成された「Release/sigplus.tlh」がインクルードされます。これらの生成されたファイルには不足している Get/Set メソッドが含まれていますが、コンパイルされません。TLH ファイルは、OCX クラス _DSigPlus に別の名前を使用し、名前空間内に配置します。しかし、これらの違いを考慮した後でも、TLH ファイル内のクラス宣言は、Class Wizard が CWnd を使用する親クラスとして IDispatch を使用し、コンパイル時に、IDispatch の親である IUnknown からの次の未解決の純粋仮想メソッドがあります。
mfc - VS 2019 の MFC プロジェクトで Classwizard を表示できなくなりました
私のプロジェクトは何年も前に始まりました。現在、VS 2019 を使用しています。
(新しい VS ウィザードを使用するため) 右クリックしてイベント ハンドラーを追加できますが、クラスを右クリックして汎用変数を追加することもできます (新しい VS ウィザードを使用するため)。クラス ウィザードを表示できなくなりました。 :
プロジェクトのクリーニングを試み、フォルダーの名前を変更しようとしました。
表示を拒否し、次のメッセージを表示します。
値が期待される範囲内にありません。
表示されるその他のエラー メッセージは次のとおりです。
パラメータが正しくありません。(HRESULT からの例外: 0x80070075 (E_INVALIDARG))
これは、ダイアログ リソースの新しいコントロールに新しい変数を追加するのが非常に難しいことを意味します。
この問題を調査しましたが、2019 MFC プロジェクトで機能する解決策が見つかりません。
アップデート
Visual Studio インストーラーと修復を使用してみましたが、問題は解決しませんでした。