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

windows - Atl サービスが登録されていません

を使用してatlサービスを登録しようとしています

ExeName.exe /サービス

ここで説明されているように: http://msdn.microsoft.com/en-us/library/74y2334x(VS.80).aspx

しかし、それを行った後、サービス コントロール パネル (vista のスタート ボックスに「サービス」と入力して表示されるパネル) に表示されません。

/service スイッチを処理する場所を確認するために atl コードを掘り下げようとしましたが、/RegServer と /UnregServer を処理するコードは見つかりましたが、見つかりませんでした。

これは以前は機能していましたが、以前にこのサービスを登録することができました。しかし、現在、その場所を移動しており、再度登録することはできません。ExeName.exe /service を実行すると、最初に /RegServer を実行するとローカル サーバーとして起動しますが、サービスとしてインストールしたいと考えています。

/service スイッチの処理がどこで行われるか知っていますか?

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

c++ - ホストされた Internet Explorer で新しいウィンドウが開かないようにする方法

CAxWindow ATL クラスで Internet Explorer インスタンス (Web コントロール) をホストしています。Web サイトがホストされた IE から新しいウィンドウを開くことができないようにするにはどうすればよいですか? コンテキスト メニューを無効にする IDocHostUIHandlerDispatch の実装を既に設定しています。

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

c++ - 基本クラスから派生した ATL COM クラスを作成する方法は?

"ATL シンプル オブジェクト" ウィザードでは、新しいクラスが既存のコクラスとそのインターフェイスから派生することを指定する方法が提供されません。Visual Studio 2008 で、既存のクラスから派生した新しい ATL COM クラスを作成するにはどうすればよいですか (つまり、 Baseimplementsであり、その implementsから派生した新しいクラスIBaseを作成したいのですが、ここで、は from から派生しています)。DerivedBaseIDerivedIDerivedIBase

更新: 簡単に聞こえますが、ウィザードで生成された ATL クラスには、最大 6 つの基本クラス、COM マップ、接続ポイント マップがあります。これらの基本クラスとマップのどれを派生クラスで繰り返す必要がありますか? マップが派生クラスで繰り返される場合、基本クラス マップのコンテンツを含める必要がありますか、それとも追加のアイテムだけを含める必要がありますか? 基本クラスの順序は重要ですか? FinalConstruct()とはどうFinalRelease()ですか?派生クラスで繰り返す必要がDECLARE_PROTECT_FINAL_CONSTRUCTありますか?DECLARE_REGISTRY_RESOURCEID

すべてのボイラープレートを除いて空のサンプル基本クラスを次に示します。では、派生クラスはどのように見えるでしょうか?

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

arrays - ATL CSimpleArray が CAtlArray よりも適しているのはどのような状況ですか

ドキュメントによると、CSimpleArray は少数のオブジェクトを処理するためのものです。この文脈で小さいとは何ですか?CSimpleArray は良い選択ですか、それとも常に CAtlArray などの別のコレクション クラスを使用する必要がありますか?

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

c++ - BEGIN_MSG_MAP_EX は Visual Studio 2005 の Intellisense を壊しますか?

メッセージ処理に WTL/ATL BEGIN_MSG_MAP_EX マクロを使用する C++ アプリケーションがあります。atlcrack.h のマクロをいくつか使用します。

プロジェクトを Visual Studio 2005 にアップグレードしたところ、IntelliSense が異常な動作をしました。インテリセンスで正しく動作しない BEGIN_MSG_MAP_EX マクロまで、動作を追跡しました。しかし、BEGIN_MSG_MAP_EX と Visual Studio 2005 を使い続ける方法が見つかりません。

古いメッセージ ハンドラーをすべて書き直して、BEGIN_MSG_MAP_EX の使用をやめる必要がありますか、それとも別の修正方法がありますか?

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

winapi - Windowsサービスがシャットダウンしました

VS6とATLをCServiceModuleとともに使用して、カスタムWindowsサービスを実装しています。致命的なエラーが発生した場合、サービスは自動的にシャットダウンする必要があります。CServiceModuleはすべてのファイルの_Module変数を介して利用できるので、CServiceModule :: Runがメッセージのポンピングを停止し、それ自体をシャットダウンするように、このようなことを考えました。

これは正しいですか、それともあなたはより良い考えを持っていますか?

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

c++ - WM_UNICHARハンドラーが呼び出されないのはなぜですか?

Unicode対応にしたいATLコントロールがあります。WM_UNICHARのメッセージハンドラーを追加しました。

ただし、何らかの理由で、OnUniCharハンドラーが呼び出されることはありません。

ドキュメントによると、ハンドラーは最初に「UNICODE_NOCHAR」で呼び出す必要があります。UTF-32文字を受け取りたい場合は、ハンドラーがTRUEを返す必要があります。しかし、私が言ったように、ハンドラーは決して呼び出されません。

これをアクティブにするために実行する必要がある特別なことはありますか?

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

c++ - コントロールが初期化/アクティブ化された後、ActiveX コントロールの HWND を取得するにはどうすればよいですか?

Visual Studio 2008 を使用して、C++ で ATL 8.0 ベースの ActiveX コントロールを作成しています。サブウィンドウを作成して ActiveX コントロールにアタッチする必要があります。

ActiveX コントロールが所有する HWND にアクセスするにはどうすればよいですか?

コントロールのウィンドウが作成された後に HWND を使用するために、どの ATL 関数をオーバーライドできますか?

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

c++ - C++ATLメンバー変数アクセスヘルプ

私はこれに精通しておらず、キックスタートを使用できます。

ATL(アンマネージC ++)ユーザーコントロールを使用していて、ShockWaveActiveXオブジェクトを使用したいと思います。プロパティを設定したり、メソッドを呼び出したりできるように、宣言する方法を知る必要があります。

たとえば、変数を割り当てることができる場合は、「variable-> LoadMovie()」を呼び出します。

私はこれが非常にばかげていることを知っています...ここでそれを尋ねるのはほとんど恥ずかしいです。;) (ほとんど)

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

c++ - クライアントが ATL サービスと通信しない

COM オブジェクトをエクスポートする ATL サービスに問題があります。ローカル サービスとして実行すると動作しますが、Windows サービスとして実行すると接続できません。サービスは正しく開始して実行されますが、クライアント (以下のコード) は常に「サービスの開始に失敗しました」というエラーで失敗します。

同じことを見ているので、PCでこの問題を再現する最小限のプロジェクトをまとめました.

[ファイル] -> [新しいプロジェクト
Visual C++] -> ATL "ATL プロジェクト"
名前: "MyService"
[アプリケーションの設定] で、[サービス (EXE)] を選択します。

"クラス ビュー" に
移動し、"MyService" を右クリックして追加 -> クラス
を選択: "ATL シンプル オブジェクト"
短縮名: "MyObject"

「ソリューション ビュー」に移動し、「
ソリューション 'MyService'」を右クリックして追加 -> 「新しいプロジェクト」
これは「Visual C++」 -> 「Win32」 「Win32 コンソール アプリケーション」
名前: 「MyClient」
「追加」にチェックを入れますATL の共通ヘッダー ファイル」ボックス

client.cpp で、次のコードを使用します。

「プロジェクトの依存関係」
プロジェクト「MyClient」は「MyService」に依存します

ソリューションをビルドします。

コマンド プロンプトから次のコマンドを実行します。
MyService /Service
net start MyService
クライアント