0

COM クラスのローカライズに問題があります。IErrorInfoローカライズやその他のテキストを標準的な方法で行う方法がわかりません。検索しましたが、何も見つかりませんでした。私の COM クラスはIUnknownインターフェイスであり、デュアル インターフェイスではありません。

よろしくお願いします。

4

1 に答える 1

0

COM オブジェクトにローカリゼーション ロケールを提供する "COM 標準" メカニズムはありません。

COM は間違いなく、そのためには「低レベル」すぎます。オートメーションは概念的に COM の上のレイヤーに位置するIDispatchためInvoke、 は LCID 引数を提供します。ただし、[dual]インターフェイスを使用しても、 IDispatch( CreateStdDispatch et al ) の標準実装は、呼び出されたメソッドに LCID を渡しません。

(ただし、メソッドに[lcid]-marked パラメーターがある場合、標準実装は LCID を提供しますか? 私は直接知りませんが、ここでは暗示されています) .

独自のメカニズムを提供する必要があります。オブジェクトに最も適したメカニズムが何であるかわかりません。いくつかのアイデア:

  • すべてのメソッドに、クライアントが入力する必要がある明示的な LCID パラメータを指定できます。先に進み、 [lcid]でパラメーターをマークし、MSDN ドキュメントの規則に従います。
  • SetLanguage()インスタンスに格納されたオブジェクト全体の言語を設定し、メッセージで使用される言語を制御するメソッドを持つことができます。
  • デフォルトのシステム ロケールに依存できます。
于 2013-06-03T13:31:18.150 に答える