問題タブ [atl]

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.

0 投票する
2 に答える
894 参照

c++ - 装飾名の変更-VS6.0からVS2005への移行

グーグルで数時間過ごした後、専門家に聞いてみる時が来たと思います。VS 2005に移植しようとしているレガシーモジュール(MS Visual C ++ 6.0)があります。多数の呼び出し元アプリケーションが存在するため、可能であれば、これらの下位互換性を維持しようとしています。

コード的には、これは非常に簡単で、数時間の開発ですべてのコンパイラエラーとほとんどの警告が排除されました。

次に、リンク手順でいくつかの「未解決の外部シンボル」エラーに遭遇しました。これは、装飾された名前の微妙な違いのようです。

1セットのエラーは、time_tがVS2005の64ビット構造であることに関連していることが判明しました_USE_32BIT_TIME_T。これらの3つを修正しました。

今、私は残りの2つのエラーで立ち往生しています:

関数は次のように定義されます

int RC_STATE::my_function(UINT stateId, UINT period, UINT index, UINT paramtype, UINT dpindex, UINT managerId, UINT calctype, UINT status, double *p_val, long *p_isc, CTime *p_time)

「古い」VisualStudioの下では、装飾された名前に満足していたようです

?my_function@RC_STATE@@QAEHIIIIIIIIPANPAJPAVCTime@@@Z

しかし今、VS2005は「CTime」パラメータにATL名前空間を含めたいと考えています。

?my_function@RC_STATE@@QAEHIIIIIIIIPANPAJPAVCTime@ATL@@@Z

この新しい装飾された名前で.DEFファイルを更新すると、コンパイルとリンクが行われます...やった!そのDLLを、以前は機能していたコードで削除するとすぐに、DLL内にプロシージャのエントリポイント(つまり、「古い」構造で名前空間がないもの)が見つからないと文句を言います。

助言がありますか?装飾された名前に名前空間を入れないようにコンパイラに指示できる、ある種のキーワード、コンパイラ指令はありますか(名前空間は良いことは知っていますが、名前空間を必要とするCTimeタイプとの競合はありません競合を解決します)。

装飾された名前を古い形式と一致させるための回避策はありますか?

どんな提案にも前もって感謝します。

0 投票する
3 に答える
1282 参照

c++ - ATL アプリケーションを正常にシャットダウンする

コンソール ATL アプリケーションを開発しましたが、close?、exit?、terminate? をトラップしたいと考えています。ログ ファイルを閉じて、終了時に一般的なクリーンアップを実行できるようにします。

誰かがタスク マネージャーで .exe を終了した結果発生する「終了」イベントをトラップするにはどうすればよいですか?

編集:

これはコンソール アプリケーションです。メイン クラスを追加しました。をどこでどのように使用すればよいか教えていただけますSetConsoleCtrlHandlerか?

0 投票する
1 に答える
1062 参照

c++ - COM/C++ ATL アプリケーションで OLE-DB を使用して dbf ファイルにアクセスするにはどうすればよいですか?

COM/C++ アプリケーション (ATL で作成) の dbf ファイルに含まれるデータにアクセスする方法は?

0 投票する
3 に答える
1203 参照

winapi - ATL ウィンドウ クラスの事前登録

プロジェクトで ATL と WTL を組み合わせて使用​​し、 から独自のクラスを派生させましたCWindowImpl。これは次のようになります。

これで問題ありませんCMyControl::Create。コントロールのインスタンスを作成するために使用すると、内部的には正常に機能し、CWindowImpl::Create関数は Win32 クラス (この場合は と呼ばれますMyClassName) を登録します。

ただし、この動作 (インスタンスの作成時に Win32 クラスが登録される) が頭痛の種です。Win32 呼び出しを使用してウィンドウを作成する別のサードパーティ ライブラリでクラス名を使用できるように、事前にクラスを登録できるようにしたいのですが、CreateWindowExこれを行う簡単な方法が見つかりません。現在、クラス名staticとして使用してこれを回避し、クラスをそれにアタッチするために使用しますが、これは面倒です。CreateWindowExCMyWindow::SubclassWindow

CWindowImpl実際にウィンドウを作成せずに派生クラスを登録する方法を知っている人はいますか?クラス名をCreateWindowEx正常に渡すことができますか? この問題に最初に遭遇することはできないため、ATL ウィンドウでこれを行う標準的な方法があると思います。

0 投票する
1 に答える
903 参照

c++ - 重要なオブジェクトの ATL コレクション

CMainClass オブジェクトの ATL COM コレクションを公開して、C#、VB、または C++ クライアントからアクセスできるようにしたいと考えています。

コレクション自体の設定に問題はありませんが、COM クライアントがクラス A、B、および C にアクセスできるようにする方法がわかりません。 std::list<> 各 ATL コレクションを独自の権利で?

これを行う簡単な方法はありますか?!?!

ありがとう、ポールH

0 投票する
1 に答える
1408 参照

visual-studio - ATL ダイアログで変数を追加するときの「オブジェクトが必要です」エラーを回避する方法

Visual Studio .NET 2003 を使用して、アンマネージ Visual C++ で COM ATL アプリケーションを開発しています。

ATL Dialag を作成しましたが、コントロールに変数を追加しようとすると、ウィザードは「オブジェクトが必要です」というメッセージをスローします。

私は次の代替案を試しました:

  • コントロールを右クリックして、そこから「変数の追加」を呼び出します。この方法では、ウィザードはメッセージをスローしませんが、変数は作成されません。
  • この投稿ですが、VS2005用です。

この問題の回避策を知っている人はいますか? または、手動で実行できるように、ウィザードが実際に行うことは何ですか?

0 投票する
3 に答える
9049 参照

xml - Visual C ++アプリケーションでXMLファイルを読み取る方法は?

Visual C ++アプリケーションでXMLファイルを読み取る方法は?

Visual Studio 2003 C ++COMATLアプリケーションでXMLファイルを読み取る必要があります-アンマネージコード。どのライブラリを使用する必要がありますか:msxml、xmllite、その他?

xmlが定義したxsdを満たしていることを確認してから、それを読み取る必要があります。

サンプルコードを歓迎します;)

前もって感謝します。

0 投票する
3 に答える
4868 参照

c++ - _bstr_t to UTF-8 possible?

I have a _bstr_t string which contains Japanese text. I want to convert this string to a UTF-8 string which is defined as a char *.

Can I convert the _bstr_t string to char * (UTF-8) string without losing the Japanese characters?