問題タブ [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 投票する
1 に答える
2357 参照

c++ - TypeLib 登録のための CComModule.RegisterServer、_AtlComModule.RegisterServer、および LoadTypeLibEx の呼び出しの違いは何ですか?

以前、COM dll の DllRegisterServer メソッドに、LoadTypeLibEx(module, REGKIND_REGISTER, &pTypeLib) を呼び出して、COM クラスとそれに対応する TypeLib を登録するコードがありました。私の COM DLL は 64 ビットです。私の 64 ビット Vista システムでは、HKCR:\\TypeLib\{myguid}\1.0\0の下に、COM DLL の場所を含む win32 サブキーがあることに気付きました。

私がサポートしている別の COM DLL には、古い、現在は推奨されていない CComModule.RegisterServer(TRUE) 呼び出しを使用する他のコードもあります。このコードは、64 ビット DLL の 0 キーの下に win64 サブキーを作成し、32 ビット DLL の 0 キーの下に win32 サブキーを作成します。すべての場合で登録を行うために、regsvr32 の正しいビット バージョンを使用しています (regsvr32 のビット数を DLL のビット数に一致させます)。

LoadTypeLibEx と _AtlComModule.RegisterServer の両方が TypeLib を含む 64 ビット dll の win64 キーを作成しないのに、古い CComModule.RegisterServer は正しいキーを作成するのはなぜですか?

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

c++ - ATL ウィンドウで「Enter キー」イベントをフラッシュ プレーヤーに渡しますか?

Flash プレーヤー (flash9.ocx) が ATL ウィンドウに埋め込まれており、return/enter キーが押されたことに応答する機能を swf にコーディングしました。スタンドアロンの swf プレーヤーからは正常に動作しますが、組み込みプレーヤー内から再生するとすぐに実行されません。どうやら私の窓が邪魔をしているようですか?キープレスをプレーヤーに渡す方法はありますか?

参考までに、フォームに変なところはありません。

ありがとう!

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

c++ - ATL プロジェクトでグローバル変数の値を変更しないようにするにはどうすればよいですか?

ActiveX(ATL) プロジェクトでのグローバル変数の使用についてサポートが必要です。ActiveX コンポーネントの基本的な機能は、複合コントロール (webbrowser 組み込み) で指定された URL にナビゲートすることです。URL 文字列は最初に初期化され、グローバル変数に保存されます。これが私の ActiveX プロジェクトのソース コード ファイルです。

(文法は気にしないでください。コード フローを示したいだけです)。

mycomponent ActiveX の使用は、MFC SDI (Single Doc/View) テスト アプリケーションで行われます。流れは次のようになります。

  1. App Initinstance では、activeX InitPlugin を呼び出して URL 文字列を初期化しました。
  2. [情報] ダイアログ ウィンドウで、MyComponentCtrl ActiveX を挿入します。[メインフレーム情報] メニュー項目をクリックすると、[情報] ダイアログが表示されます。目標は、情報ダイアログ ウィンドウがポップアップしたときに、常に指定された URL に移動できるようにすることです。

MFC テスト アプリが起動した後、[情報] ダイアログ メニューをクリックすると、[情報] ダイアログ ウィンドウが表示され、URL に正しく移動できます。

しかし、問題は、情報ダイアログを閉じて、しばらく (約 2 ~ 3 分) 待ってから、再度情報ダイアログを表示しようとしたところ、URL に移動できなかったことです。デバッグしたところ、MyComponenet プロジェクトのグローバル変数 szURL の値が失われていることがわかりました。

この問題を解決するにはどうすればよいか教えてください。

よろしくお願いします!

バイオニコダー

0 投票する
4 に答える
703 参照

c# - 正規表現を使用したC#部分文字列解析(ATL >> NET)?

この URL から「バー」を取得するために使用する必要がある C# & .NET Regex パターンは何ですか?

ATL 正規表現では、パターンは次のようになります。

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

com - COM と ATL のバージョン管理

私の Visual Studio 2008 ATL プロジェクトには、いくつかの場所でバージョン番号を定義するコントロールがあります。IDL ファイル:

コントロールのヘッダー ファイル:

そしてrgsファイル:

これらのバージョン番号の関係は何ですか? バージョン 2 をリリースしたい場合、3 つすべてをインクリメントしますか? また、レジストリ スクリプトのバージョンが 1.0 ではなく 1 しかないのはなぜですか?

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

c++ - MFC ウィンドウの OnFinalMessage と同等ですか?

ATL CWindow クラスには、OnFinalMessageウィンドウの最後のウィンドウ メッセージが処理された後に呼び出される便利な仮想メソッドがあります。この時点で、ウィンドウに関連付けられているオブジェクトを安全に破棄または削除できます。CWndMFCクラスから派生したウィンドウに相当するものはありますか?

0 投票する
6 に答える
10065 参照

atl - Active Template Library はどこで入手できますか?

私はこれまで COM を扱ったことがなく、いくつかのサード パーティの COM オブジェクトを使用するアプリケーションの作成を任されていました。誰かがそれらの使用方法に関するいくつかの優れたチュートリアルを教えてくれれば、それは大歓迎です. さらにすぐに、Active Template Library がインストールされていないようです。ネットで調べたのですが入手方法がわかりません。

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

atl - #含むエラー

このエラーでコンパイルに失敗する Visual Studio プロジェクトがあります:「インクルード ファイル 'atlrx.h' を開けません: そのようなファイルはありません」。

Codeplex から ATL サーバーをダウンロードして、ファイルをインストールするように言われました。ATL サーバーをダウンロードしましたが、続行する方法がわかりません。

助けてくれてありがとう。

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

c++ - ATLアプリ、XPスタイルのTABコントロールの背景

TABコントロールを含むダイアログを備えたATLアプリケーションがあります。アプリは共通のコントロールマニフェストを使用します。

視覚的なスタイルのXPでは、タブコントロールの背景は、ダイアログやコントロール(主にチェックボックス)とは異なる色であるため、非常に見苦しく見えます。

スクリーンショット

どうすれば修正できますか?

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

c++ - サードパーティのDLLをラップする

LoadLibrary()を使用して動的にロードする必要があり、__cdecl呼び出し規約を使用するサードパーティのDLLがあります。VB6のdllを使用できるようにする必要があるため、__ stdcall呼び出し規約を使用し、必要な関数をエクスポートする独自のラッパーDLLを作成しました。

追加の要件が到着し、管理方法を見つけるのに苦労しています。ラップされたDLLは別のアプリケーションにAPIを提供し、アプリケーションの2つのインスタンスに同時に接続する必要があります。DLLにはセッションの概念がないため、これは問題です。一般的な対話では、次のようになります。

そして私ができる必要があるのは

私が見ている主な問題は、単一のプロセスを1つのサービスにしか接続できないことです。そのため、最初に試した解決策は、ATLを使用してアウトオブプロセスCOMサーバーを作成することにより、DLLラッパーを別のプロセスに移動することでした。私が今抱えている問題は、COMサーバーのインスタンスを1つしか取得できないことです。

それで、私の質問は(最後に)ATL COMサーバーの新しいインスタンスを強制的に作成する方法はありますか?これは問題への最善のアプローチですか、それとも誰かがこれに取り組むためのより良い方法を考えることができますか?

ありがとうジャクソン