また、全然関係のない話となりますが、我が家の花壇は今チューリップが見ごろになっています。昨年の10月に球根をいくつか植えたものがほぼすべて美しく開花しています。色は4色あって、開花した順番にいうと、赤、白、黄色、紫 で、黄色と紫がほぼ同時に開花しています。一番最初に開花した赤の中には、そろそろ花弁が落ちそうな気配のものもあります。ところで、この開花順とは考えてみると不思議な現象です。昨年植えたときは、当然すべて同じ日に植えています。もちろん個体差があるので、同じ赤でも早く開くものと、遅く開くものもあります。しかし色としてみた場合も花開く順番が存在するようです。最初に開いた赤と最後の紫まで、2週間くらいの差がありました。この色の集合としての開花順に気付いて非常に面白いと思いました。今風に言うと、球根として色別に開花期間が遺伝子に刷り込まれているのでしょうか。大げさですが、これも自然界の摂理のひとつでしょうか。
さて、MSAA の世界へ戻りましょう。
原題: Implementing an MSAA Server
訳題: MSAA サーバーを実装する
原文: 青色表示
訳文: 黒色表示
校正文: 赤色表示
校正対象範囲: 黒色太字表示
WindowFromAccessibleObject depends on client-window relationship
Problem: Unless certain rules are followed, WindowFromAccessibleObject will break, causing the failure of accessibility testing tools like accexplore.exe, and assistive technologies which require knowledge of the window class to know what app-specific configurations to run. WindowFromAccessibleObject works by walking up the parent chain until it finds an object of ROLE_WINDOW. If it can't find one, it fails.
クライアントとウィンドウの関係に依存する WindowFromAccessibleObject
問題: ある種の規則に従わなければ、WindowFromAccessibleObject は壊れ、accexplore.exe のようなアクセシビリティ試験ツールや、機能しているアプリケーション固有の設定を知るためにウィンドウクラスの情報を必要としている補助テクノロジーはエラーになります//→機能しているアプリケーション固有の設定を知るためにウィンドウクラスの情報を必要としている accexplore.exe のようなアクセシビリティ試験ツールや、補助テクノロジーはエラーになります//。WindowFromAccessibleObject は ROLE_WINDOW を見つけるまで親の連鎖を上ります//→上ることで機能します//。見つからないとエラーとなります。
Solution: Allow Microsoft Windows to handle WM_GETOBJECT messages for OBJID_WINDOW. For OBJID_CLIENT, the accessible parent must point to the ROLE_WINDOW object, or at least ensure that it's in the parent chain. The easiest way to do this is to OBJID_CLIENT object cache its parent's window handle and then implement its get_accParent() method to return the results of AccessibleObjectFromWindow(mParentHwnd OBJID_WINDOW, IID_IAccessible, &ptr);
解決方法: Microsoft Windows に OBJID_WINDOW 用の WM_GETOBJECT のメッセージを処理させてください。OBJID_CLIENT 用には//→に//、アクセシビリティの親は ROLE_WINDOW オブジェクトを指し示すか、//挿入:→ROLE_WINDOW オブジェクトが、//すくなくとも、親の連鎖に必ず存在するようにする必要があります。この事を実施する最も簡単な方法は、 OBJID_CLIENT オブジェクトに親のウィンドウハンドルをキャッシュし、get_accParent() メソッドを実装し AccessibleObjectFromWindow(mParentHwndOBJID_WINDOW, IID_IAccessible, &ptr) の結果を返すことです。(草稿訳注:OBJID_CLIENT がハンドルをキャッシュし get_accParent() メソッドで結果を返すと理解しましたが、これでいいでしょうか。原文で、cache に to-不定詞がないなど英語構文が理解しがたいです。)//→OBJID_CLIENT オブジェクトにアクセシビリティの親のウィンドウハンドルをキャッシュし、その get_accParent() メソッドを実装して AccessibleObjectFromWindow(mParentHwndOBJID_WINDOW, IID_IAccessible, &ptr) の結果を返すことによって、この事はごく簡単に実施できます//;
明日に続く。
さて、MSAA の世界へ戻りましょう。
原題: Implementing an MSAA Server
訳題: MSAA サーバーを実装する
原文: 青色表示
訳文: 黒色表示
校正文: 赤色表示
校正対象範囲: 黒色太字表示
WindowFromAccessibleObject depends on client-window relationship
Problem: Unless certain rules are followed, WindowFromAccessibleObject will break, causing the failure of accessibility testing tools like accexplore.exe, and assistive technologies which require knowledge of the window class to know what app-specific configurations to run. WindowFromAccessibleObject works by walking up the parent chain until it finds an object of ROLE_WINDOW. If it can't find one, it fails.
クライアントとウィンドウの関係に依存する WindowFromAccessibleObject
問題: ある種の規則に従わなければ、WindowFromAccessibleObject は壊れ、accexplore.exe のようなアクセシビリティ試験ツールや、機能しているアプリケーション固有の設定を知るためにウィンドウクラスの情報を必要としている補助テクノロジーはエラーになります//→機能しているアプリケーション固有の設定を知るためにウィンドウクラスの情報を必要としている accexplore.exe のようなアクセシビリティ試験ツールや、補助テクノロジーはエラーになります//。WindowFromAccessibleObject は ROLE_WINDOW を見つけるまで親の連鎖を上ります//→上ることで機能します//。見つからないとエラーとなります。
Solution: Allow Microsoft Windows to handle WM_GETOBJECT messages for OBJID_WINDOW. For OBJID_CLIENT, the accessible parent must point to the ROLE_WINDOW object, or at least ensure that it's in the parent chain. The easiest way to do this is to OBJID_CLIENT object cache its parent's window handle and then implement its get_accParent() method to return the results of AccessibleObjectFromWindow(mParentHwnd OBJID_WINDOW, IID_IAccessible, &ptr);
解決方法: Microsoft Windows に OBJID_WINDOW 用の WM_GETOBJECT のメッセージを処理させてください。OBJID_CLIENT 用には//→に//、アクセシビリティの親は ROLE_WINDOW オブジェクトを指し示すか、//挿入:→ROLE_WINDOW オブジェクトが、//すくなくとも、親の連鎖に必ず存在するようにする必要があります。この事を実施する最も簡単な方法は、 OBJID_CLIENT オブジェクトに親のウィンドウハンドルをキャッシュし、get_accParent() メソッドを実装し AccessibleObjectFromWindow(mParentHwndOBJID_WINDOW, IID_IAccessible, &ptr) の結果を返すことです。(草稿訳注:OBJID_CLIENT がハンドルをキャッシュし get_accParent() メソッドで結果を返すと理解しましたが、これでいいでしょうか。原文で、cache に to-不定詞がないなど英語構文が理解しがたいです。)//→OBJID_CLIENT オブジェクトにアクセシビリティの親のウィンドウハンドルをキャッシュし、その get_accParent() メソッドを実装して AccessibleObjectFromWindow(mParentHwndOBJID_WINDOW, IID_IAccessible, &ptr) の結果を返すことによって、この事はごく簡単に実施できます//;
明日に続く。