JP3181592B2 - 埋め込まれたオブジェクトとイン・プレース対話するための方法及びシステム - Google Patents

埋め込まれたオブジェクトとイン・プレース対話するための方法及びシステム

Info

Publication number
JP3181592B2
JP3181592B2 JP51420694A JP51420694A JP3181592B2 JP 3181592 B2 JP3181592 B2 JP 3181592B2 JP 51420694 A JP51420694 A JP 51420694A JP 51420694 A JP51420694 A JP 51420694A JP 3181592 B2 JP3181592 B2 JP 3181592B2
Authority
JP
Japan
Prior art keywords
container
server
window
menu
application code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP51420694A
Other languages
English (en)
Other versions
JPH08500200A (ja
Inventor
スリニヴァサ アール コッポル
バリー ビー マッキチャン
リチャード マックダニエル
ラオ ヴィー レマラ
アントニー エス ウィリアムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25530955&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP3181592(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JPH08500200A publication Critical patent/JPH08500200A/ja
Application granted granted Critical
Publication of JP3181592B2 publication Critical patent/JP3181592B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/955Object-oriented
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Description

【発明の詳細な説明】 発明の分野 本発明は、一般に、リンクされそして埋め込まれたオ
ブジェクトと対話するためのコンピュータ方法及びシス
テムに係り、より詳細には、コンテナーアプリケーショ
ンのコンテクスト内に収容されたオブジェクトを編集
し、さもなくば、それと対話するための方法及びシステ
ムに係る。
先行技術の説明 現在の文書処理コンピュータシステムは、ユーザが複
合文書を作成できるようにする。複合文書とは、種々の
フォーマットの情報を含む文書である。例えば、複合文
書は、テキストフォーマット、チャートフォーマット、
数字フォーマット等のデータを含む。図1は、複合文書
の一例である。この例において、複合文書101は、ある
製造オブジェクトに対するレポートとして形成される。
この複合文書101は、チャートフォーマットで表された
スケジュールデータ102と、スプレッドシートフォーマ
ットで表された予算データ103と、テキストフォーマッ
トで表された説明データ104とを含んでいる。典型的な
公知のシステムでは、ユーザは、プロジェクトマネージ
メントコンピュータプログラムを用いてスケジュールデ
ータ102を発生し、そしてスプレッドシートコンピュー
タプログラムを用いて予算データ103を発生する。この
データが発生された後に、ユーザは、複合文書101を形
成し、説明データ104を入力し、そしてワードプロセス
コンピュータプログラムを使用してスケジュールデータ
102と予算データ103を結合する。
図2は、スケジュールデータ、予算データ及び説明デ
ータを複合文書へいかに組み込むかを示している。ユー
ザは、プロジェクトマネージメントプログラム201を使
用してスケジュールデータを発生し、そしてそのデータ
をクリップボード203に記憶する。ユーザは、スプレッ
ドシートプログラム204を使用して予算データを発生
し、次いで、そのデータをクリップボード203に記憶す
る。クリップボード203は、通常はいかなるプログラム
によってもアクセスできる記憶エリア(ディスク又はメ
モリ)である。プロジェクトマネージメントプログラム
201及びスプレッドシートプログラム204は、通常は、デ
ータをプレゼンテーションフォーマットでクリップボー
ドに記憶する。プリゼンテーションフォーマットとは、
データが出力装置に容易に表示されるフォーマットであ
る。例えば、プレゼンテーションフォーマットは、標準
的なビットマップブロック転送動作(BitBlt)で表示す
ることのできるビットマップである。データをクリップ
ボードに記憶することを、クリップボードに「コピーす
る」と称する。
データがクリップボード203にコピーされた後に、ユ
ーザは、ワード処理プログラム206を始動して複合文書1
01を作成する。ユーザは、説明データ104を入力し、そ
してクリップボード203にあるスケジュールデータ及び
予算データをコピーすべき複合文書101内の位置を指定
する。クリップボードから文書へデータをコピーするこ
とを、クリップボードから「ペーストする」と称する。
次いで、ワードプロセスプログラム206は、スケジュー
ルデータ102及び予算データ103をクリップボード203か
ら複合文書101の指定の位置へコピーする。クリップボ
ードから複合文書へコピーされるデータは、「埋め込ま
れる」データと称する。ワードプロセスプログラム206
は、この埋め込まれるデータを、複合文書101を出力装
置においてレンダリングするときにBitBlt動作で表示す
る単純なビットマップとして処理する。ある公知システ
ムにおいては、クリップボードは、一度に1つのコピー
コマンドに対してデータを記憶することしかできない。
このようなシステムでは、スケジュールデータは、クリ
ップボードにコピーし、そして複合文書へペーストする
ことができる。次いで、予算データをクリップボードに
コピーし、そして複合文書へペーストすることができ
る。
ワードプロセッサは、通常、テキストデータしか処理
しないので、ワードプロセスプログラムのユーザは、埋
め込まれるデータを移動又は削除することはできいる
が、埋め込まれるデータがテキストフォーマットでない
限りそれを変更することはできない。従って、ユーザ
が、例えば、複合文書101内にある予算データ103を変更
したい場合には、ユーザは、スプレッドシートプログラ
ム204をスタートさせ、予算データ103をファイルからロ
ードし、変更を行い、その変更をクリップボード203に
コピーし、ワードプロセスプログラム206をスタートさ
せ、複合文書101をロードし、そして変更されたクリッ
プボードデータを複合文書101へペーストする。スプレ
ッドシートプログラムは、スプレッドシートデータを
「具現化」し、即ちスプレッドシートプログラムを用い
てスプレッドシートフォーマットのデータを操作するこ
とができる。プログラムが具現化するフォーマットを
「ネーティブ」フォーマットと称する。
公知のシステムは、データを実際に埋め込むのではな
く、複合文書に含まれるべきデータに対するリンクを記
憶する。ワードプロセスプログラムがデータをクリップ
ボードから複合文書へペーストするときには、複合文書
にリンクが記憶される。このリンクは、含まれるべきデ
ータ(通常はファイルに存在する)を指すものである。
これらの公知システムは、通常、データに対するリンク
を、ワードプロセスプログラムがプレゼンテーションフ
ォーマットとして確認又は処理するフォーマットで与え
る。例えば、ワードプロセスプログラム206が、ユーザ
により、スケジュールデータ及び予算データを複合文書
へ埋め込みではなくてリンクによってペーストするよう
に指示されるときには、スケジュールデータ及び予算デ
ータがプレゼンテーションフォーマットで存在するファ
イルの名前が文書に挿入される。データの1つのコピー
を多数の複合文書により共用できるようにするために、
多数の複合文書が同じデータに対するリンクを含むこと
ができる。
発明の要旨 本発明の目的は、コンテナー(収容体)オブジェクト
のコンテナーアプリケーションのウインドウ環境内に収
容されたオブジェクトと対話するための方法及びシステ
ムを提供することである。
本発明の別の方法は、コンテナーアプリケーションの
メニューを、収容されたオブジェクトのサーバアプリケ
ーションのメニューと結合するための方法及びシステム
を提供することである。
これら及び他の目的は、本発明の以下の説明から明ら
かとなるように、コンテナーオブジェクト内に収容され
たコンテニー(被収容物)オブジェクトと対話するため
のコンピュータ方法及びシステムにより達成される。好
ましい実施例において、コンテナーオブジェクトは、そ
のコンテナーオブジェクトと対話するためのコンテナー
リソースを有するコンテナーウインドウ環境を伴うコン
テナーアプリケーションを備えている。コンテニーオブ
ジェクトは、そのコンテニーオブジェクトと対話するた
めのサーバリソースをもつサーバウインドウ環境を伴う
サーバアプリケーションを備えている。本発明の方法
は、コンテナーウインドウ環境をディスプレイ装置に表
示する。次いで、ユーザは、コンテニーオブジェクトを
選択する。コンテニーオブジェクトの選択に応答して、
この方法は、複数のサーバリソースを、表示されたコン
テナーウインドウ環境で積分する。ユーザがサーバリソ
ースを選択するときには、この方法は、サーバリソース
選択を処理するためにサーバアプリケーションを呼び出
す。これに対し、ユーザがコンテナーリソースを選択す
るときには、この方法は、コンテナーリソース選択を処
理するためにコンテナーアプリケーションを呼び出す。
図面の簡単な説明 図1は、複合文書の一例を示す図である。
図2は、スケジュールデータ、予算データ及び説明デ
ータを複合文書にいかに組み込むかを示す図である。
図3は、図1に示すサンプル複合文書であって、イン
・プレース対話を行う前にワードプロセスアプリケーシ
ョン内で編集されたときに現れる複合文書を示した図で
ある。
図4は、複合文書内の位置でアクチベーションされた
ときに現れる埋め込まれるスプレッドシートオブジェク
トを示す図である。
図5は、オブジェクトハンドラーとコンテナー及びサ
ーバプロセスとの間の関係を示す図である。
図6は、リンクされるか又は埋め込まれるオブジェク
トのサンプルインスタンスを示すブロック図である。
図7は、オブジェクトのパブリックビューを示すブロ
ック図である。
図8は、オブジェクトに対して使用できるアクション
を表示及び選択するためにコンテナーアプリケーション
により与えられるサンプルユーザメニューを示す図であ
る。
図9は、サーバアプリケーションメニューと図4に示
す例のコンテナーアプリケーションメニューとの合体に
より得られる複合メニューバーを示す図である。
図10は、本発明の好ましい実施例において複合メニュ
ーバーを構成するメニューグループを示す図である。
図11は、典型的なシングル・ドキュメント・インター
フェイスアプリケーションの成分ウインドウを示す図で
ある。
図12は、マルチプル・ドキュメント・インターフェイ
スアプリケーションの成分ウインドウを示す図である。
図13は、埋め込まれたオブジェクトをその位置で編集
するときのコンテナーアプリケーションの典型的なウイ
ンドウハイアラーキ構成を示すブロック図である。
図14は、事象駆動のウインドウオペレーティングシス
テム環境におけるメッセージ処理を示すフローチャート
である。
図14Bは、イン・プレース対話をサポートするのに必
要なパブリックインターフェイスを示すブロック図であ
る。
図15は、IOLEInPlaceFrame::SetMenu方法の具現化を
示すフローチャートである。
図16は、IOLEInPlaceFrame::EnableModeless方法の具
現化を示すフローチャートである。
図17は、IOLEInPlaceParent::OnInPlaceActivate方法
の具現化を示すフローチャートである。
図18は、IOLEInPlaceParent::OnUIActivate方法の具
現化を示すフローチャートである。
図19は、IOLEInPlaceParent::OnUIDeactivate方法の
具現化を示すフローチャートである。
図20は、IOLEInPlaceObject::InPlaceDeactivate方法
の具現化を示すフローチャートである。
図21は、IOLEInPlaceObject::InPlaceUIDeactivate方
法の具現化を示すフローチャートである。
図22は、IOLEInPlaceObject::Activate方法の具現化
を示すフローチャートである。
図23は、ActivateUIファンクションの具現化を示すフ
ローチャートである。
図24は、CreateObjectToolbarsファンクションの具現
化を示すフローチャートである。
図25は、図4に示した例に対応する共用メニューデー
タ構造体のブロック図である。
図26は、ObjectSetMenuファンクションの具現化を示
すフローチャートである。
図27は、Process_Object_Activationファンクション
の具現化を示すフローチャートである。
図28は、APIファンクションObjectLoadをリンクしそ
して埋め込むオブジェクトの具現化を示すフローチャー
トである。
図29は、IOLEObject::DoVerb方法の具現化を示すフロ
ーチャートである。この方法は、コンテニーオブジェク
トと対話する一次方法である。
図30は、アクチベーション及びデアクチベーションメ
ッセージを処理するためにMDI文書ウインドウのウイン
ドウ手順によって呼び出されたファンクションProcess_
Activation_Messageの具現化を示すフローチャートであ
る。
図31は、Process_Mouse_LButtonUpファンクションの
具現化を示すフローチャートである。
好ましい実施例の詳細な説明 目次 1.概要 2.イン・プレース対話の概要 3.イン・プレート対話のウインドウサポート 4.イン・プレート対話API 4.1 IOLEWindowインターフェイス 4.1.1 IOLEWindow::GetWindow 4.2 IOLEInPlaceUIWindowインターフェイス 4.2.1 IOLEInPlaceUIWindow::GetBorder 4.2.2 IOLEInPlaceUIWindow::QueryBorderSpace 4.2.3 IOLEInPlaceUIWindow::SetBorderSpace 4.3 IOLEInPlaceFrameインターフェイス 4.3.1 IOLEInPlaceFrame::SetMenu 4.3.2 IOLEInPlaceFrames::InsertMenus 4.3.3 IOLEInPlaceFrame::RemoveMenus 4.3.4 IOLEInPlaceFrame::SetStatusText 4.3.5 IOLEInPlaceFrame::EnableModeless 4.3.6 IOLEInPlaceFrame::TranslateAccelerator 4.4 IOLEInPlaceParentインターフェイス 4.4.1 IOLEInPlaceParent:CanInPlaceDeactivate 4.4.2 IOLEInPlaceParent::OnInPlaceActivate 4.4.3 IOLEInPlaceParent::OnUIActivate 4.4.4 IOLEInPlaceParent::OnUIDeactivate 4.4.5 IOLEInPlaceParent::OnDeactivate 4.4.6 IOLEInPlaceParent::ShadeBorder 4.4.7 IOLEInPlaceParent::GetWindowContext 4.5 IOLEInPlaceObjectインターフェイス 4.5.1 IOLEInPlacobject::InPlaceDeactivate 4.5.2 IOLEInPlacobject::InPlaceUIDeactivate 4.5.3 IOLEInPlacobject::TranslateAccelerator 4.5.4 IOLEInPlacobject::Activate 4.5.5 IOLEInPlacobject::ResizeBorder 4.5.6 IOLEInPlacobject::EnableModeless 4.5.7 IOLEInPlacobject::SetVisRecr 4.6 その他のサーバアプリケーションファンクシ
ョン 4.6.1 ActivateUI 4.6.2 CreateNewMenu 4.6.3 CreateObjectToolbars 4.6.4 RemoveMenus 4.7 APIヘルパーファンクションをリンクし埋め込
むオブジェクト 4.7.1 SetActiveObjectHwnd 4.7.2 GetActiveObjectHwnd 4.7.3 ObjectCreateSharedMenu 4.7.4 ObjectDestroySharedMenu 4.7.5 ObjectShade 4.7.6 ObjectSetMenu 5.イン・プレース対話APIの使用 5.1 その位置でのアクチベーションの手順 5.1.1 マルチプルドキュメントインターフェイス
アプリケーション内の位置でのアクチベーション 5.2 プルダウンメニューメッセージ取り扱いのユ
ーザ選択 5.3 その位置でのデアクチベーションの手順 5.4 コンテナアプリケーションを閉じる 5.5 モードレスダイアログとの対話 5.6 アクセラレータキーコンビネーションの取り
扱い 1.概要 本発明は、複合文書のコンテクストにおける埋め込ま
れたデータ又はリンクされたデータと対話するための
「イン・プレース対話(in−place interaction)」と
称する一般的な方法を提供する。即ち、埋め込まれるか
又はリンクされたデータと対話するのに使用されるアプ
リケーションは、複合文書を具現化するアプリケーショ
ンのウインドウコンテクスト(メニュー及びウインド
ウ)を介してユーザにアクセスすることができる。この
アクセス性は、「その位置でのアクチベーション(acti
vation in place)」と称する。好ましい実施例におい
て、埋め込まれるか又はリンクされた(収容された)デ
ータがその位置でアクチベートされたときには、その収
容されたデータを具現化するアプリケーションのメニュ
ーが、複合文書を具現化するアプリケーションのメニュ
ーと合体され、複合メニューバーを形成する。複合メニ
ューバーにおけるメニューの順序は、1組のメニューグ
ループによって決定される。各アプリケーションは、そ
のメニューをこれらのメニューグループに分類し、その
メニューグループの順序で複合メニューバーにメニュー
を配置する。次いで、複合メニューバーは、複合文書を
具現化するアプリケーションのメニューバーとしてイン
ストールされ、そしてこのアプリケーションのウインド
ウに送られたフィルタメッセージにメッセージハンロラ
ーがインストールされる。ユーザがメニュー項目を選択
するときには、メッセージハンドラーは、そのメニュー
項目が、収容されたデータを具現化するアプリケーショ
ンのメニューに属するか、又は複合文書を具現化するア
プリケーションのメニューに属するかを判断する。次い
で、メッセージハンドラーは、その選択されたメッセー
ジ項目に対応する入力メッセージを正しいアプリケーシ
ョンに送信する。
本発明は、収容されたデータをその位置でアクチベー
トする1組の抽象クラス(インターフェイス)及びファ
ンクションを定義する。(C++プログラミング言語に
おいて、抽象クラスとは、そのデータ及び方法の定義は
もつが、これら方法に対する具現化をもたないクラスで
ある。クラスインスタンスデータを操作するのに使用で
きる方法に対する実際のコードを与えるのは、クラスを
具現化するアプリケーションの役目である。)複合文書
を具現化するアプリケーションは、これらインターフェ
イスの幾つかを具現化する役目を果たし、そして収容さ
れたデータを具現化するアプリケーションは、他のもの
を具現化する役目を果たす。
本発明の好ましい実施例において、複合文書を形成す
るアプリケーションプログラムは、別のアプリケーショ
ンにより発生されたリンクされるか又は埋め込まれるデ
ータの操作を制御する。オブジェクト指向の用語におい
ては、このデータをオブジェクトと称する。(参照文献
Budd.T.「オブジェクト指向のプログラミングの紹介(A
n Introduction to Object−Oriented Programming)」
アジソン・ウェスリー・パブリッシング社、1991年は、
オブジェクト指向の概念及び用語を紹介している。)複
合文書にリンクされるか又は埋め込まれるオブジェクト
は、文書内に「収容」される。又、複合文書は「コンテ
ナー」オブジェクトと称し、そして複合文書内に収容さ
れるオブジェクトは「収容」又は「コンテニー」オブジ
ェクトと称する。図1及び2を参照すれば、スケジュー
ルデータ102及び予算データ103はコンテニーオブジェク
トであり、そして複合文書101はコンテナーオブジェク
トである。ユーザは、予算データ103のようなコンテニ
ーオブジェクトをユーザが編集したい旨をワードプロセ
ッサに指示することができる。予算データ103を編集す
べきことをユーザが指示すると、ワードプロセスプログ
ラムは、その予算データを編集するのにどのアプリケー
ションを使用すべきか(例えば、スプレッドシートプロ
グラム)を決定し、そしてそのアプリケーションに着手
(スタートアップ)する。次いで、ユーザは、その着手
されたアプリケーションを用いて予算データを操作する
ことができ、その変更が複合文書に反映される。予算デ
ータが埋め込まれるオブジェクトとして記憶されるかリ
ンクされるオブジェクトとして記憶されるかにかかわり
なく、同じ手順が使用される。
予算データを編集するのに用いられるアプリケーショ
ンがイン・プレース対話をサポートする場合には、それ
がワードプロセスプログラムによって着手されたとき
に、ワードプロセスプログラムのウインドウ環境内でア
クチベートされる。図3及び4は、埋め込まれる予算デ
ータをその位置でアクチベートするプロセスを示してい
る。
図3は、図1に示すサンプル複合文書であって、イン
・プレース対話が行われる前にワードプロセスアプリケ
ーション内で編集されたときに現れる複合文書を示す図
である。コンテナーアプリケーション301のメインウイ
ンドウは、タイトルバー302、メニューバー303及びクラ
イエントウインドウ304を含んでいる。クライエントウ
インドウ304は、図1について述べた製造プロジェクト
レポートを表示する。複合文書は、埋め込まれたスプレ
ッドシートオブジェクト(予算データ305)を含む。ユ
ーザが複合文書のネーティブテキストデータを編集する
ときには、メニューバー303は、図示したように現れ
る。即ち、これは、ワードプロセスアプリケーションと
対話するに必要な全てのコマンドを含む。
ユーザは、予算データ305を編集することを決定する
と、スプレッドシートオブジェクト305を選択し、そし
てオブジェクトを編集するようにワードプロセスアプリ
ケーションに要求する(例えば、マウスを用いたダブル
クリックにより)。ワードプロセスアプリケーション
は、次いで、スプレッドシートアプリケーションに着手
して、スプレッドシートオブジェクト305を編集するよ
う要求する。スプレッドシートアプリケーションは、ワ
ードプロセスアプリケーションのウインドウ301及び304
とメニューバー303とを用いてスプレッドシートオブジ
ェクト305を編集するようにワードプロセスアプリケー
ションと交渉する。
図4は、複合文書内の位置においてアクチベートされ
たときに現れる埋め込まれたスプレッドシートオブジェ
クトを示す図である。スプレッドシートオブジェクト40
5は、ワードプロセスアプリケーションのクライエント
ウインドウ404において直接編集される。タイトルバー4
02は、複合文書を具現化するアプリケーション、この場
合はワードプロセスアプリケーションが、複合文書「VA
C1.DOC」内のスプレッドシートワークシートを編集する
ことを反映するように変更される。又、メニューバー40
3は、ワードプロセスアプリケーションからのメニュー
と、スプレッドシートアプリケーションからのメニュー
とを含む新たな複合メニューバーに変更される。更に、
埋め込まれたスプレッドシートオブジェクト405の種々
の特徴は、それがコンテナー複合文書内で編集されてい
ることを反映するように変更される。陰影付けされた境
界パターンの形態である選択ハイライト406がオブジェ
クトの周りに配置される。又、スプレッドシートアプリ
ケーションの標準ツール、この場合は行列マーク407が
スプレッドシートオブジェクトの周りに配置される。
又、現在選択されたセルの周りにはスプレッドシート選
択カーソル408が配置される。この点において、ユーザ
は、全てのスプレッドシートアプリケーションコマンド
を用いてスプレッドシートオブジェクト405を編集する
準備ができる。
好ましい実施例において、アプリケーションプログラ
ム(アプリケーション)は、オブジェクトをリンクし及
び埋め込む構成体を用いて互いに共働し、複合文書の形
成及び操作を行う。複合文書を形成するアプリケーショ
ンは、コンテナー(又はクライエント)アプリケーショ
ンと称し、そしてコンテニーオブジェクトを形成及び操
作するアプリケーションは、サーバアプリケーションと
称する。アプリケーションは、コンテナー及びサーバの
両方として働くことができる。即ちアプリケーションは
オブジェクトを含むことができ、そしてアプリケーショ
ンが具現化するオブジェクトは他のオブジェクト内に含
むことができる。図2を参照すれば、オブジェクトマネ
ージメントプログラム201及びスプレッドシートプログ
ラム204はサーバアプリケーションであり、そしてワー
ドプロセスプログラム206はコンテナーアプリケーショ
ンである。コンテナーアプリケーションは、コンテナー
オブジェクト内で種々のオブジェクトを選択しそしてコ
ンテニーオブジェクトを操作するための適切なサーバア
プリケーションを呼び出すという役目を果たす。サーバ
アプリケーションは、コンテニーオブジェクトの内容を
操作する役目を果たす。
好ましい実施例において、アプリケーションには、具
現化とは独立したアプリケーションプログラミングイン
ターフェイス(API)が与えられ、これは、オブジェク
トをリンクしそして埋め込む機能を果たすものである。
APIは、コンテナー及びサーバアプリケーションによっ
て呼び出される1組のファンクションである。これらの
ファンクションは、他のものの中でも、コンテナーアプ
リケーションがサーバアプリケーションとの間でメッセ
ージ及びデータをやり取りするのに必要な設定及び初期
化を管理する。
サーバアプリケーションの呼び出しは、サーバアプリ
ケーションがコンテナーアプリケーションとは個別のプ
ロセスとして実行されるときには比較的低速である。あ
る状態においては、この低速さは特に望ましくない。例
えば、ユーザが、多数のコンテニーオブジェクトを含む
複合文書をプリントしようとする場合は、各コンテニー
オブジェクトに対するサーバプロセスを呼び出してオブ
ジェクトをプリントするよう各サーバプロセスに要求す
るのに、受け入れられないほど長い時間がかかる。この
受け入れられない性能を改善するために、サーバアプリ
ケーションは、ランタイム中に、コンテナーアプリケー
ションのプロセスに動的にリンクして更に効率的なある
機能を発揮できるようにするコードを与えることができ
る。このコードは「オブジェクトハンドラー」と称す
る。このオブジェクトハンドラーは、オブジェクトをリ
ンクし埋め込むAPIがサーバプロセスをスタートしてサ
ーバプロセスにメッセージを通すのを回避できるように
サーバアプリケーションに代わる機能を発揮する。上記
の例では、オブジェクトハンドラーは、オブジェクトを
リンクし埋め込むAPIがコンテニーオブジェクトのプリ
ントを呼び出しできるようなプリントファンクションを
与えることができる。
図5は、オブジェクトハンドラーとコンテナー及びサ
ーバプロセスとの間の関係を示す図である。オブジェク
トハンドラー502は、ランタイム中に、オブジェクトリ
ンク及び埋め込みAPI503によってコンテナープロセスア
ドレススペース501にリンクされる。典型的に、オブジ
ェクトリンク及び埋め込みAPI503は、オブジェクトハン
ドラー502を直接呼び出し、そしてコンテナーアプリケ
ーションコードは、ハンドラーがサーバプロセス507以
外の機能を与えることに気付く必要はない。
1組のファンクションを与えるのに加えて、オブジェ
クトリンク及び埋め込み(OLE)APIは、コンテナーアプ
リケーションがそれらの収容されたオブジェクトと通信
できるようにする「インターフェイス」を定義する。イ
ンターフェイスは、ある入力、出力及び振る舞いルール
により遵守する1組の方法(C++言語での)である。
収容されたオブジェクトが特定のインターフェイスをサ
ポートする場合には、コンテナーアプリケーションは、
そのインターフェイスの方法を呼び出して、定義された
振る舞いを行うことができる。特定の実施例では、コン
テナーアプリケーションは、オブジェクトデータを直接
アクセスしない。むしろ、サポートされたインターフェ
イスを用いてオブジェクトデータをアクセスするのが好
ましい。コンテナーアプリケーションは、インターフェ
イスに対するポインタを介して収容されたオブジェクト
へ結合される。コンテナーアプリケーションは、インタ
ーフェイスの方法を呼び出すことによりオブジェクトデ
ータをアクセスする。オブジェクトデータをアクセスす
るために、これら方法は、指定のアクセスを要求するサ
ーバアプリケーションへメッセージを送信する。好まし
い実施例において、メッセージは、サーバアプリケーシ
ョンがその基礎となるオペレーティングシステムにより
与えられるプロセス間通信メカニズムを用いて個別のプ
ロセスとして具現化されるときにコンテナーアプリケー
ションとサーバアプリケーションとの間に送られる。
図6は、リンクされるか又は埋め込まれたオブジェク
トのサンプルインスタンスを示すブロック図である。好
ましい実施例において、インスタンスのレイアウトは、
参考としてここに取り上げる「オブジェクト指向のプロ
グラミング言語のためのコンパイラーにおいて仮想ファ
ンクション及び仮想ベースを具現化するための方法(A
Method for Implementing Virtual Functions and Virt
ual Bases in a Compiler for an Object Oriented Pro
gramming Language)」と題する米国特許出願第07/682,
537号に規定されたモデルに合致する。このインスタン
スは、各々のサポートされるインターフェイスに対する
オブジェクトデータ構造601及びインターフェイスデー
タ構造61を含んでいる。オブジェクトデータ構造601
は、インターフェイスデータ構造613に対するポインタ6
02を含み、そしてインスタンスのプライベートデータを
含んでもよい。このサンプルインスタンスのプライベー
トデータは、クラス識別子603と、オブジェクトの記憶
に対するハンドル604と、オブジェクトの状態を追跡す
るためのデータ605とを備えている。クラス識別子(CLA
SS_ID)は、オブジェクトに対する適切なサーバアプリ
ケーションをアクセスするのに使用される。これは、プ
ログラミング言語に使用されるデータ構造「タイプ」と
同様である。インターフェイスは、CLASS_IDを永続的な
グローバルな登録簿へのインデックスとして用いること
によりオブジェクトに対するサーバアプリケーションを
決定することができる。永続的なグローバルな登録簿は
以下で詳細に説明する。図6に示すように、各インター
フェイスデータ構造613は、プライベートデータ構造606
及び仮想ファンクションテーブル608を含む。プライベ
ートデータ構造606は、仮想ファンクションテーブル608
に対するポインタ607を含む。仮想ファンクションテー
ブル608は、インターフェイスの方法を具現化するコー
ド610、612に対するポインタ609、611を含む。
テーブル1は、オブジェクトデータ構造601における
第1エントリーpintf1に対するインターフェイスの定義
を表している。テーブル1において、語「インターフェ
イス」は、C++クラスを意味するものと定義される。
この定義は、3つの方法をそれらのパラメータと共に示
している。各パラメータリストの端にある「=0」は、
その方法がコードの具現化をもたないことを意味する。
C++プログラミング言語において、これらのファンク
ションは「純粋な仮想ファンクション」と称される。純
粋な仮想ファンクションをもつクラスは、抽象クラスと
称される。
図7は、オブジェクトのパブリックビューを示すブロ
ック図である。オブジェクトのパブリックビューは、オ
ブジェクトが702ないし706をサポートする種々のインタ
ーフェイスである。各インターフェイスは、コンテナア
プリケーションがオブジェクトをアクセスできるように
する方法を与える。各オブジェクトは、IUnknownインタ
ーフェイス702をサポートする。コンテナーアプリケー
ションは、IUnknownインターフェイス702を使用して、
オブジェクトが他のインターフェイスのどれをサポート
するかを決定する。特定のオブジェクトに対するIUnkno
wnインターフェイス702の具現化は、オブジェクトが他
のどんなインターフェイスをサポートするかを知り、そ
してそれらインターフェイスに対する呼び出しアプリケ
ーションポインタへ復帰する。好ましい実施例では、方
法IUnknown::QueryInterfaceがこの目的に使用される。
インターフェイス703ないし706は、オブジェクトによっ
てサポートすることのできる典型的なインターフェイス
の例である。これらのインターフェイスは、IUnknownイ
ンターフェイスから導出される。例えば、IDataObject
インターフェイス703は、データを記憶すると共にオブ
ジェクトからデータを検索するための方法を与える。IO
LEContainer704は、オブジェクト内に収容されるコンテ
ニーオブジェクトをリストするための方法を与える。IP
ersistStorageインターフェイス705は、オブジェクトを
永続的な記憶装置に記憶したりそこからオブジェクトを
検索したりする方法を与える。IOLEObjectインターフェ
イス706は、コンテナーアプリケーションがユーザ選択
アクションに対応するオブジェクトの機能を呼び出すと
ころの方法を与える。
APIに加えて、本発明のオブジェクトリンク及び埋め
込み構成体は、永続的なグローバルな「登録簿」により
コンテナー及びサーバアプリケーションへ情報を与え
る。この登録簿は、(1)オブジェクトの各タイプごと
に、オブジェクトタイプを具現化するサーバアプリケー
ション、(2)各サーバアプリケーションがコンテナー
アプリケーションに与えるアクション、(3)各サーバ
アプリケーションに対する実行可能なファイルが置かれ
た場所、及び(4)各サーバアプリケーションがそれに
関連したオブジェクトハンドラーを有するかどうか、と
いった情報のデータベースである。
2.イン・プレース対話の概要 オブジェクトがいったん文書にリンクされるか又は埋
め込まれると、ユーザはオブジェクトを選択しそしてそ
の選択されたオブジェクトに基づいてあるアクションを
実行することを要求する。ユーザは、先ず、オブジェク
トを選択しそしてオブジェクトに基づいて実行されるべ
きアクション(例えば、メニュー項目)を選択すること
によりアクションを要求する。次いで、具現化するサー
バアプリケーションが呼び出され、その選択されたアク
ションを実行する。考えられるアクションの選択をユー
ザに表示しそしてユーザがアクションを選択できるよう
にする方法は多数あることが当業社に明らかであろう。
好ましい実施例では、コンテナーアプリケーションは、
グロバールな登録簿から、その選択されたオブジェクト
を具現化するサーバアプリケーションによってどんなア
クションがサポートされるかを判断し、そしてアクショ
ンをメニューに表示する。
図8は、オブジェクトに対して使用できるアクション
を表示しそして選択するためにコンテナーアプリケーシ
ョンによって与えられる例示的なユーザメニューを示
す。メニュー項目803は、コンテナーアプリケーションE
dit(編集)メニュー802におけるオブジェクトのエント
リーである。このエントリーは、現在選択されたオブジ
ェクトに基づいて変化する。埋め込まれるか又はリンク
されたオブジェクトが選択されないときは、メニュー項
目803は表示されない。サブメニュー804は、「エクセル
・ワークシート・オブジェクト(Excel Worksheet Obje
ct)」によってサポートされるアクションを表示する。
この例では、サポートされるアクションは、「Edit」、
「Open(オープン)」及び「Type(タイプ)」である。
サブメニューを最初のアクション(例えば、「Edit」)
は、ユーザがオブジェクトのマウスポインタ装置でダブ
ルクリックするか又は機能的に等価なキーを入力すると
きに実行されるデフォールトアクションである。
ユーザが所望のアクションを選択すると(メニューか
ら又はオブジェクトにおけるダブルクリック動作によ
り)、コンテナーアプリケーションは、サーバアプリケ
ーションを呼び出し、コンテナーアプリケーションに代
わってどんなアクションを実行すべきかをそこに通す。
コンテナーアプリケーションは、オブジェクトに対する
IOLEObjectインターフェイスを得そしてオブジェクトの
DoVerb方法を呼び出して、選択されたアクションをそこ
に通すことにより、これを行う。(DoVerb方法は、オブ
ジェクトにおいてオブジェクトに特定のアクションを実
行する。)サーバアプリケーションは、次いで、コンテ
ナアプリケーションのコンテクスト内な位置でオブジェ
クトをアクチベートできるかどうかを決定する。もしそ
うならば、サーバアプリケーション及びコンテナアプリ
ケーションは、それらのメニューを複合メニューバーに
合体し、サーバアプリケーションツールバー、パレッ
ト、公式等の配置を交渉し、そして合体されたメッセー
ジの取り扱いを設定する。この点において、サーバアプ
リケーションは、ユーザ入力を受け取る準備ができる。
図4の例を続けると、図示されたように、ユーザは、
ワードプロセスアプリケーションのウインドウ環境内の
位置においてスプレッドシートオブジェクト(予算デー
タ405)を編集する。図9は、サーバアプリケーション
のメニューと、図4に示す例のコンテナーアプリケーシ
ョンメニューとの合体により生じる複合メニューバーを
示す図である。複合メニューバー901は、ワードプロセ
スアプリケーションからのメニュー902、905と、スプレ
ッドシートアプリケーションからのメニュー903、904、
906とを備えている。ユーザがこれらメニューの1つか
ら特定のメニュー項目を選択すると、コンテナーアプリ
ケーションは、合体されたメッセージハンドラーによ
り、メッセージをワードプロセスアプリケーションへ発
送すべきか、スプレッドシートアプリケーションへ発送
すべきかを決定する。
本発明の好ましい実施例では、複合メニューバーは、
1組の所定の規定に基づいて形成される。複合メニュー
バーに含まれるべき各アプリケーションメニューは、メ
ニューグループに指定される。次いで、メニューは、そ
の指定されたメニューグループに基づいて複合メニュー
バーに挿入される。
図10は、本発明の好ましい実施例において複合メニュ
ーバーを構成するメニューグループを示す図である。複
合メニューバー1003は、コンテナーアプリケーションか
らのメニューグループ1001と、サーバアプリケーション
からのメニューグループ1002とを備えている。コンテナ
アプリケーションのメニューグループ1001は、ファイル
グループと、コンテナーグループと、ウインドウグルー
プとを含む。サーバアプリケーションのメニューグルー
プ1002は、編集グループと、オブジェクトグループと、
ヘルプグループとを含む。好ましい実施例において、コ
ンテナー及びサーバアプリケーションのメニューは、参
考としてここに取り上げる1992年マイクロソフト社の
「ザ・ウインドウズ・インターフェイス:アプリケーシ
ョンデザインガイド(The Windows Interface:An Appli
cation Design Guide)」に規定されたマイクロソフト
アプリケーションユーザインターフェイススタイルガイ
ドラインに基づいて最終的な複合メニューバーにインタ
ーリーブされる。特に、複合メニューバー1003におい
て、グループは、次の順序、即ちファイル、編集、コン
テナー、オブジェクト、ウインドウ及びヘルプの順に、
左から右へ配列される。
3.イン・プレース対話のウインドウサポート 好ましい実施例においては、イン・プレース対話API
は、その基礎となるウインドウシステムの能力を用いて
具現代される。本発明は、その基礎となるウインドウシ
ステムがマイクロソフトウインドウズ3.1オペレーティ
ングシステム(“Windows")に類似したものであると仮
定して説明するが、本発明は、異なる基礎的なウインド
ウシステムでも実施できることが当業者に明らかであろ
う。マイクロソフトウインドウズ3.1オペレーティング
システムは、参考としてここに取り上げる1992年マイク
ロソフト社の「プログラマの参考書、第2巻:ファンク
ション(Programmer's Reference.Volume 2:Function
s)」;1992年マイクロソフト社の「プログラマの参考
書、第3巻:メッセージ、構造及びマクロ(Programme
r's Reference,Volume 3:Messages,Structures,and Mac
ros)」;及び1992年マイクロソフト社の「プログラミ
ングの手引き(Guide to Programming)」に掲載されて
いる。
ウインドウ環境では、アプリケーションは、単一文書
インターフェイス又は多文書インターフェイスをサポー
トする。単一文書インターフェイス(SDI)アプリケー
ションは、一度に1つの文書(ファイル)と対話する。
例えば、SDIをサポートするワードプロセスアプリケー
ションは、現在編集されているファイルをその一次ウイ
ンドウに表示する。多文書インターフェイス(MDI)の
アプリケーションは、各文書に対して少なくとも1つの
ウインドウを割り当てることにより多数の文書(ファイ
ル)と対話する。例えば、MDIをサポートするワードプ
ロセスアプリケーションは、現在編集されている各ファ
イルを個別の文書ウインドウに表示する。ユーザは、所
望の文書ウインドウのタイトルバーにおいてクリックす
るか、又はアプリケーションのウインドウメニュー上の
リストからウインドウタイトルを選択することにより、
ユーザが編集しようとするファイルの文書ウインドウを
選択する。
図11は、典型的な単一文書インターフェイスアプリケ
ーションの成分ウインドウを示す図である。典型的なSD
Iアプリケーションは、フレームウインドウ1101を与
え、そしてアプリケーションによっては、埋め込まれた
オブジェクトの存在に対し区画ウインドウ1105及び1106
と、親ウインドウ1107とを更に与えることができる。SD
Iアプリケーションの場合には、フレームウインドウ110
1は文書ウインドウでもある。区画ウインドウ1105、110
6は、複合文書の多数のビューを与える。親ウインドウ1
107は、オブジェクトが複合文書に最初に挿入されたと
きにオブジェクトの輪郭を描くようにコンテナーアプリ
ケーションによって形成される。図11に示す例では、埋
め込まれたオブジェクトはスプレッドシートオブジェク
トであり、これは、コンテナーアプリケーションの親ウ
インドウ1107内に収容されたオブジェクトウインドウ11
08内に表示される。オブジェクトウインドウ1108は、サ
ーバアプリケーションによって所有される。フレームウ
インドウ1101は、タイトルバー1102と、メニューバー11
03と、ツールバー1104とを含む。典型的に、ツールバー
及びその他のアプリケーションに特定のツールは、フレ
ームウインドウに取り付けられるか、又はコンテナーア
プリケーションの区画ウインドウに取り付けられる。
又、これらは、図11に示すウインドウとは独立したウイ
ンドウであるフローティングパレットとしても現れ、従
って、頂部に「浮動」するように見える。
図12は、典型的な多文書インターフェイスアプリケー
ションの成分ウインドウを示す図である。典型的なMDI
アプリケーションは、ユーザが同じコンテナーアプリケ
ーション内から多数の成分文書を編集できるようにす
る。図12に示す例では、ユーザが、2つの文書ウインド
ウ1205、1206において2つの個別の成分文書を編集す
る。各文書ウインドウは、SDIアプリケーションと同様
に、区画ウインドウを含むことができる。文書ウインド
ウ1205は、2つの区画ウインドウ1207、1208を含む。
又、MDIアプリケーションは、SDIアプリケーションと同
様に、埋め込まれたオブジェクトを収容するための親ウ
インドウ1209を与えることができる。図12は、オブジェ
クトウインドウ1210内に存在する埋め込まれたスプレッ
ドシートオブジェクトを示す。SDIアプリケーションの
場合と同様に、アプリケーションに特定のツールがどこ
かに現れる。
SDI又はMDIのいずれかのアプリケーションにより管理
されるウインドウは、ハイアラーキ形態で形成されそし
て維持される。図13は、埋め込まれたオブジェクトをそ
の位置において編集するときのコンテナーアプリケーシ
ョンの典型的なウインドウハイアラーキを示すブロック
図である。このウインドウハイアラーキは、コンテナー
アプリケーションからのコンテナーアプリケーションウ
インドウ1301と、サーバアプリケーションからのサーバ
アプリケーションウインドウ1307とを備えている。コン
テナーアプリケーション1302は、そのフレームウインド
ウ1303を管理し、該ウインドウは文書ウインドウ1304を
含み、該ウインドウは区画ウインドウ1305を含み、そし
て該ウインドウは親ウインドウ1306を含む。オブジェク
トがその位置においてアクチベートされるときは、サー
バアプリケーション1308は、埋め込まれたオブジェクト
に対するルートウインドウ1309と、これが必要とする子
ウインドウとを形成する。オブジェクトルートウインド
ウ1309は、オブジェクト子ウインドウ1310、1311、1312
を含む。
各アプリケーションは、個別のプロセスとして具現化
されるときに、アプリケーションのウインドウハイアラ
ーキに存在するウインドウに接続された事象を受け取る
ための入力待ち行列を含んでいる。図13のウインドウハ
イアラーキは、2つの異なるアプリケーションによって
サポートされる。従って、コンテナーアプリケーション
に属するウインドウと、サーバアプリケーションに属す
るウインドウとに関連した個別の入力待ち行列がある。
入力待ち行列1313は、コンテナーアプリケーションウイ
ンドウ1301に関連している。入力待ち行列1314は、サー
バアプリケーションウインドウ1307に関連している。ユ
ーザがマウスでクリックするか、又はこれらウインドウ
の1つに対してキーストロークを入力したときに、その
基礎となるウインドウシステムは、コンテナー入力待ち
行列1313又はサーバアプリケーション待ち行列1314のい
ずれかに適当なメッセージを入力する。
4.イン・プレース対話API オブジェクトリンク及び埋め込みAPIは、イン・プレ
ース対話をサポートするためにコンテナーアプリケーシ
ョンとサーバアプリケーションが通信するところのファ
ンクションを与え、そのインターフェイスを定義する。
これらインターフェイスの方法及びその他のAPIファン
クションは、ユーザ入力の通常の処理中にアプリケーシ
ョンコードによって呼び出される。事象駆動されるウイ
ンドウシステムにおいては、アプリケーションは、ユー
ザが特定のメニュー項目又はオブジェクトを選択したこ
とを指示するメッセージを受け取るのに応答して適当な
方法又はファンクションを呼び出す。
図14は、事象駆動式ウインドウオペレーティングシス
テム環境におけるメッセージの処理を示すフローチャー
トである。各ウインドウは、そのウインドウが形成され
るときにその基礎となるウインドウシステムと整列され
るそれ自身のメッセージハンドラーを有している。アプ
リケーション入力待ち行列(例えば、コンテナーアプリ
ケーションの入力待ち行列1313)にメッセージが受け取
られると、アプリケーションは、メッセージをフィルタ
し、変換し、又はウインドウシステムへ発送する。ウイ
ンドウシステムのディスパッチャーは、次いで、メッセ
ージにおいて指示された特定のウインドウに対して既に
整列されているメッセージ取扱ファンクション(メッセ
ージハンドラー)にメッセージを送信する。メッセージ
を受け取ると、メッセージハンドラーは、メッセージを
処理する。この処理は、オブジェクトリンク及び埋め込
みAPIの使用を含む。ステップ1401及び1402は、メッセ
ージポンプを形成する。ステップ1401において、アプリ
ケーションは、その入力待ち行列におけるメッセージを
待機する。ステップ1402において、アプリケーション
は、メッセージを適宜フィルタ又は変換するか、又はメ
ッセージをウインドウシステムのディスパッチファンク
ションへ発送する。ステップ1403及び1404は、ウインド
ウシステムのディスパッチファンクションにおいて、メ
ッセージを適当なウインドウメッセージハンドラーへ発
送するステップである。ステップ1403において、ウイン
ドウシステムディスパッチャーは、メッセージにおいて
指示されたウインドウに対しメッセージハンドラーを位
置決めする。ステップ1404において、ウインドウシステ
ムディスパッチャーは、その位置決めされたメッセージ
ハンドラーへメッセージを送信する(例えば、メッセー
ジハンドラーを呼び出すことにより)。
ステップ1405ないし1412は、ウインドウに対する典型
的なメッセージハンドラーを構成する。メッセージハン
ドラーは、「ウインドウ手順」とも称する。好ましい実
施例において、アプリケーションが特定のウインドウに
対するウインドウ手順を与えない場合には、その基礎と
なるウインドウシステムは、DefWindowProcと称するデ
フォールトウインドウハンドラーを与える。ステップ14
05ないし1408において、アプリケーションは、メッセー
ジをデコードして、どのタイプの事象が生じたかを決定
する。典型的に、各タイプの事象ごとに、アプリケーシ
ョンは、ステップ1409ないし1412に示すように異なるフ
ァンクションを呼び出す。これらのファンクションは、
次いで、オブジェクトリンク及び埋め込みAPIを使用す
る。例えば、メニュー事象が受け取られたときには、ア
プリケーションは、ステップ1411において、メニュー事
象を処理するファンクションを呼び出す。ステップ1411
は、コンテニーオブジェクトをその位置においてアクチ
ベートするProcess_Object_Activationファンクション
(ステップ1413として示す)を呼び出す。以下に詳細に
述べるように、Process_Object_Activationファンクシ
ョンは、オブジェクトリンク及び埋め込みAPIを用い
て、コンテニーオブジェクトをアクチベートする。
イン・プレース対話APIは、次のインターフェイス、
即ちIOLEWindow;IOLEInPlaceUIWindow;IOLEInPlaceFram
e;IOLEInPlaceParent;及びIOLEInPlaceObjectを定義す
る。IOLEWindowインターフェイスは、他のインターフェ
イスの1つに関連したウインドウハンドルを検索するた
めの方法を与えるものである。IOLEInPlaceUIWindowイ
ンターフェイスは、サーバアプリケーションがウインド
ウツールの配置に対してコンテナーアプリケーションと
交渉する方法を与える。IOLEInPlaceFrameインターフェ
イスは、サーバアプリケーションがコンテナーアプリケ
ーションのフレームウインドウと通信する方法を与え
る。IOLEInPlaceParentインターフェイスは、サーバア
プリケーションがコンテナーアプリケーションの親ウイ
ンドウと通信する方法を与える。IOLEInPlaceObjectイ
ンターフェイスは、コンテナーアプリケーションがサー
バアプリケーションをアクチベート及びデアクチベート
する方法を与える。図14Bは、イン・プレース対話をサ
ポートするのに必要なパブリックインターフェイスを示
すブロック図である。コンテナーオブジェクト14B01
は、IOLEWindowインターフェイス14B02、IOLEInPlacePa
rentインターフェイス14B03及びIOLEInPlaceFrameイン
ターフェイス14B04をサポートする。コンテニーオブジ
ェクト14B05は、IOLEInPlaceObjectインターフェイス14
B06をサポートする。これらインターフェイスの各々に
ついて、以下に詳細に説明する。
4.1 IOLEWindowインターフェイス テーブル2は、IOLEWindowインターフェイスをリスト
したものである。オブジェクト指向の用語において、IO
LEWindowインターフェイスは、他のイン・プレース対話
インターフェイスの「基本的クラス」である。従って、
他のインターフェイスは、IOLEWindowインターフェイス
から導出され、そのパブリック方法を継承する。IOLEWi
ndowインターフェイスには、GetWindowと称する1つの
パブリック方法しかない。
GetWindow方法は、これが呼び出されたIOLEInPlaceUI
Window、IOLEInPlaceFrame、IOLEInPlaceParent又はIOL
EInPlaceObjectインターフェイスに対応するウインドウ
ハンドル(独特のウインドウ識別子)を検索する。検索
されたウインドウハンドルは、通常、その基礎となるウ
インドウシステムファンクションを呼び出すときに使用
される。
4.2 IOLEInPlaceUIWindowインターフェイス テーブル3は、IOLEInPlaceUIWindowインターフェイ
スをリストする。IOLEInPlaceUIWindowインターフェイ
スの方法は、コンテナーアプリケーションの文書及び区
画ウインドウ内のツール配置を交渉するためにサーバア
プリケーションによって呼び出される。
4.2.1 IOLEInPlaceUIWindow::GetBorder GetBorder方法は、サーバアプリケーションがそのツ
ール(子ウインドウとして実現される)を配置できるよ
うにする位置を検索する。この方法は、文書インターフ
ェイスが呼び出されるか区画インターフェイスが呼び出
されるかに基づいて、文書又は区画ウインドウのフレー
ム内に配置された四角形を返送する。サーバアプリケー
ションは、この四角形を検索すると、ツールを配置する
のに必要なスペースの巾を決定することができると共
に、QueryBorderSpace方法を用いてこのスペースを要求
することができる。コンテナーアプリケーションによっ
て返送された四角形が拒絶される場合には、サーバアプ
リケーションは、その位置でのアクチベーションを続け
ないように選択することもできるし、或いはそのツール
をアクチベートしないように選択することもできる。
4.2.2 IOLEInPlaceUIWindow::QueryBorderSpace QueryBorderSpace方法は、サーバアプリケーションが
そのツールを配置することのできる区画又は文書ウイン
ドウ内の指定量のスペースを検索する。この方法は、サ
ーバアプリケーションがそのツール配置に必要なGetBor
derへの以前の通話から検索された四角形内の1つのパ
ラメータ、即ち四角形のボーダースペース、を取り出
す。この方法は、文書又は区画ウインドウが要求を受け
入れられるかどうかの指示を返送する。要求を受け入れ
られない場合には、サーバアプリケーションは、異なる
四角形でこの方法を再び呼び出し、その位置でのアクチ
ベーションを続けないように選択し、又はそのツールを
アクチベートしないように選択することができる。
4.2.3 IOLEInPlaceUIWindow::SetBorderSpace SetBorderSpace方法は、それに関連したコンテナアプ
リケーションに、サーバアプリケーションのツールを配
置するために区画ウインドウ又は文書ウインドウに指定
のスペースを実際に割り当てていることを知らせる。こ
の方法は、QueryBorderSpaceへの以前の通話において区
画又は文書ウインドウからスペースが首尾良く要求され
た後に呼び出される。サーバアプリケーションは、それ
が必要とするスペースを割り当てる役目を果たす。この
方法は、サーバアプリケーションがその子ウインドウに
割り当てようとする1つのパラメータ、即ち四角形のス
ペース、を取り出す。指定された四角形は、以前に首尾
良く要求されたものより小さくてもよい。「指定され
た」という用語は、パスしたパラメータを指し、そして
「特定された」という用語は、特定の方法が属するイン
ターフェイス、クラス、ウインドウ又はオブジェクトを
指す。この方法は、特定された区画又は文書ウインドウ
のユーザインターフェイスリソースのいずれかを必要に
応じて移動し又はサイズ決めする。
4.3 IOLEInPlaceFrameインターフェイス テーブル4は、IOLEInPlaceFrameインターフェイスを
リストする。このIOLEInPlaceFrameインターフェイス
は、そのコンテナーアプリケーションのフレームウイン
ドウと通信するためにサーバアプリケーションにより呼
び出される方法を与える。
4.3.1 IOLEInPlaceFrame::SetMenu SetMenu方法は、指定された複合メニューバーをコン
テナーアプリケーションのメニューバーとしてインスト
ールしたり除去したりし、そして複合メニューバーに対
するメッセージハンドラーをインストールする。図15
は、IOLEInPlaceFrame::SetMenu方法の具現化を示すフ
ローチャートである。この方法は、コンテナーアプリケ
ーションがMDIアプリケーションであるかSDIアプリケー
ションであるかに基づいて異なるメカニズムを使用して
複合メニューバーをインストールする。ステップ1501に
おいて、この方法は、指定された複合メニューバーがNU
LLであるかどうかを決定し、もしそうであれば、ステッ
プ1502へ続き、さもなくば、ステップ1503へ続く。ステ
ップ1502では、この方法は、ヘルパーファンクションOb
jectSetMenuDescriptorを呼び出して、複合メニューバ
ーに対するメッセージハンドラーを除去しそして復帰す
る。ステップ1503では、この方法は、コンテナーアプリ
ケーションがSDIアプリケーションであるかどうかを決
定し、もしそうであれば、ステップ1504へ続き、さもな
くば、ステップ1505へ続く。ステップ1504においては、
この方法は、その基礎となるウインドウシステムファン
クションSetMenuを呼び出し、複合メニューバーをコン
テナーアプリケーションフレームウインドウのメニュー
バーとしてインストールし、そしてステップ1507へ続
く。ステップ1505では、この方法は、フレームウインド
ウにメッセージを送り、そのMDIメニュー設定を実行す
るように通知する。ステップ1506では、この方法は、そ
の基礎となるウインドウシステムファンクションDrawMe
nuBarを呼び出してメニューバーを再描写する。ステッ
プ1507では、この方法は、ヘルパーファンクションObje
ctSetMenuDescriptorを呼び出して、複合メニューバー
に対するメッセージハンドラーをインストールする。ス
テップ1508では、この方法は、そのメニューバーを切り
換えるときに必要となる他のプロセスを実行し、次い
で、復帰となる。
4.3.2 IOLEInPlaceFrame::InsertMenus InsertMenus方法は、コンテナアプリケーションのメ
ニューを、サーバアプリケーションによって形成される
複合メニューバーに挿入する。コードテーブル1は、IO
LEInPlaceFrame::InsertMenus方法を具現化するための
擬似コードを示す。この方法は、複合メニューバーと、
メニューカウントのアレーとの2つのパラメータをと
る。コンテナアプリケーションのメニューによって表さ
れたメニューグループの各々に対し、そのグループに対
するメニューを挿入するループがある。ライン1ないし
10において、何らかのファイルグループメニューがある
場合には、この方法は、これらのメニューを複合メニュ
ーバーに挿入し、そしてファイルグループに対応するイ
ンデックスにおいてメニューカウントアレーを増加す
る。(例えば、図4の例に示されたメニューバーが使用
される場合には、インデックス=0である。)ライン11
ないし20において、何らかのコンテナーグループメニュ
ーが存在する場合には、この方法は、これらのメニュー
を複合メニューバーに挿入し、そしてコンテナーグルー
プに対応するインデックスにおいてメニューカウントア
レーを増加する。最後に、ライン21ないし30において、
追加されるべきウインドウグループメニューがある場合
には、この方法は、これらメニューを複合メニューバー
に挿入し、そしてウインドウグループに対応するインデ
ックスにおいてメニューカウントアレーを増加する。こ
の方法の完了時に、各インデックスにおいてメニューカ
ウントアレーに記憶される値は、その特定のメニューグ
ループに対してコンテナーアプリケーションが挿入した
メニューの数を指示する。この方法は、その基礎となる
ウインドウシステムから標準的なファンクション(Crea
teMenu及びInsertMenu)を呼び出し、コンテナーアプリ
ケーションに対するメニューを形成すると共に、それら
を複合メニューバーに挿入する。
4.3.3 IOLEInPlaceFrame::RemoveMenus RemoveMenus方法は、サーバアプリケーションが複合
メニューバーの割り当てを解除する前に、コンテナーア
プリケーションがそのメニューを複合メニューバーから
除去できるようにする。この方法は、IOLEInPlaceObjec
t::InPlaceDeactive方法から呼び出される。RemoveMenu
s方法は、1つのパラメータ、即ちコンテナーメニュー
が記憶される複合メニューバーのハンドルを取り出す。
複合メニューバーは、この方法が呼び出される前に全て
のサーバメニューをクリアすることが予想される。
4.3.4 IOLEInPlaceFrame::SetStatusText SetStatusText方法は、サーバアプリケーションがコ
ンテナーアプリケーションのフレームウインドウの状態
ウインドウ(もし1つあれば)をセットできるようにす
る。通常は、状態ウインドウは、フレームウインドウの
底部に配置され、現在選択に対応する状態又はヒント情
報を含んでいる。SetStatusText方法は、コンテナーア
プリケーションに特定のもので、コンテナーアプリケー
ションがその状態ウインドウをセットするために通常行
うどんなオペレーションも実行する。この方法は、1つ
のパラメータ、即ち状態ウインドウに挿入するためのテ
キストストリングを取り出す。
4.3.5 IOLEInPlaceFrame::EnableModeless EnableModeless方法は、コンテナーアプリケーション
に対して現在表示されているモードレスダイアログをイ
ネーブル又はディスエイブルするものである。モードレ
スダイアログとは、ユーザによって明確に閉じられるま
で表示される入力ウインドウである。このウインドウが
表示される間に、ユーザは他のウインドウと対話するこ
とができる。一方、モードダイアログは、ユーザが受け
入れられる入力を入れるまで他のウインドウ処理を阻止
する入力ウインドウである。この方法は、モードダイア
ログを表示したいが、それに関連したコンテナーアプリ
ケーションがモードレスダイアログを既に表示している
ときにサーバアプリケーションによって呼び出される。
図16は、IOLEInPlaceFrame::EnableModeless方法を具
現化するフローチャートである。この方法は、コンテナ
ーアプリケーションのモードレスダイアログを隠し、そ
して再び呼び出されたときに、モードレスダイアログを
復帰させる。指定されたフラグfEnableが真である場合
には、その隠されたダイアログが表示され、さもなく
ば、現在表示されているいかなるモードレスダイアログ
も隠される(表示から除去されるが、内部メモリのデー
タ構造は割り当て解除されない)。ステップ1601におい
て、この方法は、FEnableが真であるかどうか決定し、
もしそうならば、ステップ1602へ続くが、さもなくば、
ステップ1603へ続く。ステップ1602において、この方法
は、その基礎となるウインドウシステムファンクション
ShowWindowを呼び出し、既にセーブされたモードレスダ
イアログに関連したウインドウを回復させ、次いで、復
帰する。ステップ1603において、この方法は、現在表示
されている次のモードレスダイアログのウイドウハンド
ルをセーブする。ステップ1604において、この方法は、
その基礎となるウインドウシステムファンクションShow
Windowを呼び出し、モードレスダイアログに関連したウ
インドウを隠す。ステップ1605において、このファンク
ションは、表示されたモードレスダイアログが更にある
かどうかを調べるようにチェックを行い、もしあれば、
このファンクションはステップ1603へ戻るようにループ
し、さもなくば、復帰する。
4.3.6 IOLEInPlaceFrame::TranslateAccelerator TranslateAccelerator方法は、サーバアプリケーショ
ンがそれ自身確認しないキーストロークを受け取るとき
に、アクセラレータキー組合せを処理できるようにす
る。アクセラレータキー組合せは、メニューコマンドに
対するキーボードショートカットであり、これについて
は以下で述べる。TranslateAccelerator方法は、サーバ
アプリケーションメッセージポンプにおいて呼び出され
るファンクションObjectTranslateAcceleratorによって
間接的に呼び出される。コンテナーアプリケーション
は、その通常のアクセラレータ処理を実行し、そしてア
クセラレータが処理されたどうかの指示を返送しなけれ
ばならない。この値は、次いで、ファンクションObject
TranslateAcceleratorによってサーバアプリケーション
へ通される。メッセージはサーバアプリケーションから
コンテナーアプリケーションへ転送されているので、こ
の基礎となるウインドウシステムは、指定されたメッセ
ージに関連した付加的なキー状態又はメッセージ情報を
保持していない。
4.4 IOLEInPlaceParentインターフェイス テーブル5は、IOLEInPlaceParentインターフェイス
をリストしている。このIOLEInPlaceParentインターフ
ェイスは、親ウインドウと通信するためにサーバアプリ
ケーションによって呼び出された方法を与える。又、こ
のウインドウは、オブジェクトに対するイン・プレース
「コンテナーサイト」とも称する。
4.4.1 IOLEInPlaceParent::CanInPlaceActivate CanInPlaceActivate方法は、コンテナアプリケーショ
ンがイン・プレース対話をサポートするかどうかを判断
するためにサーバアプリケーションによって使用され
る。この方法は、選択されたコンテニーオブジェクトに
代わってアクチベーションを受け入れるか又は拒絶する
機会をコンテナアプリケーションに与える。この方法
は、コンテナアプリケーションがイン・プレース対話を
許容するかどうかの指示を返送する。
4.4.2 IOLEInPlaceParent::OnInPlaceActivate OnInPlaceActive方法は、サーバアプリケーションが
(アクチベーション時に)新たな複合メニューバーを形
成する前に必要なオペレーションを実行する機会をコン
テナアプリケーションに与えるようにサーバアプリケー
ションによって呼び出される。図17は、IOLEInPlacePar
ent:OnInPlaceActivate方法の具現化を示すフローチャ
ートである。この具現化において行われるオペレーショ
ンは、コンテニーオブジェクトがアクチベートされたこ
とを指示するフラグをステップ1701においてセットする
ことだけである。この情報は、特定のオブジェクトの親
コンテナーオブジェクトがアクチベート又はデアクチベ
ートするように求められたときに後で使用される。この
フラグは、親コンテナーアプリケーションに、それ自身
のユーザインターフェイスをアクチベート又はデアクチ
ベートするのではなく、その中に収容されたオブジェク
ト(ネスト状オブジェクト)をアクチベート又はデアク
チベートする必要があるかどうかを知らせる。
4.4.3 IOLEInPlaceParent::OnUIActivate OnUIActivate方法は、コンテニーオブジェクトをその
位置においてアクチベートする準備として全てのコンテ
ナーアプリケーションメニュー及びツールを除去する。
図18は、IOLEInPlaceParent::OnUIActivate方法の具現
化を示すフローチャートである。この方法によって行わ
れるステップは、コンテナーオブジェクトがその位置で
アクチベートされたオブジェクトそれ自体であるかどう
かに基づいている。ステップ1801において、この方法
は、コンテナーオブジェクトがその位置においてアクチ
ベートされたかどうかを判断する。もしそうでなけれ
ば、この方法は、ステップ1802へ続き、さもなくば、ス
テップ1803へ続く。ステップ1802において、コンテナー
オブジェクトは最上レベルのコンテナオブジェクトであ
る(その位置でアクチベートされない)ので、この方法
は、その通常の手順を用いて、コンテナーアプリケーシ
ョンメニュー及び余分なツールを除去し、そして復帰す
る。ステップ1803において、コンテナーオブジェクトは
コンテニーオブジェクトでもあるので、この方法は、コ
ンテナーオブジェクトをコンテニーオブジェクトとして
処理する方法をアクセスするためにオブジェクト自身の
IOLEInPlaceObjectを検索する。ステップ1804におい
て、この方法は、コンテナーオブジェクトのアクチベー
ト方法を呼び出してそれ自身をデアクチベートする。ス
テップ1805において、この方法は、全てのコンテナーオ
ブジェクトの文書及び区画ウインドウレベルツールを隠
す。ステップ1806において、この方法は、親コンテナー
オブジェクトのシェードボーダー方法を呼び出して、コ
ンテナーオブジェクトの周りからのイン・プレース対話
ユーザフィードバックを除去し、そして復帰する。コン
テナーオブジェクトのオブジェクトウインドウは、実際
には、後でデアクチベートされる(例えば、コンテニー
オブジェクトがデアクチベートするときに)。
4.4.4 IOLEInPlaceParent::OnUIDeactivate OnUIDeactivate方法は、そのユーザインターフェイス
リソースのデアクチベート動作の終わりにサーバアプリ
ケーションによって呼び出され、その親コンテナーアプ
リケーションがそれ自身のユーザインターフェイスをア
クチベートするか又はその親コンテナーアプリケーショ
ンを呼び出して、その親コンテナーアプリケーションが
そのユーザインターフェイスをアクチベートできるよう
にする。図19は、IOLEInPlaceParent::OnUIDeactivate
方法の具現化を示すフローチャートである。この方法
は、コンデナーオブジェクトがコンテニーオブジェクト
それ自体であるか又は最小レベルのコンテナーオブジェ
クトであるかに基づいて2つの異なる振る舞いを与え
る。前者の場合に、このコンテナーがその位置でアクチ
ベートされる新たなオブジェクトになった場合に、それ
自身のユーザインターフェイスがアクチベートされ、さ
もなくば、コンテナーは、その親コンテナーアプリケー
ションに、そのユーザインターフェイスをアクチベート
するように要求する。後者の場合には、コンテナーアプ
リケーションは、通常の手順を用いてそのユーザインタ
ーフェイスを復帰させる。ステップ1901において、この
方法は、コンテナーアプリケーションがコンネニーオブ
ジェクトをアクチベートしたことを指示するフラグをク
リアする。ステップ1902において、この方法は、特定さ
れたコンテナーオブジェクトがコンテニーオブジェクト
であるかどうかを決定し、もしそうでなければ、ステッ
プ1903へ続き、さもなくば、ステップ1905へ続く。ステ
ップ1903において、この方法は、通常の手順を用いてコ
ンテナーアプリケーションのメニュー及びそのタイトル
バーをセットし、そしてステップ1904へと続いて、入力
フォーカスを所望のウインドウへセットし、復帰する。
入力フォーカスは、特定のウインドウがキーボード入力
を受け取るべきときにその特定のウインドウをセットす
る。ステップ1905において、この方法は、フラグABOUT_
TO_ACTIVATEを検討してコンテナーオブジェクトがアク
チベートされたオブジェクトになりつつあるかを判断
し、もしそうでなければ、ステップ1906へ続き、さもな
くば、ステップ1907へ続く。(ABOUT_TO_ACTIVATEフラ
グは、例えば、以下に詳細に述べるProcess_Mouse_LBut
tonUpファンクションにおいてコンテナーアプリケーシ
ョンがユーザによって選択されたときにセットされ
る。)ステップ1906において、この方法は、コンテナー
オブジェクトのIOLEInPlaceParent::OnUIDeactivate方
法を呼び出して、親コンテナオブジェクトのコンテナー
アプリケーションのユーザインターフェイスをアクチベ
ートし、そして復帰する。ステップ1907において、この
方法は、ファンクションActivateUIを呼び出し、コンテ
ナーアプリケーションのユーザインターフェイスをアク
チベートし、そして復帰する。
4.4.5 IOLEInPlaceParent::OnDeactivate OnDeactivate方法は、サーバアプリケーションによっ
て呼び出され、それに関連したコンテナアプリケーショ
ンに、アクチベートされたコンテニーオブジェクトが完
全にデアクチベートされる前にそのコンテナーオブジェ
クトに関連したフラグをセットするか又はいずれかのリ
ソースを解放する機会を与える。この方法は、コンテニ
ーオブジェクトのIOLEInPlaceCbject::InPlaceDeactiva
te方法から呼び出される。
4.4.6 IOLEInPlaceParent::ShadeBorder ShadeBorder方法は、選択されるか又は選択解除され
ようとしているコンテニーオブジェクトの周りに陰影付
けされたパターンボーダーを描くか又はそれを除去す
る。陰影付けされたパターンボーダーは、コンテニーオ
ブジェクトがその位置でアクチベートされたというユー
ザフィードバックを与えるのに用いられる。この方法
は、ヘルパーオブジェクトリンク及び埋め込みAPIファ
ンクションObjectShadeを呼び出して、適切なシェード
パターンを形成することができる。この方法は、2つの
パラメータ、即ちボーダーを配置しなければならないオ
ブジェクトの周りの四角形と、1組のフラグとを取り出
す。この1組のフラグは、ボーダーをオン(SHADEBORDE
R_ON=1)にすべきかオフにすべきかを指示すると共
に、ボーダーをアクティブウインドウのタイトルバーに
含まれたテキストと同じカラーで描くべき(SHADEBORDE
R_ACTIVE=1)か又はディスエイブルされたテキストと
同じカラーで描くべきかを指示する。アクティブウイン
ドウは、入力フォーカスをもつウインドウである。
4.4.7 IOLEInPlaceParent::GetWindowContext GetWindowContext方法は、特定のコンテニーオブジェ
クトに関連した1組のコンテナーアプリケーションイン
ターフェイスを返送する。より詳細には、次のパラメー
タを返送する。
pFrame:これはIOLEInPlaceフレームインターフェイス
に対するポインタである。
pDoc:これはIOLEInPlaceUIWindowインターフェイスに
対するポインタである。
pPane:これはIOLEInPlaceUIWindowインターフェイス
に対するポインタである。
lprectChildPson:これは関連するIOLEInPlaceParent
インスタンスが親ウインドウ内にオブジェクトのオブジ
ェクトウインドウを表示する場所に対するポインタであ
る。
hAccelTable:これはコンテナーアプリケーションのア
クセラレータテーブル(以下に述べる)に対するハンド
ルである。
これらの値は、アクチベーション及びデアクチベーシ
ョンを交渉しそして取り扱うためにサーバアプリケーシ
ョンによって使用される。この方法は、これらインター
フェイスのインスタンスを形成してそれをコンテナーア
プリケーションの当該フレーム、文書、区画及び親ウイ
ンドウと関連させる。
4.5 IOLEInPlaceObjectインターフェイス テーブル6は、IOLEInPlaceObjectインターフェイス
をリストしたものである。IOLEInPlaceObjectインター
フェイス方法は、収容されたオブジェクトをアクチベー
ト及びデアクチベートするためにコンテナーアプリケー
ションによって呼び出される。これら方法の幾つかは、
ネスト状に収容されたオブジェクトを収容ハイアラーキ
によりアクセスする。他の方法は、編集メニューを表示
するコンテニーオブジェクトである現在アクティブなオ
ブジェクトのみをアクセスする。別の具現化は、このイ
ンターフェイスを2つの他のものに分割することであ
り、その1つは、アクティブなオブジェクトのみをアク
セスすることであり、そしてもう1つは、収容ハイアラ
ーキによりコンテニーオブジェクトをアクセスすること
である。
4.5.1 IOLEInPlaceObject::InPlaceDeactivate InPlaceDeactive方法は、コンテナーアプリケーショ
ンによって呼び出され、「undo」オペレーションがコン
テニーオブジェクトをアクセスする必要がもはやなくな
った後であって且つコンテナーアプリケーションが閉じ
る前にコンテニーオブジェクトを完全にデアクチベート
する。この方法は、コンテニーオブジェクトをその位置
でアクチベートすることに関連したリソースの最終的な
割り当て解除を実行する。図20は、IOLEInPlaceObjec
t::InPlaceDeactivate方法を具現化するフローチャート
である。この方法は、先ず、そこに収容された(ネスト
状)オブジェクトをアクチベートしたかどうかを決定
し、もしそうであれば、ネスト状オブジェクトのInPlac
eDeactive方法を呼び出す。さもなくば、オブジェクト
はそれ自身でデアクチベートする。ステップ2001におい
て、この方法は、特定されたオブジェクトがコンテナー
オブジェクトでもありそしてネスト状のコンテニーオブ
ジェクトをアクチベートしているかどうか判断する。も
しそうであれば、この方法は、ステップ2002へ続き、さ
もなくば、ステップ2004へ続く。ステップ2002におい
て、この方法はアクチベートされたコンテニーオブジェ
クト(特定されたオブジェクトのサーバアプリケーショ
ンが既に記憶している)のIOLEInPlaceObjectインター
フェイスを検索し、そしてステップ2003において、その
検索されたインターフェイスのIOLEInPlaceObject::Inp
laceDeactivate方法を呼び出し、そして復帰する。ステ
ップ2004において、この方法は、特定されたオブジェク
トのユーザインターフェイスがまだアクティブであるか
どうかを調べるようにチェックし、もしそうであれば、
ステップ2005へ続き、さもなくば、ステップ2006へ続
く。ステップ2005において、この方法は、指定されたオ
ブジェクトのInPlaceUIDeactivate方法を呼び出してそ
れ自身のユーザインターフェイスをデアクチベートし、
次いで、ステップ2006へ続く。ステップ2006において、
この方法は、サーバアプリケーションファンクションRe
move_Menuを呼び出して、複合メニューバーからサーバ
アプリケーションメニューを除去する。ステップ2007に
おいて、この方法は、特定されたオブジェクトのIOLEIn
PlaceFrame::RemoveMenus方法を呼び出して、親コンテ
ナーアプリケーションがこのメニューを複合メニューバ
ーから除去できるようにする。ステップ2008において、
この方法は、オブジェクトリンク及び埋め込みAPIファ
ンクションObjectDestroySharedMenuを呼び出し、複合
メニューバーの構造を割り当て解除する。このObjectDe
stroySharedMenuファンクションは、ウインドウシステ
ムに特定のもので、複合メニューバーに関連した構造を
割り当て解除するためにその基礎となるウインドウシス
テムファンクションが必要とするものを呼び出す。ステ
ップ2009において、この方法は、その基礎となるウイン
ドウシステムファンクションDestroyMenuを呼び出し、
複合メニューバー構造を割り当て解除すると共に、特定
されたオブジェクトに関連したウインドウを割り当て解
除する。最終的に、ステップ2010において、この方法
は、特定されたオブジェクトのコンテナーオブジェクト
のIOLEInPlaceParent::OnDeactivate方法を呼び出し、
そして復帰となる。
4.5.2 IOLEInPlaceObject::InPlaceUIDeactivate InPlaceUIDeactivate方法は、その位置でアクチベー
トされた特定のオブジェクトに関連した全てのユーザイ
ンターフェイスエレメントを隠す。この方法は、複合文
書内の異なるオブジェクト又はエリアのユーザ選択を処
理するときにコンテナーオブジェクトによって呼び出さ
れるか、又は特定のオブジェクトのユーザインターフェ
イスがまだデアクチベートされていない場合に特定のオ
ブジェクトのInPlaceDeactivateファンクション(図20
参照)から呼び出される。図21は、IOLEInPlaceObjec
t::InPlaceUIDeactivate方法を具現化するフローチャー
トである。この方法は、先ず、特定のオブジェクトがコ
ンテナーオブジェクトであってネスト状オブジェクトを
アクチベートしているかどうかを決定し、もしそうなら
ば、ネスト状オブジェクトのInPlaceUIdeactivateのフ
ァンクションを呼び出す。さもなくば、この方法は、そ
れ自身のユーザインターフェイスを隠し、そのユーザイ
ンターフェイスをデアクチベートしたことをそのコンテ
ナーアプリケーションに知らせる。ステップ2101におい
て、この方法は、ネスト状コンテニーオブジェクトがそ
の位置でアクチベートされたことを指示するフラグが真
であるかどうかを決定し、もしそうであれば、ステップ
2102へ続き、さもなくば、ステップ2104へ続く。ステッ
プ2102において、この方法は、アクチベートされたネス
ト状コンテニーオブジェクトに対するIOLEInPlaceObjec
tインターフェイスを検索し、そしてステップ2103にお
いて、ネスト状コンテニーオブジェクトのInPlaceDeact
ivate方法を呼び出し、そして復帰となる。ステップ210
4において、この方法は、フラグABOUT_TO_ACTIVATEをク
リアし、ユーザが異なるオブジェクトを選択したことを
示す。ステップ2015において、この方法は、特定のオブ
ジェクトのアクチベート方法を呼び出し、偽のパラメー
タを送って、デアクチベートする方法を要求する。この
方法は、親コンテナーアプリケーションのフレームウイ
ンドウに関連した全ての特定のオブジェクトのユーザイ
ンターフェイスエレメントを除去する。ステップ2106に
おいて、この方法は、オブジェクトリンク及び埋め込み
APIファンクションSetActiveObjectHwndを呼び出し、特
定のオブジェクトのIOLEInPlaceObjectインターフェイ
スを、親コンテナーアプリケーション文書ウインドウと
の関連から除去する。これは、コンテナーアプリケーシ
ョンがMDIアプリケーションである場合、及びユーザが
後でこの文書ウインドウを選択する場合に、特定のオブ
ジェクトがその位置でもはや再アクチベートされないこ
とを意味する。ステップ2107において、この方法は、そ
の基礎となるウインドウシステムファンクションを用い
て、親コンテナーアプリケーションの区画又は文書ウイ
ンドウに関連したサーバアプリケーションに属するユー
ザインターフェイスエレメントを隠す。ステップ2108に
おいて、この方法は、特定のオブジェクトのIOLEInPlac
eParent::ShadeBorder方法を呼び出して、デアクチベー
トするオブジェクトの周りから陰影付けされたボーダー
パターンフィードバックを除去する。ステップ2109にお
いて、この方法は、その基礎となるウインドウシステム
ファンクションを呼び出し、特定のオブジェクトに関連
したウインドウを隠す。最後に、ステップ2110におい
て、この方法は、IOLEInPlaceParent::OnUIDeactivate
方法を呼び出し、コンテナーアプリケーションがそれ自
身のユーザインターフェイスをインストールし、そして
復帰する。
4.5.3 IOLEInPlaceObject::TranslateAccelerator TranslateAccelerator方法は、コンテナーアプリケー
ションがアクセラレータキーの組合せを処理する機会を
もつ前にサーバアプリケーションがそれらの組合せを処
理できるようにする。アクセラレータキーの組合せは、
メニューコマンドに対するキーボードショートカットで
あり、以下に詳細に説明する。本発明の好ましい実施例
では、その位置でアクチベートされるオブジェクトは、
規定により、先ずアクセラレータキーの組合せを処理す
る。TranslateAccelerator方法は、そのメッセージポン
プにおいてコンテナーアプリケーションによって呼び出
される(コードテーブル9を参照されたい)。この方法
によって実行される必要のある唯一のオペレーション
は、特定のサーバアプリケーションのアクセラレータテ
ーブルでその基礎となるウインドウシステムファンクシ
ョンTranslateAcceleratorを呼び出すことである。この
ような呼び出しは、コンテニーオブジェクトが個別の実
行可能なプロセスによって具現化される場合には必要と
されない。というのは、個別のプロセスは、これらキー
の組合せをそれ自身のメッセージポンプにおいて受け取
るが、コンテナーアプリケーションはそれらを決して受
け取らないからである。この場合に、TranslateAcceler
ator方法は何も行わない。
4.5.4 IOLEInPlaceObject::Activate Activate方法は、指定されたフラグfActiveが真であ
るか偽であるかに基づいて、親コンテナアプリケーショ
ンのフレームウインドウにインストールされたユーザイ
ンターフェイスエレメントをアクチベート又はデアクチ
ベートする。MDI文書ウインドウがアクチベート又はデ
アクチベートされたときに呼び出された場合には、この
方法は、その位置でアクチベートされたオブジェクトに
関連した複合メニューバーをインストールするか又は除
去し、そして特定のオブジェクトがアクチベートされた
場合にはその周りに陰影付けされたボーダーパターンを
配する。最上レベルのフレームウインドウがアクチベー
ト又はデアクチベートされたときに呼び出された場合に
は、この方法は、特定のオブジェクトがアクチベートさ
れた場合にその周りに陰影付けされたボーダーパターン
を配し、さもなくば、それを除去する。この場合に、他
のユーザインターフェイスエレメントをアクチベート又
はデアクチベートする必要はない。図22は、IOLEInPlac
eObject::Activate方法の具現化を示すフローチャート
である。ステップ2201において、この方法は、最小レベ
ルフレームウインドウのアクチベート又はデアクチベー
ト動作の結果として呼び出されたか、或いはMID(子)
文書ウインドウのアクチベート又はデアクチベート動作
の結果として呼び出されたかを決定する。MID文書ウイ
ンドウのアクチベート又はデアクチベート動作の結果と
して呼び出された場合には、この方法は、ステップ2202
へ進み、さもなくば、ステップ2210へ続く。ステップ22
02において、この方法は、特定のオブジェクトをアクチ
ベートすべきかどうかを決定し、もしそうでなければ、
ステップ2203へ続き、さもなくば、ステップ2206へ続
く。ステップ2203において、この方法は、親コンテナー
オブジェクトのIOLEInPlaceFrame::SetMenu方法を呼び
出し、その位置での特定のオブジェクトのアクチベーシ
ョンに関連した複合メニューバーを除去する。ステップ
2204において、この方法は、親コンテナーのアプリケー
ションフレームウインドウにインストールされたユーザ
インターフェイスエレメントを隠す。ステップ2205で
は、この方法は、親コンテナーオブジェクトのIOLEInPl
aceParent::ShadeBorder方法を呼び出し、特定のオブジ
ェクトの周りから陰影付けされたボーダーパターンを除
去し、復帰となる。ステップ2206において、この方法
は、親コンテナーオブジェクトのIOLEInPlaceFrame::Se
tMenu方法を呼び出し、複合メニューバーを関連フレー
ムウインドウのメニューバーとしてインストールする。
ステップ2207において、この方法は、コンテナーアプリ
ケーションのフレームウインドウのタイトルバーをセッ
トして、コンテナーアプリケーションが特定のオブジェ
クトをアクチベートしたことを指示する。ステップ2208
において、この方法は、その基礎となるウインドウシス
テムファンクションを呼び出し、フレームレベルのユー
ザインターフェイスエレメントを表示する。ステップ22
09において、この方法は、親コンテナーオブジェクトの
IOLEInPlaceParent::ShadeBorder方法を呼び出し、特定
のオブジェクトの周りに陰影付けされたボーダーパター
ンを描いて、その位置でアクチベートされたことを指示
し、次いで、復帰となる。ステップ2210において、この
方法は、特定のオブジェクトをアクチベートすべきであ
るかどうかを決定し、もしそうであれば、ステップ2209
へ続き、さもなくば、ステップ2211へ続く。ステップ22
11において、この方法は、特定のオブジェクトの周りか
ら陰影付けされたボーダーパターンを除去し、復帰とな
る。
4.5.5 IOLEInPlaceObject::ResizeBorder ResizeBorder方法は、コンテナーアプリケーションに
よって呼び出され、サーバアプリケーションが親コンテ
ナアプリケーションの区画又は文書ウインドウ内に配置
したユーザインターフェイスツールをサイズ変更するよ
うにサーバアプリケーションに要求する。この方法が呼
び出されるのに応答して、サーバアプリケーションは、
区画又は文書ウインドウに関連したインターフェイスイ
ンスタンスのQueryBorderSpace及びSetBorderSpace方法
を用いてコンテナーアプリケーションとの別のツール配
置交渉ループを開始しなければならない。
4.5.6 IOLEInPlaceObject::EnableModeless EnableModeless方法は、サーバアプリケーションに対
して現在表示されているモードレスダイアログをイネー
ブル又はディスエイブルする。典型的に、この方法は、
図16を参照して上記したIOLEInPlaceFrame::EnableMode
lessと同様に具現化される。
4.5.7 IOLEInPlaceObject::SetVistRect SetVistRect方法は、最も内側のレベルのコンテナー
オブジェクトによって呼び出され、実際に目に見えるオ
ブジェクトの量を通信する。オブジェクトの目に見える
(切り取り)四角形は、例えば、ボーダーの交渉、スク
ロール又はサイジングによって変更されてもよい。指定
された四角形は、切り取り四角形であり、コンテニーオ
ブジェクトのウインドウを正しい(切り取った)目に見
えるサイズにサイズ変更するのはサーバアプリケーショ
ンの役目である。
4.6 その他のサーバアプリケーションファンクショ
ン 好ましい実施例において、サーバアプリケーション
は、次の1組のファンクションを与える。即ち、Activa
teUI;CreateNewMenu;CreateObjectToolBars;及びRemove
Menus。
4.6.1 ActivateUI SCODE ActivateUI(IOLEInPlaceUIW
indow*pDoc,IOLEInPlaceObject pObject) ActivateUIファンクションは、指定されたコンテニー
オブジェクトのユーザインターフェイスリソースのアク
チベーションを制御するためにサーバアプリケーション
によって具現化されるファンクションである。この高レ
ベルファンクションは、フレーム、文書及び区画レベル
のユーザインターフェイスエレメントをアクチベート
し、オブジェクトの周りに陰影付けされたボーダーパタ
ーンを描き、そして複合メニューバーを表示する。図23
は、ActivateUIファンクションを具現化するフローチャ
ートである。このファンクションは、2つのパラメー
タ、即ち文書インターフェイスに対するポインタと、コ
ンテニーオブジェクトに対するポインタとを取り出す。
ステップ2301において、このファンクションは、指定さ
れた文書ウインドウ及び指定されたコンテニーオブジェ
クトに対するウインドウハンドルを得る。ステップ2302
において、このファンクションは、オブジェクトリンク
及び埋め込みAPIファンクションSetActiveObjectHwndを
呼び出し、指定された文書ウインドウの現在アクティブ
オブジェクトを、コンテニーオブジェクトのインターフ
ェイスに対するポインタにセットする。これは、文書ウ
インドウの1つがユーザにより選択されたときに、MDI
アプリケーションとして具現化されるコンテナーアプリ
ケーションが適切なコンテニーオブジェクトをアクチベ
ートできるようにする。ステップ2303では、このファン
クションは、IOLEInPlaceObject::Activate方法を呼び
出し、指定されたオブジェクトをアクチベートする。ス
テップ2304では、このファンクションは、その基礎とな
るウインドウシステムファンクションShowWindowを呼び
出し、コンテナアプリケーションの区画又は文書ウイン
ドウに関連したユーザインターフェイスエレメントを表
示する。ステップ2305において、このファンクション
は、指定されたコンテニーオブジェクトを取り巻くため
のボーダー又は四角形の寸法を決定し、そしてステップ
2306において、このファンクションは、指定されたコン
テニーオブジェクトのIOLEInPlaceObject::ShadeBorder
方法を呼び出し、この四角形を用いて指定されたコンテ
ニーオブジェクトの周りに陰影付けされたボーダーパタ
ーンを描く。ステップ2307において、このファンクショ
ンは、入力フォーカスを、指定されたコンテニーオブジ
ェクトのオブジェクトウインドウにセットする。最終的
に、ステップ2308において、このファンクションは、そ
の基礎となるウインドウシステムファンクションDrawMe
nuBarを呼び出して、複合メニューバーを再表示し、そ
して復帰となる。
4.6.2 CreateNewMenu HANDLE CreateNewMenu(IOL
EInPlaceFrame*pFrame) CreateNewMenuファンクションは、複合メニューバー
の形成を管理するためにサーバアプリケーションによっ
て具現化されるファンクションである。このファンクシ
ョンは、複合メニューバーに関連した構造を割り当て、
そのメニューを挿入するようにコンテナーアプリケーシ
ョンを要求し、そしてサーバアプリケーションメニュー
を挿入する。コードテーブル2は、CreateNewMenuファ
ンクションの具現化を表している。ライン1において、
このファンクションは、その基礎となるウインドウシス
テムファンクションを呼び出し、複合メニューバーに対
するデータ構造を形成する。ライン2において、このフ
ァンクションは、コンテナーアプリケーションのフレー
ムウインドウのIOLEInPlaceFrame::InsertMenusを呼び
出し、コンテナアプリケーションのメニューを複合メニ
ューバーに挿入する。ライン3ないし5において、この
ファンションは、各メニューグループに対してコンテナ
ーアプリケーションが挿入したメニューの数を追跡す
る。ライン6ないし17において、サーバアプリケーショ
ンがEditグループメニューを有すると仮定すれば、この
ファンクションは、このファンクションは、各Editグル
ープメニューを形成し、そしてそれを複合メニューバー
における正しいスポットに挿入し、いかに多くのメニュ
ーが挿入されたかを追跡する。正しいスポットは、ライ
ン9において、いかに多くのメニューが既に左側へ挿入
されたかを決定することにより計算される。これは、Ed
itグループに対し、コンテナーアプリケーションがコン
テナーグループの一部として挿入したメニューの数と、
既に挿入されているEditグループのメニューの数と、現
在挿入に対する1との和となる。ライン18ないし30、31
ないし41において、このファンクションは、各々Object
グループ及びHelpグループに属するメニューに対して同
様のステップを実行する。ライン42において、このファ
ンクションは、オブジェクトリンク及び埋め込みAPIフ
ァンクションObjectCreateSharedMenuを呼び出して、複
合メニューバーに対するメッセージハンドリングに関連
したデータ構造を形成し、そしてライン43において、ハ
ンドルをこの構造に返送する。
4.6.3 CreateObjectToolbars void CreateObjectT
oolbars(IOLEInPlaceframe*pFrame,IOLEInPlaceUIWin
dow*pDoc,IOLEInPlaceUIWindow*pPane) CreateObjectToolbarsファンクションは、サーバアプ
リケーションツールに必要なスペースに対しサーバアプ
リケーションとコンテナーアプリケーションとの間で交
渉するためにサーバアプリケーションによって具現化さ
れるファンクションである。図24は、CreateObjectTool
barsファンクションを具現化するフローチャートであ
る。ステップ2401ないし2408は、サーバアプリケーショ
ンに対するツールを形成するように必要に応じて何回も
繰り返される。ステップ2401において、このファンクシ
ョンは、形成すべきツールバーが更にあるかどうかを決
定し、もしなければ、復帰し、さもなくば、ステップ24
02に続く。ステップ2402において、このファンクション
は、(サーバアプリケーションがツールをどこに配置し
たいかに基づいて)コンテナーアプリケーションのフレ
ーム、文書又は区画ウインドウのIOLEInPlaceUIWindo
w::GetBorder方法を呼び出し、交渉を開始する。ステッ
プ2403において、このファンクションは、所望のフレー
ム、文書又は区画ウインドウのIOLEInPlaceUIWindow::Q
ueryBorderSpace方法を呼び出し、GetBorder方法に対す
る以前の呼び出しにより返送された四角形の内側にボー
ダースペースの特定の巾を要求する。これらの方法は、
以下に詳細に説明する。ステップ2404において、特定の
巾を受け入れられない場合には、このファンクションは
ステップ2405に続き、さもなくば、復帰となる。異なる
値で必要な回数だけQueryBorderSpaceを呼び出すことに
より異なる量のスペースに対して交渉するように具現化
を選択することができる。ステップ2405において、この
ファンクションは、ステップ2403で既に交渉されている
スペースでIOLEInPlaceUIWindow::SetBorderSpace方法
を呼び出す。ステップ2406において、このファンクショ
ンは、親コンテナーアプリケーションの所望のフレー
ム、文書又は区画ウインドウの子ウインドウを形成す
る。ステップ2407において、このファンクションは、既
に形成した子ウインドウにツールを描き、次いで、ルー
プの始めに復帰する。
4.6.4 RemoveMenus void RemoveMenus(HANDLE hS
haredMenu) RemoveMenusファンクションは、コンテニーオブジェ
クトのデアクチベーション時に複合メニューバーからサ
ーバアプリケーションのメニューを除去する。この方法
は、コンテニーオブジェクトのInPlaceDeactivate方法
から呼び出される。コードテーブル3は、RemoveMenus
ファンクションの具現化を示す。このファンクション
は、各メニューグループ内に多数のメニューを含む共用
メニュー記述子(図25参照)に記憶された情報を用い
て、その基礎となるウインドウシステムファンクション
RemoveMenuを呼び出すことにより全てのサーバアプリケ
ーションメニューを除去する。ライン3ないし5は、Ed
itグループに属するメニューを除去し、ライン6ないし
8は、Objectグループに属するメニューを除去し、そし
てライン9ないし11は、Helpグループに属するメニュー
を除去する。
4.7 オブジェクトリンク及び埋め込みAPIのヘルパー
ファンクション インターフェイス定義に加えて、オブジェクトリンク
及び埋め込みAPIは、コンテナー及びサーバアプリケー
ションによって使用されるべき1組のヘルパーファンク
ションを与える。これらのファンクションは、SetActiv
eObjectHwnd;GetActiveObjectHwnd;ObjectCreateShared
Menu;ObjectDestroySharedMenu;ObjectShade;及びObjeo
tSetMenuを含む。
4.7.1 SetActiveObjectHwnd void SetActiveObjec
tHwnd(HWND hwndDOC,IOLEInPlaceObject*pObject) SetActiveObjectHwndファンクションは、MDIアプリケ
ーションの現在選択されたオブジェクトをセットする。
MDIコンテナーアプリケーションの各MDI(文書)ウイン
ドウには、そのMDIウインドウが最後に入力フォーカス
を有したときに表示されたその位置でアクチベートされ
たオブジェクトに対応するオブジェクトインターフェイ
スが関連される。MDIウインドウ内からオブジェクトが
その位置でアクチベートされていない場合には、それに
関連したオブジェクトインターフェイスはNULLである。
このメカニズムは、MDIウインドウが後で入力フォーカ
スを受け取るときに、例えば、ユーザがMDIウインドウ
のタイトルバーにおいてマウスでクリックするときに、
適切なコンテニーオブジェクトをアクチベートするよう
にMDIウインドウをイネーブルする。(ユーザが他のMDI
ウインドウのタイトルバーにおいてクリックするとき
は、第1のウインドウに関連したいかなるイン・プレー
ス対話も表示から消失する。)SetActiveObjectHwndフ
ァンクションは、2つのパラメータ、即ちMDI(文書)
ウインドウのウインドウハンドルと、その位置で現在ア
クチベートされているオブジェクトのIOLEInPlaceObjec
tインターフェイスとを取り上げる。ウインドウハンド
ルをオブジェクトインターフェイスに関連させる方法は
多数あることが当業者に明らかであろう。1つの実施例
において、このファンクションは、オブジェクトインタ
ーフェイスを、その基礎となるウインドウシステムファ
ンクションを用いて文書ウインドウの特性として記憶す
る。この具現化は、システムにおいてアクティブな各MD
Iウインドウごとに記憶装置を必要とすることに注意さ
れたい。別の解決策は、現在選択されるオブジェクトを
追跡する方法を文書、区画及びフレームウインドウイン
ターフェイスに追加する。
4.7.2 GetActiveObjectHwnd HWND GetActiveObjec
tHwnd(HWND hwndDOC) GetActiveObjectHwndファンクションは、MDIウインド
ウが入力フォーカスを受け取るときにその位置でアクチ
ベートされるべきコンテニーオブジェクトを検索する。
このファンクションは、SetActiveObjectHwndファンク
ションを用いて既に記憶されているオブジェクトインタ
ーフェイスを返送する。
4.7.3 ObjeCtcreateSharedMenu HANDLE ObjectCre
ateSharedMenu(HMENU hMenuCombined.UINT lpiMenuCou
nts) ObjectCreateSharedMenuファンクションは、その位置
でアクチベートされたオブジェクトの複合メニューバー
に関連した共用メニューデータ構造を形成する。このフ
ァンクションは、コンテニーオブジェクトがアクチベー
トされたときにCreateNewMenuファンクションから呼び
出される。コードテーブル4は、ObjectCreateSharedMe
nuファンクションの具現化を示す。このファンクション
は、2つのパラメータ、即ち複合メニューバーに対する
ハンドルと、各メニューグループにおけるメニューの数
を含むメニューカウントのアレーとを取り上げる。この
ファンクションは、新たに形成された共用メニューデー
タ構造に対するハンドルを返送する。ライン1におい
て、このファンクションは、共用メニューデータ構造に
必要なメモリを割り当てる。ライン2において、このフ
ァンクションは、このデータ構造における複合メニュー
バーに対するハンドルをセーブする。ライン3ないし15
では、このファンクションは、メニューカウントアレー
に記憶されたファンクションに基づいて共用メニュー記
述子を設定する。この記述子は、メニューコマンドを受
け取るときにウインドウ手順によって使用され、メニュ
ーコマンドをコンテナーアプリケーションに送るべきか
サーバアプリケーションに送るべきかを決定する。
この情報を維持する種々の方法があることが当業者に
明らかであろうが、1つの実施例では、記述子は、各イ
ンデックスにおいて、そのインデックスに関連したメニ
ューグループに含まれた最後のメニューの数を記憶す
る。(メニューは、左側において1から番号付けされ
る。)又、メニューグループがコンテナーアプリケーシ
ョンに属するかサーバアプリケーションに属するかの指
示も各インデックスに記憶される。又、どのメニューグ
ループに対してどのアプリケーションに通知すべきかを
指示する付加的なパラメータを通すことにより、メニュ
ーグループ分け機構もサポートできることが当業者に明
らかであろう。この記述子構成を用いて、ウインドウ手
順は、メニュー項目選択を含むまでメニューの数をカウ
ントしそしてそのメニュー数を記述子の値と比較して正
しいインデックスを見つけることにより、特定のメニュ
ー項目選択がどのインデックス内に入るかを決定するこ
とができる。いったんインデックスが決定されると、ウ
インドウ手順は、コンテナーアプリケーションファンク
ションを呼び出すべきか又はサーバアプリケーションフ
ァンクションを呼び出すべきかを指定する指示子を検索
することができる。この手順は、コードテーブル5を参
照して以下に詳細に述べる。
図25は、図4について述べた例に対応する共用メニュ
ーデータ構造のブロック図である。この共用メニューデ
ータ構造は、複合メニューバーのポインタ2502と、各メ
ニューグループに対するメニューカウントを含む記述子
2505とで構成される。複合メニューバー2503は、コンテ
ナー及びサーバアプリケーション2504からのメニューを
含む。記述子2505の各エレメントは、カウントフィール
ド2506及びファンクションフィールド2507を有する。カ
ウントフィールド2506は、メニューグループ内の最後の
メニューの数(左からスタートして)を指示する。例え
ば、第2のメニューグループは、Editグループであり、
1つのメニューしか含まない。このメニュー2503は、複
合メニューバーにおいて左から2番目のメニューであ
り、それ故、カウントフィールド2509は、数2を含む。
別の例として、4番目のメニューグループは、Objectグ
ループである。このグループは、サーバアプリケーショ
ン2510からの5つのメニューを含む。それ故、このメニ
ューグループ2511のカウントは数7を含む。というの
は、7番目のメニューが、Objectグループにおける最後
のメニューであるMacroメニューだからである。
4.7.4 ObjectDestroySharedMenu void ObjectDest
roySharedMenu(HMENU hMenuCombined) ObjectDestroySharedMenuファンクションは、ObjectC
reateSharedMenuへの以前の呼び出しにおいて形成され
た共用メニューデータ構造を破壊する。このファンクシ
ョンは、コンテナー及びサーバアプリケーションがそれ
らのメニューを複合メニューバーから除去した後に、ア
クチベートされたコンテニーオブジェクトのIOLEInPlac
eObject::InPlaceDeactivate方法から呼び出される。
4.7.5 ObjectShade void ObjectShade(HWND hwnd
Parent,LPRECT 1prc.DWORD grfState) ObjectShadeファンクションは、オブジェクトリンク
及び埋め込みAPIによって与えられ、その位置でアクチ
ベートされたオブジェクトの周りに配置される陰影付け
されたボーダーパターンを形成する。hwndParentパラメ
ータは、アクチベートされた(又はアクチベートされる
べき)オブジェクトのIOLEInPlaceParentインターフェ
イスに関連したウインドウハンドルである。lprcパラメ
ータは、パターンが配置されるところの親ウインドウ座
標における四角形である。grfStateフラグは、IOLEInPl
aceParent::ShadeBorder方法について述べたものと同じ
であり、SHADEBORDER_ON及びSHADEBORDER_ACTIVEを含
む。
4.7.6 ObjectSetMenuDescriptor SCODE ObjectSet
Menu(HWND hwndFrame,HOLEMENU hMenuCombind,HWND hw
ndObject) ObjectSetMenuDescriptorファンクションは、複合メ
ニューバーに対するメッセージハンドラーを設定又は除
去する。このファンクションは、アクチベートするコン
テニーオブジェクトの関連コンテナーオブジェクトのIO
LEInPlaceFrame::SetMenu方法によって呼び出される。
図26は、ObjectSetMenuDescriptorファンクションの具
現化を示すフローチャートである。これは、3つのパラ
メータ、即ちコンテナーアプリケーションに関連したフ
レームウインドウのウインドウハンドル;ObjectCreateS
haredMenuファンクションによって返送された共用メニ
ューデータ構造に対するハンドル;及び現在その位置で
アクチベートされるべきオブジェクトのウインドウハン
ドルを取り上げる。共用メニュー構造に対するハンドル
がナルである場合には、このファンクションは、複合メ
ニューバーに対するメッセージハンドラーを除去し、さ
もなくば、メッセージハンドラーを設定する。ステップ
2601において、このファンクションは、指定された共用
メニューデータ構造に対するハンドルがナルであるかど
うか決定し、もしそうであれば、ステップ2602へ続き、
さもなくば、ステップ2603へ続く。ステップ2602におい
て、このファンクションは、その基礎となるウインドウ
システムファンクションSetWindowLongを呼び出し、コ
ンテナーアプリケーションに既に関連されている特殊な
メッセージハンドラーを除去する。ステップ2603におい
て、このファンクションは、複合メニューに対して既に
設定されている特性を除去し、次で、復帰する。ステッ
プ2604において、このファンクションは、特殊なメッセ
ージハンドラーによっ後で使用されるべき共用メニュー
データ構造を記憶するための特性をフレームウインドウ
にセットする。ステップ2605において、このファンクシ
ョンは、アクチベートするオブジェクトのウインドウハ
ンドルに対応する別の特性をフレームウインドウにセッ
トする。ステップ2606において、このファンクション
は、その基礎となるウインドウシステムファンクション
SetWindowLongを用いて、親コンテナーアプリケーショ
ンのフレームウインドウに対する新たなウインドウ手順
として特殊なメッセージハンドラーをインストールす
る。古いウインドウ手順は、特性Old_Filterに後で使用
するためにセーブされる。(例えば、以下に詳細に述べ
るコードテーブル5を参照されたい。)次いで、ファン
クションは復帰となる。
5.イン・プレース対話APIの使用 イン・プレース対話をサポートするオブジェクトリン
ク及び埋め込みAPIファンクションは、次のことを行う
ために呼び出される。
・SDI又はMDIコンテナーアプリケーション内の場所で
オブジェクトをアクチベートする。
・ユーザがコンテナーアプリケーションの複合メニュ
ーバーからメニュー項目を選択するときにメッセージを
処理する。
・ユーザが異なるオブジェクトをアクチベートするよ
うに選択するか又は最上レベルのコンテナアプリケーシ
ョンをその通常処理に回復するよう選択するときにその
位置でアクチベートされたオブジェクトのユーザインタ
ーフェイスリソースをデアクチベートする。
・コンテナーアプリケーションがイン・プレース対話
リソースをもはや必要としないときにサーバアプリケー
ションに対してそれらリソースをデアクチベートする。
・サーバアプリケーションがダイアログを表示しそし
てコンテナーアプリケーションがモードレスダイアログ
を現在表示する(又はその逆である)ときにモードレス
ダイアログをイネーブル及びディスエイブルする。
・アクセラレータキー組合せをコンテナーアプリケー
ションとサーバアプリケーションとの間に分配するよう
にこれら組合せを処理する。
5.1 その位置でアクチベーションする手順 上記したように、オブジェクトが文書にリンクされる
か又は埋め込まれると、ユーザは、オブジェクトを選択
し、そしてその選択されたオブジェクトに基づいてある
アクションを実行するよう要求する。図3及び4の例に
戻ると、ユーザがスプレッドシートオブジェクト305を
その位置でアクチベートするように望む場合には、ユー
ザは、オブジェクトプレゼンテーションフォーマットに
おいてマウス入力装置で2回クリックするか、又はコン
テナーアプリケーションメニューを用いてオブジェクト
におけるアクションを選択することができる。図8は、
ユーザがメニューを使用してスプレッドシートオブジェ
クト305をその位置でアクチベートできるようにする1
つの方法を示している。ユーザがコンテナーアプリケー
ション(ワードプロセスアプリケーション)のEditメニ
ュー802からメニュー項目「Excel Worksheet Objec
t」803を選択し、そして「Excel Worksheet Object」
サブメニュー804からいずれかのアクションを選択する
ときには、ワードプロセスアプリケーションは、スプレ
ッドシートアプリケーションを呼び出して、スプレッド
シートオブジェクトをその位置でアクチベートする。
スプレッドシートオブジェクト305をアクチベートす
るプロセスは、多数のステップで行われる。第1に、ワ
ードプロセスアプリケーションのフレームウインドウに
対するウインドウ手順が、その基礎となるウインドウシ
ステムにより、オブジェクトアクションサブメニュー80
4におけるメニュー項目のユーザ選択に応答して呼び出
される。(例えば、図14を参照されたい。)第2に、メ
ニュー事象を受け取ると、ウインドウ手順は、ファンク
ションProcess_Object_Activationを呼び出す。(例え
ば、ステップ1407、1411及び1413を参照されたい。)第
3に、ファンクションProcess_Object_Activationは、
オブジェクトリンク及び埋め込みAPIのファンクションO
bjectLoadを用いてスプレッドシートオブジェクト305に
対するデータをロードする。最後に、ファンクションPr
ocess_Object_Activationプログラムは、スプレッドシ
ートオブジェクト305のDoVerb方法を呼び出して、選択
されたアクションを実行するようにスプレッドシートア
プリケーションに要求する。
図27は、ファンクションProcess_Object_Activation
を具現化するフローチャートである。このファンクショ
ンは、選択されたオブジェクトをロードし、そしてその
DoVerb方法を呼び出して、選択されたアクションを実行
する。ステップ2701において、このファンクションは、
オブジェクトリンク及び埋め込みAPIのファンクションO
bjectLoadを呼び出し、オブジェクトの記憶に対するポ
インタと、それがIOLEObjectインターフェイスを希望す
るという指示とをそれに通す。ファンクションObjectLo
adは、ロードされたオブジェクトのIOLEObjectインター
フェイスに対するポインタを返送する。ステップ2702に
おいて、このファンクションは、コンテニーオブジェク
トのSetClientSite方法を呼び出して、その関連する親
コンテニーオブジェクトインターフェイス(pclientsit
e)に対するポインタをコンテニーオブジェクトに手渡
す。ステップ2703において、このファンクションは、ロ
ードされたオブジェクトのIOLEObject::DoVerb方法を呼
び出し、選択されたアクション、そのアクションがダブ
ルクリックによって選択されたかどうかの指示、及びオ
ブジェクトに対して既に形成されているIOLEClientSite
インターフェイスをそこに通す。次いで、このファンク
ションは復帰となる。
図28は、オブジェクトリンク及び埋め込みAPIファン
クションObjectLoadの具現化を示すフローチャートであ
る。このファンクションは、オブジェクトのメモリ内イ
ンスタンスを形成し、将来の対話についてサーバアプリ
ケーションを準備し、そして指定されたインターフェイ
スに対するポインタを返送する。このファンクション
は、3つのパラメータ、オブジェクトデータがロードさ
れるべき記憶装置に対するポインタ、発呼者が返送を望
むインターフェイスの指示、及びオブジェクトのメモリ
内インスタンスに対する返送ポインタを取り上げる。ス
テップ2801において、このファンクションは、CLASS_ID
を指定の記憶装置から検索する。ステップ2802におい
て、このファンクションは、検索されたCLASS_IDを用い
て、この形式のオブジェクトのメモリ内インスタンスを
形成するためのコードを位置決めする。本発明の好まし
い実施例においては、IOLECreateインターフェイスが各
サーバアプリケーションによって与えられ、それが具現
化するオブジェクトのメモリ内インスタンスを形成す
る。ステップ2803において、このファンクションは、IO
LECreate::CreateInstance方法を呼び出し、オブジェク
トに対するメモリ内構造を形成し、そしてオブジェクト
に対する永続的記憶装置をアクセスするところのIPersi
stStorageインターフェイスに対するポインタを返送す
る。ステップ2804において、このファンクションは、IP
ersistStorage::Load方法を呼び出し、これは、指定さ
れた記憶装置からオブジェクトデータをロードする。ス
テップ2805において、このファンクションはIPersistSt
orage::QueryInterface方法を呼び出し、指定のインタ
ーフェイスを検索すると共に、その検索されたインター
フェイスを返送する。
図29は、IOLEObject::DoVerb方法の典型的な具現化を
示すフローチャートである。この方法は、コンテニーオ
ブジェクトと対話するための主たる方法である。この方
法は、コンテナーアプリケーションと交渉して、イン・
プレース対話を行うと共に、サーバアプリケーションの
ユーザインターフェイスをアクチベートさせる。この方
法は、4つのパラメータ、即ちユーザが選択したアクシ
ョン;ユーザがアクションを選択したときにコンテナー
アプリケーションのウインドウ手順によって受け取られ
るメッセージ構造に対するポインタ;オブジェクトのIO
LEClientSiteインターフェイスに対するポインタ;及び
例えば、サーバアプリケーションが呼び出し時に入力フ
ォーカスを得るべきかどうかについてverb.の実行を制
御する1組のフラグを取り上げる。ステップ2901におい
て、この方法は、IOLEClientSite::QueryInterface方法
を呼び出して、特定のオブジェクトに対するIOLEInPlac
eParentインターフェイスを得る。ステップ2902におい
て、この方法は、IOLEInPlaceParent::CanInPlaceActiv
ate方法を呼び出して、コンテナーアプリケーションが
イン・プレース対話をサポートするかどうかを決定す
る。ステップ2903において、コンテナーアプリケーショ
ンがイン・プレート対話をサポートしない場合には、こ
の方法はステップ2904に続き、さもなくば、この方法は
ステップ2906に続く。ステップ2904において、この方法
は、サーバアプリケーションのフレームウインドウを形
成し表示する。というのは、コンテナーアプリケーショ
ンがイン・プレース対話を実行できないからである。ス
テップ2905において、この方法は、指定されたアクショ
ンの通常の処理を続け、復帰する。ステップ2906におい
て、この方法は、IOLEInPlaceParent::GetWindowContex
t方法を呼び出し、コンテナーアプリケーションに関連
したインターフェイスを得る。ステップ2907において、
この方法は、特定のオブジェクトでイン・プレース対話
をサポートするために形成する必要のあるオブジェクト
ウインドウのサイズを計算する。ステップ2908におい
て、この方法は、IOLEInPlaceParent::GetWindowContex
t方法により返送されたエリアがスケーリング又はクリ
ッピングを必要とするかどうか及び特定のオブジェクト
がこれをサポートできるかどうかを決定する。必要とさ
れるサイズをサポートできる場合には、この方法はステ
ップ2909に続き、さもなくば、この方法は、イン・プレ
ース対話を放棄してステップ2909へ続く。ステップ2909
において、この方法は、IOLEInPlaceParentインターフ
ェイスに対応するウインドウに対するウインドウハンド
ルを検索する。ステップ2910において、この方法は、オ
ブジェクトルートウインドウとして使用されるべきIOLE
InPlaceParentインターフェイスに対応するウインドウ
の子として新たなウインドウを形成する。(例えば、図
13の項目1309を参照されたい。)ステップ2911におい
て、この方法は、特定のオブジェクトに対するユーザイ
ンターフェイスリソースがまだ使用できるかどうか、即
ち割り当てられているがまだ割り当て解除されていない
かどうかを決定する。これらリソースが使用できる場合
には、この方法はステップ2913へ続き、さもなくば、こ
の方法はステップ2912へ続く。ステップ2912において、
この方法は、IOLEInPlaceParent::OnUIActivate方法を
呼び出し、コンテナーアプリケーションが、特定のオブ
ジェクトをその位置でアクチベートする準備においてそ
のユーザインターフェイスリソースを除去できるように
する。ステップ2913において、この方法は、IOLEInPlac
eParent::OnInPlaceActivate方法を呼び出し、コンテナ
ーアプリケーションが、ネスト状オブジェクトをその位
置でアクチベートしたことを記録できるようにする。ス
テップ2914において、この方法は、ファンクションCrea
teNewMenuを呼び出し、新たな複合メニューバーを形成
する(コードテーブル2を参照)。ステップ2915におい
て、この方法は、特定のオブジェクトが付加的なユーザ
インターフェイスツールのアクチベーションを必要とす
るかどうかを決定し、もしそうであれば、ステップ2916
へ続き、さもなくば、ステップ2917へ続く。ステップ29
16において、この方法は、ファンクションCreateObject
Toolbarsを呼び出し、特定のオブジェクトの付加的なユ
ーザインターフェイスツールの位置を交渉しそしてそれ
を配置する(図24を参照)。ステップ2917において、こ
の方法は、ファンクションActivateUIを呼び出し、これ
は、特定のオブジェクトの全てのユーザインターフェイ
スリソースを表示させ(図23を参照)そして復帰とな
る。
5.1.1 多文書インターフェイスアプリケーション
内の位置でのアクチベーション オブジェクトがSDIコンテナーアプリケーションから
アクチベートされたと仮定してコンテニーオブジェクト
のアクチベーションについて上記した。一方、オブジェ
クトがMDIコンテナーアプリケーション(このアプリケ
ーションは、定義により、多数の複合文書と同時に対話
できる)内でアクチベートされる場合には、オブジェク
トを含む文書(MDI)ウインドウがアクチベート又はデ
アクチベートされるときにアクチベーション及びデアク
チベーションが生じる。文書ウインドウに対するウイン
ドウ手順は、ユーザがウインドウを選択する(例えば文
書ウインドウのタイトルバーにおいてクリックすること
により)ときに、その基礎となるウインドウシステムか
らアクチベーションメッセージを受け取る。文書ウイン
ドウに対するウインドウ手順は、ユーザが次いで異なる
ウインドウを選択するときにデアクチベーションメッセ
ージを受け取る。これらのメッセージに応答して、文書
ウインドウに対するウインドウ手順は、ファンクション
(例えばProcess_Activation_Message)を呼び出し、文
書ウインドウ及びその中に含まれたアクチベートされた
オブジェクトのアクチベーション及びデアクチベーショ
ンを実行する。
図30は、アクチベーション及びデアクチベーションメ
ッセージを処理するためにMDI文書ウインドウのウイン
ドウ手順によって呼び出されたファンクションProcess_
Activation_Messageの具現化を示すフローチャートであ
る。1つの実施例において、文書ウインドウハンドルが
ファンクションに対するパラメータとして通される。こ
のファンクションは、ウインドウが最後にアクティブと
なったときに既にその位置でアクチベートされたオブジ
ェクトをウインドウが含むかどうかを決定する。もしそ
うであれば、ファンクションは、そのオブジェクトをア
クチベート又はデアクチベートし、さもなくば、文書ウ
インドウをその通常の形態でアクチベート又はデアクチ
ベートする。ステップ3002において、このファンクショ
ンは、その通常のウインドウデアクチベーション手順を
実行し、そして復帰となる。ステップ3001において、こ
のファンクションは、ファンクションGetActiveObjectH
wndを呼び出すことにより、既にアクティブな収容オブ
ジェクトがもしあればそれに対しIOLEInPlaceObjectの
オブジェクトインターフェイスを検索する。ステップ30
02において、このファンクションは、オブジェクトイン
ターフェイスがナルであるかどうか決定する。もしナル
であれば、既にアクティブな収容オブジェクトは存在せ
ず、ファンクションはステップ3003へ続き、さもなく
ば、ファンクションはステップ3004へ続く。ステップ30
03では、このファンクションは、文書ウインドウツール
及びメニューを設定するといったその通常のウインドウ
アクチベーション又はデアクチベーション手順を実行
し、そして復帰となる。ステップ3004では、このファン
クションは、指定されたフラグFActiveが真であるかど
うか決定する。フラグFActiveが真である場合は、既に
アクティブな収容オブジェクトをアクチベートすべきで
あり、このファンクションはステップ3005に続き、さも
なくば、オブジェクトをデアクチベートすべきであり、
ファンクションはステップ3006に続く。ステップ3005で
は、このファンクションは、検索されたインターフェイ
スのIOLEInPlaceObject::Activate方法を呼び出して、
既にアクチベートされたオブジェクトがそれ自体アクチ
ベートするように要求し、そして復帰となる。ステップ
3006では、このファンクションは、検索されたインター
フェイスのIOLEInPlaceObject::Activate方法を呼び出
して、既にアクチベートされたオブジェクトがそれ自体
デアクチベートするように要求し、そして復帰となる。
5.2 プルダウンメニューメッセージハンドリングの
ユーザ選択 ユーザがオブジェクトをその位置でアクチベートした
後に、ユーザは、コンテナーアプリケーションのメニュ
ーバー(これは複合メニューバーである)を介してアク
ションを選択することによりコンテナーアプリケーショ
ン内のオブジェクトと対話する。メニューのあるものは
サーバアプリケーションに属しておりそして他のメニュ
ーはコンテナーアプリケーションに属しているので、コ
ンテナーアプリケーションのフレームウインドウのウイ
ンドウ手順は、メニュー入力事象をコンテナーアプリケ
ーション内のファンクションに送信すべきかサーバアプ
リケーション内のファンクションに送信すべきか判断し
なければならない。このために、オブジェクトリンク及
び埋め込みAPIのファンクションObjectSetMenuDescript
orがサーバアプリケーションによって呼び出されたとき
にこのファンクションによって特殊なメッセージハンド
ラーがインストールされ、新たに形成された複合メニュ
ーバーをインストールする。この特殊なメッセージハン
ドラーは、これがインストールされると、コンテナーア
プリケーションのフレームウインドウに対する新たなウ
インドウ手順となる。従って、そのフレームウインドウ
に対応するコンテナーアプリケーションによって受け取
られた全てのメッセージは、その後に、先ず、特殊なメ
ッセージハンドラーへ送られる。この特殊なメッセージ
ハンドラーは、次いで、受け取ったメッセージ事象をど
のアプリケーションへ送るべきかを判断する。
コードテーブル5は、オブジェクトリンク及び埋め込
みAPIにより与えられる特殊なメッセージハンドラーの
具現化を示している。ライン3ないし54は、受け取った
メッセージの形式に基づくケースステートメントを具現
化する。ライン28ないし49は、ハンドラーがその基礎と
なるウインドウシステムからメニューコマンドメッセー
ジを受け取ったときにメッセージを適切に送れるように
する初期化を与える。ライン4ないし27及びライン50な
いし53は、メニューコマンドメッセージが受け取られた
ときに基本的なルートメカニズムを与える。ライン29に
おいて、共用メニューデータ構造に対するハンドルは、
コンテナーアプリケーションのフレームウインドウの特
性から検索される。ライン32ないし37において、ハンド
ラーは、複合メニューバーのエントリーをウォークし、
その入力メッセージで受け取られたメニューとの一致を
試みる。このプロセスにおいて、遭遇するメニューの数
を追跡する(ライン36)。ループを出たときにメニュー
が見つかった場合には、変数カウントは、左から始めて
選択されたメニューの数を表す。このカウントは、次い
で、ライン43ないし48に含まれたループに使用され、メ
ニューがどの記述子エレメントに属するかを決定する。
より詳細には、記述子の各インデックスに記憶された値
がチェックされ、そしてメニューの数がその値以下であ
って且つ左側のインデックスにおいて記述子に記憶され
た値より大きい場合には、正しい記述子エレメントが位
置決めされる。正しいエレメントが分かると、ハンドラ
ーは、コンテナーアプリケーションファンクションを呼
び出さねばならないかサーバアプリケーションファンク
ションを呼び出さねばならないかに対応する指示子を検
索する。この指示子は、次いで、ライン45及び47におい
て変数saveMenuRoutineにセーブされる。メニューのニ
ューモニックス(mneumonics)(システムメニューキー
シーケンスを含む)を適切に処理するためのハンドラー
として、このハンドラーは、メニューコマンドメッセー
ジに応答するときに入力フォーカスをフレームウインド
ウにセットする。
メニューのニューモニックスは、マウスを使用するの
ではなく、キーボードを使用してメニューをアクセスす
る方法を与える「Alt.−,F.N.」のようなキーシーケン
スである。通常は、メニュー項目は、例えば、ウインド
ウズ3.1においてアンダーラインを付したその独特のニ
ューモニックスとして指定された1つの文字を有する。
メニュー項目をアクセスするために、その独特のニュー
モニックスがその収容するメニューのニューモニックス
に添付される。全キーシーケンスの前にはシステムキー
があり、これはユーザがメニューニューモニックスをタ
イプ入力したい旨をシステムに知らせる。メニューニュ
モニックスは、イン・プレース対話がその基礎となる幾
つかのウインドウシステムで具現化されるときに特殊な
問題を課する。より詳細には、変更されない条件のもと
で、コンテニーオブジェクトがその位置でアクチベート
されたときに、システムキー(ウインドウズ3.1におけ
る「ALT」キー)及び他のナビゲーションキー除く全て
のキーボード入力がオブジェクトルートウインドウに対
するウインドウ手順に送られる(図13の項目1309を参照
されたい)。というのは、オブジェクトルートウインド
ウには、オブジェクトがアクチベートされたときに入力
フォーカスが与えられるからである。しかしながら、そ
の基礎となるウインドウシステムはシステムキーをコン
テナーアプリケーションフレームウインドウのウインド
ウ手順に送る。というのは、このキーは特殊に手渡しさ
れるからである。従って、コンテナーアプリケーション
は、システムキーシーケンスの選択されたメニュー項目
に対応するキー入力を受け取ることはない。例えば、メ
ニューニューモニックスのキーシーケンスがALT.−,m
(「move」に対し)である場合には、「ALT」キーの押
圧がコンテナーアプリケーションへ送られそして「−」
及び「m」キーの押圧がサーバアプリケーションへ送ら
れる。この問題を解消するために、入力フォーカスはコ
ンテナーアプリケーションフレームウインドウに一時的
にセットされ、一方、フレームウインドウ手順はメニュ
ー事象を処理する。この解決策の一例がライン5、39及
び40に示されている。
ライン4ないし14において、ハンドラーがメニューコ
マンドを受け取るときに、ハンドラーは、先ず、通常の
プロセスを続けられるように入力フォーカスを回復させ
る。次いで、ハンドラーは、SaveMenuRoutineにセーブ
された指示子をチェックする。これが、メニューがサー
バアプリケーションに属することを指示する場合には、
ハンドラーはオブジェクトウインドウのウインドウ手順
を呼び出し、さもなくば、元のコンテナーアプリケーシ
ョンウインドウ手順を呼び出す。より詳細には、ライン
7において、ハンドラーは、コンテナーアプリケーショ
ンのフレームウインドウの特性として記憶されたオブジ
ェクトのウインドウハンドルを得る。ライン8におい
て、ハンドラーは、オブジェクトウインドウにメッセー
ジを非同期で発信し、元のメッセージ及び元のパラメー
タを送る。ライン11において、指示子がサーバアプリケ
ーションを特定しない場合には、ハンドラーは、コンテ
ナーアプリケーションのフレームウインドウの元のウイ
ンドウ手順を検索し、そしてライン12において、この手
順を、指定されたメッセージ及びパラメータで呼び出
す。コンテナーアプリケーションのフレームウインドウ
の元のウインドウ手順は、新たなウインドウ手順におい
てインストールされたObjectSetMenuDescriptorへの呼
び出しにおいてセーブされる。
ライン15ないし27において、ハンドラーは、他のメニ
ュー関連メッセージを受け取ると、ライン6ないし13で
与えられたのと同様にコンテナー又はオブジェクトアプ
リケーションへメッセージを適宜発送する。ライン50な
いし53において、他の種類のメッセージが受け取られた
場合には、古いウインドウ手順が検索され、メッセージ
及びパラメータがそこに送られる。
5.3 その位置でのデアクチベーション手順 ユーザが、その位置でアクチベートされるオブジェク
ト以外のエリアを選択すると、オブジェクトがデアクチ
ベートされる。一般に、この振る舞いは、ユーザがコン
テナーアプリケーションのウインドウか又はMDIコンテ
ナーアプリケーションの場合には異なる文書ウインドウ
の別のエリアにおいてマウスボタンでクリックするとき
に生じる。それ故、一般的に述べると、イン・プレース
対話APIのデアクチベーション方法は、マウスボタン事
象を処理するためにコンテナーアプリケーションによっ
て呼び出されるファンクションから呼び出される。
図31は、Process_Mouse_LButtonDownファンクション
の具現化を示すフローチャートである。このファンクシ
ョンは、左のボタンダウンメッセージの受信によって信
号される入力事象を処理する。当業者であれば、このよ
うなファンクションは、いずれかの種類の入力事象を受
信した際に呼び出すことができそして他の事象は選択及
び選択解除に使用できることが明らかであろう。ステッ
プ1301では、このファンクションは、コンテナーアプリ
ケーションがアクチベートしようとしていることを指示
するフラグをセットする。このフラグは、ネスト状デア
クチベーションの呼び出しのシーケンス中に使用され、
ネスト状アクチベーションの場合に正しいユーザインタ
ーフェイスリソースが表示されるように確保する。ステ
ップ3102において、このファンクションは、フラグACTI
VATED_SOMEONEをチェックして、オブジェクトがその位
置でアクチベートされたかどうかを判断し、もしそうで
あれば、ステップ3104へ続き、さもなくば、ステップ31
03へ続く。ステップ3103では、このファンクションは、
その通常の左ボタンダウン事象処理を実行し、そして復
帰となる。ステップ3104では、このファンクションは、
現在アクチベートされたオブジェクトに対しIOLEInPlac
eObjectインターフェイスを検索する。ステップ3105に
おいて、このファンクションは、オブジェクトのIOLEIn
PlaceObject::InPlaceUIDeactivate方法を呼び出す。こ
のファンクションは、次いで、ステップ3103へ続く。
図21に示すように、現在アクチベートされたオブジェ
クトのIOLEInPlaceObject::InPlaceUIDeactivate方法
は、次いで、このIOLEInPlaceParent::OnUIDeactivate
方法を呼び出して、コンテナーアプリケーションがその
ユーザインターフェイスリソースをインストールできる
ようにする。このデアクチベーションは、最上位レベル
のコンテナー又はアクチベートしようとしているオブジ
ェクトのコンテナーのいずれかに到達するまで上方にネ
スト構成になる。(図19を参照されたい)。例えば、図
4を参照すると、埋め込まれたスプレッドシートオブジ
ェクト405内に示された埋め込まれたチャートオブジェ
クト409が現在アクチベートされたオブジェクトであり
そしてユーザがスプレッドシートオブジェクト405を選
択してこれをその位置でアクチベートする場合は、チャ
ートのIOLEInPlaceObject::InPlaceUIDeactivate方法が
呼び出され、これは、次いでスプレッドシートのIOLEIn
PlaceObject::OnUIDeactivate方法を呼び出す。この後
者の方法は図4に示すようにスプレッドシートオブジェ
クトに対するユーザインターフェイスをインストールす
る。一方、ユーザが複合文書内のどこかでクリックした
場合には、スプレッドシートのIOLEInPlaceObject::OnU
IDeactivate方法は、複合文書のIOLEInPlaceObject::On
UIDeactivate方法を呼び出す。この後者の方法は、ワー
ドプロセスユーザインターフェイスをインストールす
る。というのは、このオブジェクトは最上位レベルのコ
ンテナーオブジェクトだからである。
コンテナーアプリケーションは、表示されたコンテナ
ーオブジェクトを垂直又は水平にスクロールするための
スクロールバーを表示することができる。これらスクロ
ールバーは、コンテナーウインドウの一部分である。コ
ンテナーオブジェクトがアクチベートされたコンテニー
オブジェクトを有する場合には、ユーザがコンテニーオ
ブジェクトの外側のエリアでクリックしたときに、コン
テニーオブジェクトはデアクチベートされる。好ましい
実施例では、コンテナーアプリケーションは、クスロー
ルバーメッセージを受け取る際に、コンテニーオブジェ
クトをデアクチベートしない。むしろ、コンテナーアプ
リケーションは、スクロールを行い、入力フォーカスが
コンテニーオブジェクトと共に留まるよう確保する。
5.4 コンテナーアプリケーションを閉じる コンテナーアプリケーションが、既にアクチベートさ
れたオブジェクトを再アクチベートする開放(undo)オ
ペレーションをもはや実行できなくなった後であって、
且つコンテナーアプリケーションがユーザによって閉じ
られる前のある時間に、コンテナーアプリケーション
は、既にアクチベートされたオブジェクトに関連したユ
ーザインターフェイスリソースを永久的に割り当て解除
する。これらのリソースを割り当て解除するために、コ
ンテナーアプリケーションは、既にアクチベートされた
オブジェクトに関連したIOLEInPlaceObject::InPlaceDe
activate方法を呼び出す。この方法は、次いで、共用メ
ニューデータ構造と、複合メニューバーに関連したメニ
ューとを割り当て解除する。(図20及びそれに関連した
説明を参照されたい。) 5.5 モードレスダイアログとの対話 その位置でアクチベートされたオブジェクトであって
そのサーバアプリケーションがモードレスダイアログを
表示しているようなオブジェクトとユーザが対話すると
きに、ユーザがそれ自身のモードダイアログを表すコン
テナーアプリケーションメニューからメニュー項目を選
択したい場合には、コンテナーアプリケーションはサー
バアプリケーションのモードレスダイアログを一時的に
隠す。モードレスダイアログボックスが隠されるのは、
ユーザが同時に表示される2つのダイアログボックスを
見て混乱しそしてどのボックスに入力が送られるか分か
らないからである。というのは、サーバ及びコンテナー
アプリケーションは、1つのアプリケーションとして現
れることを意味するからである。又、モードダイアログ
は、他のダイアログとの競合を回避するようにプログラ
ムされていない。というのは、慣例的なアプリケーショ
ンにおいては、その基礎となるウインドウシステムが単
一のアプリケーション内のモードダイアログの外側の入
力を禁止するからである。イン・プレース対話を使用す
る場合には、2つのアプリケーションが共働して1つに
見えるので、このような競合は自動的に回避される。そ
れ故、アプリケーションは、モードダイアログとモード
レスダイアログとの間の競合を回避するように共働しな
ければならない。例えば、ユーザがスプレッドシートア
プリケーションのEditメニューにおける「Find...」メ
ニュー項目を選択し、サーバアプリケーションによって
モードレスダイアログが表示されると仮定する。ここ
で、ユーザが複合文書の一部分をプリントアウトしよう
とし、従って、ユーザが、ワードプロセス(コンテナ
ー)アプリケーションに属するFileメニュー上の」Prin
t...」メニュー項目を選択すると仮定する。ワードプロ
セスアプリケーションは、両方のダイアログが同時に表
示されないのが好ましいので、「Find...」ダイアログ
を隠す。これを行うために、ワードプロセスアプリケー
ションは、スプレッドシートアプリケーションのIOLEIn
PlaceObject::EnableModeless方法を呼び出して、モー
ドレスダイアログを隠すように要求する。次いで、コン
テナーアプリケーションが「Print...」ダイアログの処
理を終了した後に、EnableModeless方法を呼び出して、
モードレスダイアログを再表示する。
サーバアプリケーションがコンテナーアプリケーショ
ンのモードレスダイアロスを隠す必要がある場合にも同
様の状態が生じ得る。この場合には、IOLEInPlaceFram
e::EnableModeless方法が使用される。
5.6 アクセラレータキーの組合せの取り扱い 本発明の好ましい実施例においては、その基礎となる
ウインドウシステムは、アクセラレータキー組合せと称
する概念をサポートし、ユーザがキーボードショートカ
ットを介してメニューコマンドを呼び出すことができる
ようにする。アクセラレータキー組合せは、特定のメニ
ューコマンドを呼び出すことと同等であるようにアプリ
ケーションによって指定された一連のキーである。例え
ば、「CNTRL」キーを押した後に「N」キーを押すこと
より成るキーのシーケンスは、「File」メニュー上のメ
ニューコマンド「New」に変換される。典型的なシステ
ムにおいて、アクセラレータキー組合せは、ユーザによ
って指定でき、アプリケーション内で独特である必要が
ある。
一般に、アクセラレータキー組合せ(アクセラレー
タ)は、アプリケーションのメッセージポンプにおいて
処理される(図14のステップ1402を参照)。典型的なメ
ッセージポンプは、その基礎となるウインドウシステム
を呼び出してアクセラレータ変換テーブルをそこに通
し、ウインドウシステムが、アクセラレータがどのメニ
ュー項目コマンドに対応するかを決定するようにさせ
る。ウインドウシステムは、次いで、それにより得たメ
ニューコマンドを適当なウインドウ手順に送信する。
オブジェクトリンク及び埋め込みイン・プレース対話
APIではアクセラレータに対して問題が生じ得る。先
ず、サーバアプリケーションはそのコンテナーアプリケ
ーションのプロセススペース内でオブジェクトハンドラ
ーとして具現化できるので、コンテナーアプリケーショ
ンは、サーバアプリケーションがそれ自身のアクセラレ
ータを変換する機会をもつよう確保しなければならな
い。好ましくは、サーバアプリケーションには、サーバ
アプリケーションがその位置でアクチベートされたとき
にあいまいなアプリケーションアクセラレータの処理に
おいてコンテナーアプリケーションより高い優先順位が
与えられる。又、サーバアプリケーションがそれ自身の
プロセススペースにおいて具現化される場合には、それ
が確認できないアクセラレータをコンテナーアプリケー
ションに通さねばならない。
この問題を解決するために、コンテナーアプリケーシ
ョン及びサーバアプリケーションのメッセージポンプ
は、アプリケーションアクセラレータを変換する機会を
互いに許すように変更される。コードテーブル6及び7
は、サーバアプリケーションが個別のプロセスとして実
行されるときに適用できるサーバアプリケーションのメ
ッセージポンプに対する変更を示している。更に、コー
ドテーブル8は、サーバアプリケーションが同じプロセ
ス内でコンテナーアプリケーションとして(オブジェク
トハンドラーとして)実行されるときに適用できるコン
テナーアプリケーションのメッセージポンプに対する変
更を示している。
コードテーブル6は、その位置でアクチベートされた
オブジェクトのメッセージポンプに対する変更の具現化
を示す。これらの変更は、サーバアプリケーションが、
コンテナーアプリケーションに、サーバアプリケーショ
ン(個別のプロセス)が到来メッセージを最終的に破棄
する前にアプリケーションアクセラレータを変換する機
会を与えることができるようにする。ライン2におい
て、サーバアプリケーションは、それ自身の変換テーブ
ル(変数hAccelに記憶された)を用いてアクセラレータ
を変換するよう試みる。ライン3において、変換すべき
アクセラレータがなかったか、又はサーバアプリケーシ
ョンの変換テーブルにアクセラレータが見つからなかっ
たことにより、この変換が首尾良くいかなかった場合に
は、サーバアプリケーションは、特殊なオブジェクトリ
ンク及び埋め込みAPIのファンクションObjectTranslate
Acceleratorを呼び出す。このファンクションObjectTra
nslateAcceleratorは、コンテナーアプリケーションに
よってアクセラレータが所望されるかどうか決定し、も
しそうならば、遠隔手順通話を介してコンテナーアプリ
ケーションにメッセージを送信し、アクセラレータを変
換するように要求する。遠隔手順通話メカニズムは、そ
の同期特性により、発呼者(サーバプロセス)が更に入
力を受け取る前にコンテナーアプリケーションがメッセ
ージを処理して復帰するよう確保する。ライン4ないし
5において、コンテナーアプリケーションがアクセラレ
ータを変換しなかった場合には、サーバアプリケーショ
ンが入力メッセージをその通常の形態で処理する(それ
をフィルタして発送する)。
コードテーブル7は、オブジェクトリンク及び埋め込
みAPIのファンクションObjectTtanslateAccleratorの具
現化を示している。このファンクションは、サーバアプ
リケーションがコンテナーアプリケーションにアクセラ
レータを処理する機会を与えることができるようにす
る。同期メッセージ処理に本来ある落とし穴(不定の待
機のような)を回避するために、ObjectTranslateAccel
eratorは、先ず、コンテナーアプリケーションのTransl
ateAccelerator方法を呼び出そうと試みる前にコンテナ
ーアプリケーションがアクセラレータに挿入されたかど
うか調べるチェックを行う。コンテナーアプリケーショ
ンのアクセラレータテーブルは、サーバアプリケーショ
ンによって通された指定のパラメータである。これは、
IOLEInPlaceParent::GetWindowContextに対する通話を
介してサーバアプリケーションにアクセスできる。コン
テナーアプリケーションのTranslateAccelerator方法が
呼び出された場合には、このファンクションは、コンテ
ナーアプリケーションにより返送された値をサーバアプ
リケーションへ戻し、従って、サーバアプリケーション
はメッセージを適切に破棄することができる。
コードテーブル8は、イン・プレート対話をサポート
するコンテナーアプリケーションのメッセージポンプの
典型的な具現化を示す。これらの変更は、コンテナーア
プリケーションが、サーバアプリケーション(コンテナ
ーアプリケーションと同じプロセス内で実行している)
に、コンテナーアプリケーションが到来メッセージを完
全に破棄する前にアプリケーションアクセラレータを変
換する機会を与えることができるようにする。ライン2
において、コードは、コンテナーアプリケーションの文
書ウインドウに関連した現在アクティブなオブジェクト
ウインドウバンドルを検索する。ライン4ないし8にお
いて、アクティブなオブジェクトウインドウハンドルが
ない場合には、コードは、そのオブジェクトウインドウ
ハンドルに対応するIOLEInPlaceObjectTranslateAccele
rator方法を呼び出して、サーバアプリケーションがア
クセラレータキー組合せを変換できるようにする。ライ
ン9ないし11において、サーバアプリケーションがアク
セラレータを変換しないか、又はアクティブなオブジェ
クトがない場合には、コンテナーアプリケーションは、
それ自身の変換テーブル(変数hAccelに記憶された)を
用いてアクセラレータを変換するよう試みる。ライン12
ないし13において、変換すべきアクセラレータが確認さ
れない場合には、コンテナーアプリケーションは、入力
メッセージを通常の形態で処理する(それをフィルタし
て発送する)。
以上、好ましい実施例について本発明を説明したが、
本発明は、この実施例に限定されるものではない。本発
明の精神内での変更が当業者に明らかであろう。本発明
の範囲は、以下の請求の範囲によって限定されるものと
する。
フロントページの続き (72)発明者 マッキチャン バリー ビー アメリカ合衆国 ワシントン州 98110 ベインブリッジ アイランド マンザ ニタ ロード ノースイースト 12730 (72)発明者 マックダニエル リチャード アメリカ合衆国 ペンシルバニア州 15206 ピッツバーグ スタントン ア ベニュー 6017 アパートメント 1 (72)発明者 レマラ ラオ ヴィー アメリカ合衆国 ワシントン州 98072 ウッディンヴィル ノースイースト ワンハンドレッドアンドフィフティファ ースト ストリート 19011 (72)発明者 ウィリアムズ アントニー エス アメリカ合衆国 ワシントン州 98053 レッドモンド ノースイースト フォ ーティシックスス ストリート 22542 (56)参考文献 特開 昭62−46365(JP,A) 特開 昭60−55472(JP,A) 特開 昭62−72059(JP,A) 特開 平1−126736(JP,A) 特開 平2−25969(JP,A) 特開 平1−234967(JP,A) Windowsアプリケーション間連 携機構OLE,NIKKEI BYTE 1992年2月号 P.239−252 Peter Wayner”BRAV E NEW DESKTOP”BYTE Vol.17,No.14 P.153−156

Claims (25)

    (57)【特許請求の範囲】
  1. 【請求項1】コンピュータシステムにおいて、コンテナ
    ーオブジェクト(301、401)内に含まれるコンテニーオ
    ブジェクト(305、405)をアクチベートさせる方法であ
    って、前記コンピューッタシステムは、コードをスケジ
    ュールしおよび実行するオペレーティングシステムを有
    し、前記コンテナーオブジェクトはコンテナーウィンド
    ウ環境(304、404)を伴うコンテナーアプリケーション
    コードを有し、前記コンテナーウィンドウ環境は前記コ
    ンテナーオブジェクトと対話するためのコンテナーリソ
    ース(302、303、402、403)を有し、前記コンテニーオ
    ブジェクトは該コンテニーオブジェクトと対話するため
    のサーバリソースを伴うサーバアプリケーションコード
    を有し、 前記コンテナーアプリケーションコードを実行するステ
    ップであって、前記コンテナーアプリケーションコード
    が前記オペレーティングシステムによって別々にスケジ
    ュールされるステップと、 前記コンテナーウィンドウ環境(304、404)を表示する
    ステップと、 当該表示されたコンテナーウィンドウ環境内で前記コン
    テニーオブジェクト(305、405)を表示するステップ
    と、 前記コンテニーオブジェクト(305、405)をアクチベー
    トさせるステップと を含み、前記表示されたコンテナーウィンドウ環境(40
    4)内で前記複数のサーバリソースを統合しおよび表示
    し、前記サーバリソースは前記サーバアプリケーション
    コードの一部であり、統合された前記サーバリソースの
    中からサーバリソースをユーザが選択するときに、別々
    にスケジュールされたエンティティとして、前記サーバ
    アプリケーションコードが前記サーバリソースの選択を
    実行しおよび処理するように、サーバアプリケーション
    コードが前記オペレーティングシステムによって別々に
    スケジュールされることを特徴とする方法。
  2. 【請求項2】前記コンテナーアプリケーションコード
    が、該コンテナーアプリケーションコードによって割り
    当てられ、および管理されるコンテナーメニュー(30
    3)を有し、前記サーバアプリケーションコードは、該
    サーバアプリケーションコードによって割り当てられお
    よび管理されるサーバメニューを有し、前記複数のサー
    バリソースを統合し、および表示するステップは、 複合メニューバー(403)を生成するステップと、 前記サーバメニューおよび前記コンテナーメニューを、
    生成された複合メニューバーに格納するステップと を含むことを特徴とする請求項1に記載の方法。
  3. 【請求項3】前記格納するステップが、前記複合メニュ
    ーバー(403)の中のサーバメニューおよびコンテナー
    メニューをインターリーブすることを特徴とする請求項
    2に記載の方法。
  4. 【請求項4】前記コンテナーウィンドウ環境は、複数の
    メニューを表示するメニューバーを有し、複合メニュー
    バーがコンテナーアプリケーションのメニューバーとし
    て表示されることを特徴とする請求項2に記載の方法。
  5. 【請求項5】統合された前記サーバリソースの中からの
    サーバリソースの選択に応答して、サーバリソース選択
    を処理するために、別々にスケジュールされたエンティ
    ティとして前記サーバアプリケーションコードを呼び出
    すステップと、 表示された前記コンテナーウィンドウ環境からのコンテ
    ナーリソースの選択に応答して、前記コンテナーアプリ
    ケーションコードを呼び出して、コンテナーリソース選
    択を処理するステップと をさらに含むことを特徴とする請求項1に記載の方法。
  6. 【請求項6】表示された前記コンテナーウィンドウ環境
    内でデータを表示するためのウィンドウを、前記コンテ
    ナーアプリケーションコードが有し、該コンテナーアプ
    リケーションコードと交渉して前記ウィンドウ内に前記
    サーバリソースを設置するステップを含むことを特徴と
    する請求項1に記載の方法。
  7. 【請求項7】表示すべきサーバリソースを知っている前
    記コンテナーアプリケーションコード無しで、前記コン
    テナーウィンドウ環境(304、404)内で前記複数のサー
    バリソースを統合しおよび表示するステップが、表示以
    前または表示時に実行されることを特徴とする請求項1
    に記載の方法。
  8. 【請求項8】前記コンテナーアプリケーションコードお
    よび前記サーバアプリケーションコードが、単一のコン
    ピュータプロセスにおいて別々のスレッドとして実行さ
    れることを特徴とする請求項1に記載の方法。
  9. 【請求項9】複数の前記サーバリソースの統合の後、前
    記コンテナーウィンドウ環境(304、404)内で前記コン
    テニーオブジェクトを表示するステップであって、前記
    コンテナーウィンドウ環境は、ハイライトすることで
    (406)、前記サーバリソースがユーザ選択のために利
    用可能であることを報知するステップをさらに含むこと
    を特徴とする請求項1に記載の方法。
  10. 【請求項10】前記コンテナーアプリケーションコード
    はメッセージを受け取りおよび処理するコンテナーメッ
    セージハンドラを有し、前記サーバアプリケーションコ
    ードはメッセージを受け取りおよび処理するサーバメッ
    セージハンドラを有し、前記コンテナーオブジェクトは
    メッセージを受け取りおよび処理するカレントメッセー
    ジハンドラを有し、該カレントメッセージハンドラは初
    期的に前記コンテナーメッセージハンドラにセットされ
    ており、前記複数のサーバリソースを統合しおよび表示
    するステップは、さらに、前記コンテナーオブジェクト
    のカレントメッセージハンドラを特殊メッセージハンド
    ラにセットするステップであって、前記コンテナーリソ
    ースが選択されたときに、前記特殊メッセージハンドラ
    がコンテナーリソース選択メッセージを前記コンテナー
    メッセージハンドラに送り、前記サーバリソースが選択
    されたときにサーバリソース選択メッセージを前記サー
    バメッセージハンドラに送るステップを含むことを特徴
    とする請求項1に記載の方法。
  11. 【請求項11】前記コンテナーウィンドウ環境はウィン
    ドウを有し、前記サーバアプリケーションコードは、ウ
    ィンドウを伴うサーバウィンドウ環境を有し、 ユーザ入力を受け付けるための入力フォーカスを有する
    サーバウィンドウ環境ウィンドウを指定するステップ
    と、 ユーザからメニューコマンドを受け付けるステップと、 該メニューコマンドの受け付けに応答して、ユーザ入力
    を受け付けるための入力フォーカスを有するコンテナー
    ウィンドウ環境ウィンドウを指定するステップと、 メニューニーモニックを受け付けるステップと、 該メニューニーモニックの受け付けに応答して、ユーザ
    入力を受け付けるための入力フォーカスを有するサーバ
    ウィンド環境ウィンドウを再指定するステップと を含むことを特徴とする請求項1に記載の方法。
  12. 【請求項12】前記コンテナーウィンドウ環境ウィンド
    ウがフレームウィンドウであることを特徴とする請求項
    11に記載の方法。
  13. 【請求項13】前記コンピュータシステムはキーを入力
    するためのキーボードを有し、前記コンテナーアプリケ
    ーションコードは前記コンテナーリソースを選択するた
    めの複数のアクセラレータキーの組合せを有し、前記サ
    ーバアプリケーションコードはサーバリソースを選択す
    るための複数のアクセラレータキーの組合せを有し、さ
    らに、前記コンテナーアプリケーションコードがアクセ
    ラレータキーの組合せを受け付けたときに、別々にスケ
    ジュールされたサーバアプリケーションコードを呼び出
    して前記サーバリソースを選択するか否かを決定するス
    テップを含むことを特徴とする請求項1に記載の方法。
  14. 【請求項14】前記コンテニーオブジェクトをアクチベ
    ートさせるステップは、さらに、前記コンテニーオブジ
    ェクトを選択するステップと、 前記コンテニーオブジェクト上で実行すべきオペレーシ
    ョンを特定するステップと を含むことを特徴とする請求項1に記載の方法。
  15. 【請求項15】コンテナーオブジェクト(301、401)内
    に含まれるコンテニーオブジェクト(305、405)をアク
    チベートさせるコンピュータシステムであって、該コン
    ピュータシステムは、コードをスケジュールしおよび実
    行するオペレーティングシステムを有し、前記コンテナ
    ーオブジェクトはコンテナーウィンドウ環境(304、40
    4)を伴うコンテナーアプリケーションコードを有し、
    前記コンテナーウィンドウ環境はコンテナーオブジェク
    トと対話するためのコンテナーリソース(302、303、40
    2、403)を有し、前記コンテニーオブジェクトは該コン
    テニーオブジェクトと対話するためのサーバリソースを
    有するサーバアプリケーションコードを有し、 前記コンテナーウィンドウ環境(304、404)を表示する
    手段と、 表示された前記コンテナーウィンドウ環境(304、404)
    内で前記コンテニーオブジェクトを表示する手段と、 表示された前記コンテナーウィンドウ環境内で前記コン
    テニーオブジェクト(305、405)をアクチベートさせる
    手段と、 前記表示されたコンテナーウィンドウ環境(404)内で
    複数の前記サーバリソースを統合しおよび表示する手段
    と、 統合されおよび表示された前記サーバリソースの中から
    サーバリソースが選択されたときに、別々にスケジュー
    ルされたエンティティとしてサーバアプリケーションを
    実行し、サーバリソース選択を処理するための手段と 前記コンテナーアプリケーションコードと前記サーバア
    プリケーションコードとの間で通信をする手段と を含むことを特徴とするコンピュータシステム。
  16. 【請求項16】前記コンテナーアプリケーションコード
    は、該コンテナーアプリケーションコードによって割り
    当てられおよび管理されるコンテナー手段(303)を有
    し、前記サーバアプリケーションコードは、該サーバア
    プリケーションコードによって割り当てられおよび管理
    されるサーバメニューを有し、前記統合しおよび表示す
    る手段は複合メニューバー(403)を生成しおよび複合
    メニューバー内にサーバメニューおよびコンテナーメニ
    ューを格納するための手段を含むことを特徴とする請求
    項15に記載のコンピュータシステム。
  17. 【請求項17】前記生成しおよび格納するための手段
    が、複合メニューバー(403)のサーバメニューおよび
    コンテナーメニューをインターリーブするための手段を
    含むことを特徴とする請求項16に記載のコンピュータシ
    ステム。
  18. 【請求項18】前記コンテナーウィンドウ環境は、複数
    のメニューを表示するメニューバーを有し、複合メニュ
    ーバーが、前記コンテナーウィンドウ環境のメニューバ
    ーとして表示されることを特徴とする請求項15に記載の
    コンピュータシステム。
  19. 【請求項19】表示された前記コンテナーウィンドウ環
    境から前記コンテナーリソースが選択されたときに、前
    記コンテナープリケーションコードを実行して前記コン
    テナーリソースの選択を処理する手段をさらに含むこと
    を特徴とする請求項15に記載のコンピュータシステム。
  20. 【請求項20】前記コンテナーアプリケーションコード
    は、前記コンテナーウィンドウ環境内でデータを表示す
    るためのウィンドウ(304)を有し、前記統合しおよび
    表示する手段は、前記コンテナーアプリケーションコー
    ドと交渉して前記サーバリソースをウィンドウ内に設置
    する手段を含むことを特徴とする請求項15に記載のコン
    ピュータシステム。
  21. 【請求項21】前記コンテナーウィンドウ環境内で複数
    のサーバリソースを統合しおよび表示する手段による処
    理が、表示すべきサーバリソースを知っている前記コン
    テナーアプリケーションコード無しで、表示以前または
    表示時に、実行されることを特徴とする請求項15に記載
    のコンピュータシステム。
  22. 【請求項22】前記コンテナーアプリケーションコード
    および前記サーバアプリケーションコードが、単一のコ
    ンピュータプロセスにおいて別々のスレッドとして実行
    されることを特徴とする請求項15に記載のコンピュータ
    システム。
  23. 【請求項23】前記サーバリソースがユーザ選択に利用
    可能であることをハイライトすることで(406)報知す
    る前記コンテナーウィンドウ環境内で、前記コンテニー
    オブジェクトを表示する手段をさらに含むことを特徴と
    する請求項15に記載のコンピュータシステム。
  24. 【請求項24】前記コンピュータシステムはキーを入力
    するためのキーボードを含み、前記コンテナーアプリケ
    ーションコードは、コンテナーリソースを選択するため
    の複数のアクセラレータキーの組合せを有し、1つのア
    クセラレータキーの組合せを受け取ったときに、別々に
    実行されたエンティティとして前記サーバアプリケーシ
    ョンコードを呼び出して前記サーバリソースを選択する
    か否かを決定する手段を含むことを特徴とする請求項15
    に記載のコンピュータシステム。
  25. 【請求項25】前記アクチベートさせるための手段が、
    前記コンテニーオブジェクトを選択し、および前記コン
    テニーオブジェクトに対して実行すべきオペレーション
    を特定することを特徴とする請求項15に記載のコンピュ
    ータシステム。
JP51420694A 1992-12-01 1993-11-24 埋め込まれたオブジェクトとイン・プレース対話するための方法及びシステム Expired - Lifetime JP3181592B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US98486892A 1992-12-01 1992-12-01
US984,868 1992-12-01
US07/984,868 1992-12-01
PCT/US1993/011468 WO1994014115A2 (en) 1992-12-01 1993-11-24 A method and system for in-place interaction with embedded objects

Publications (2)

Publication Number Publication Date
JPH08500200A JPH08500200A (ja) 1996-01-09
JP3181592B2 true JP3181592B2 (ja) 2001-07-03

Family

ID=25530955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51420694A Expired - Lifetime JP3181592B2 (ja) 1992-12-01 1993-11-24 埋め込まれたオブジェクトとイン・プレース対話するための方法及びシステム

Country Status (5)

Country Link
US (5) US5613058A (ja)
EP (2) EP0672277B1 (ja)
JP (1) JP3181592B2 (ja)
DE (1) DE69318571T2 (ja)
WO (1) WO1994014115A2 (ja)

Families Citing this family (391)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5416895A (en) * 1992-04-08 1995-05-16 Borland International, Inc. System and methods for improved spreadsheet interface with user-familiar objects
US5506983A (en) * 1992-07-06 1996-04-09 Microsoft Corporation Method and system for transactioning of modifications to a tree structured file
US8073695B1 (en) 1992-12-09 2011-12-06 Adrea, LLC Electronic book with voice emulation features
US7298851B1 (en) 1992-12-09 2007-11-20 Discovery Communications, Inc. Electronic book security and copyright protection system
ATE183352T1 (de) 1992-12-09 1999-08-15 Discovery Communicat Inc Verbessertes aufsatz-endgerat fur kabelfernsehverteilsysteme
US7509270B1 (en) 1992-12-09 2009-03-24 Discovery Communications, Inc. Electronic Book having electronic commerce features
US7849393B1 (en) 1992-12-09 2010-12-07 Discovery Communications, Inc. Electronic book connection to world watch live
US7835989B1 (en) 1992-12-09 2010-11-16 Discovery Communications, Inc. Electronic book alternative delivery systems
WO1994027229A1 (en) * 1993-05-10 1994-11-24 Apple Computer, Inc. Computer-human interface system which manipulates parts between a desktop and a document
US6877137B1 (en) * 1998-04-09 2005-04-05 Rose Blush Software Llc System, method and computer program product for mediating notes and note sub-notes linked or otherwise associated with stored or networked web pages
US5806079A (en) * 1993-11-19 1998-09-08 Smartpatents, Inc. System, method, and computer program product for using intelligent notes to organize, link, and manipulate disparate data objects
US5991751A (en) * 1997-06-02 1999-11-23 Smartpatents, Inc. System, method, and computer program product for patent-centric and group-oriented data processing
US5623681A (en) * 1993-11-19 1997-04-22 Waverley Holdings, Inc. Method and apparatus for synchronizing, displaying and manipulating text and image documents
US6963920B1 (en) 1993-11-19 2005-11-08 Rose Blush Software Llc Intellectual asset protocol for defining data exchange rules and formats for universal intellectual asset documents, and systems, methods, and computer program products related to same
US5799325A (en) * 1993-11-19 1998-08-25 Smartpatents, Inc. System, method, and computer program product for generating equivalent text files
US5623679A (en) * 1993-11-19 1997-04-22 Waverley Holdings, Inc. System and method for creating and manipulating notes each containing multiple sub-notes, and linking the sub-notes to portions of data objects
US5696963A (en) * 1993-11-19 1997-12-09 Waverley Holdings, Inc. System, method and computer program product for searching through an individual document and a group of documents
US6339767B1 (en) 1997-06-02 2002-01-15 Aurigin Systems, Inc. Using hyperbolic trees to visualize data generated by patent-centric and group-oriented data processing
US9053640B1 (en) 1993-12-02 2015-06-09 Adrea, LLC Interactive electronic book
US8095949B1 (en) 1993-12-02 2012-01-10 Adrea, LLC Electronic book with restricted access features
US7865567B1 (en) 1993-12-02 2011-01-04 Discovery Patent Holdings, Llc Virtual on-demand electronic book
US7861166B1 (en) * 1993-12-02 2010-12-28 Discovery Patent Holding, Llc Resizing document pages to fit available hardware screens
US5664133A (en) * 1993-12-13 1997-09-02 Microsoft Corporation Context sensitive menu system/menu behavior
US6151610A (en) * 1993-12-27 2000-11-21 Digital Equipment Corporation Document display system using a scripting language having container variables setting document attributes
US6813769B1 (en) 1997-10-28 2004-11-02 Microsoft Corporation Server application components with control over state duration
US6708196B1 (en) 1994-04-15 2004-03-16 Microsoft Corporation Method and system for caching presentation data
US5608909A (en) 1994-04-15 1997-03-04 Microsoft Corporation Method and system for caching presentation data of a source object in a presentation cache
JP3777196B2 (ja) * 1994-05-10 2006-05-24 富士通株式会社 クライアント/サーバシステム用の通信制御装置
US5831609A (en) * 1994-06-17 1998-11-03 Exodus Technologies, Inc. Method and system for dynamic translation between different graphical user interface systems
US5848429A (en) * 1994-08-23 1998-12-08 Object Technology Licensing Corporation Object-oriented global cursor tool which operates in an incompatible document by embedding a compatible frame in the document
US5838906A (en) 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
US5862372A (en) * 1994-11-16 1999-01-19 Morris; Robert M. Visually oriented computer implemented application development system utilizing standardized objects and multiple views
US5666492A (en) * 1995-01-17 1997-09-09 Glaxo Wellcome Inc. Flexible computer based pharmaceutical care cognitive services management system and method
US5995090A (en) * 1995-01-31 1999-11-30 Canon Kabushiki Kaisha Filing apparatus
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7133846B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
WO1996027155A2 (en) 1995-02-13 1996-09-06 Electronic Publishing Resources, Inc. Systems and methods for secure transaction management and electronic rights protection
US5781189A (en) * 1995-05-05 1998-07-14 Apple Computer, Inc. Embedding internet browser/buttons within components of a network component system
US6212575B1 (en) * 1995-05-05 2001-04-03 Apple Computer, Inc. Extensible, replaceable network component system
US5802531A (en) * 1995-05-08 1998-09-01 Apple Computer, Inc. Method and system for embedding parts of documents and synchronizing multiple views thereof
US5740455A (en) * 1995-05-16 1998-04-14 Apple Computer, Inc. Enhanced compound document processing architectures and methods therefor
JPH096582A (ja) * 1995-06-20 1997-01-10 Fujitsu Ltd アプリケーション・グルーピング方法及び装置
US5742845A (en) 1995-06-22 1998-04-21 Datascape, Inc. System for extending present open network communication protocols to communicate with non-standard I/O devices directly coupled to an open network
US6577746B1 (en) * 1999-12-28 2003-06-10 Digimarc Corporation Watermark-based object linking and embedding
US6067086A (en) * 1995-08-08 2000-05-23 Walsh; Aaron E. Uniform mnemonic associations of computer resources to graphical images
US5867161A (en) * 1995-08-08 1999-02-02 Walsh; Aaron E. Uniform mnemonic associations of computer resources to graphical images
GB9516977D0 (en) * 1995-08-17 1995-10-18 Dreamware Design & Dev Ltd Processing apparatus and method and computer software therefor
US5873106A (en) * 1995-09-18 1999-02-16 Oracle Corporation Geometry management for displaying objects on a computer
US5745115A (en) * 1996-01-16 1998-04-28 International Business Machines Corporation Graphical user interface having a shared menu bar for opened applications
JPH09244844A (ja) * 1996-03-05 1997-09-19 Fujitsu Ltd 情報提示システム及び記録媒体
US5706458A (en) * 1996-03-05 1998-01-06 Microsoft Corporation Method and system for merging menus of application programs
US6446135B1 (en) * 1996-03-05 2002-09-03 Microsoft Corporation Method and system for querying and executing commands of an application program
US6115039A (en) * 1996-03-15 2000-09-05 Novell, Inc. Processes and apparatuses for creating non-native displays on a computer
US5778378A (en) * 1996-04-30 1998-07-07 International Business Machines Corporation Object oriented information retrieval framework mechanism
US5870088A (en) * 1996-05-09 1999-02-09 National Instruments Corporation System and method for editing a control via direct graphical user interaction
US6515682B1 (en) 1996-05-09 2003-02-04 National Instruments Corporation System and method for editing a control utilizing a preview window to view changes made to the control
US6542166B1 (en) 1996-05-09 2003-04-01 National Instruments Corporation System and method for editing a control
US6122649A (en) * 1996-05-30 2000-09-19 Microsoft Corporation Method and system for user defined and linked properties
US5946696A (en) * 1996-05-31 1999-08-31 Microsoft Corporation Object property lists
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US5987245A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5825358A (en) * 1996-10-04 1998-10-20 Honeywell, Inc. Process and system for forming multiple preemptive modeless dialog boxes
US5819256A (en) * 1996-11-20 1998-10-06 Oracle Corporation Method and apparatus for processing count statements in a database system
US6401099B1 (en) 1996-12-06 2002-06-04 Microsoft Corporation Asynchronous binding of named objects
US6460058B2 (en) * 1996-12-06 2002-10-01 Microsoft Corporation Object-oriented framework for hyperlink navigation
JPH10171701A (ja) * 1996-12-10 1998-06-26 Fuji Xerox Co Ltd 手続実行装置及び方法
US7062500B1 (en) * 1997-02-25 2006-06-13 Intertrust Technologies Corp. Techniques for defining, using and manipulating rights management data structures
US6334157B1 (en) * 1997-03-11 2001-12-25 Microsoft Corporation Programmatically providing direct access to user interface elements of an application program
US6097391A (en) * 1997-03-31 2000-08-01 Menai Corporation Method and apparatus for graphically manipulating objects
US6061696A (en) * 1997-04-28 2000-05-09 Computer Associates Think, Inc. Generating multimedia documents
US6026417A (en) * 1997-05-02 2000-02-15 Microsoft Corporation Desktop publishing software for automatically changing the layout of content-filled documents
US5991765A (en) * 1997-05-06 1999-11-23 Birdstep Technology As System and method for storing and manipulating data in an information handling system
US6677960B1 (en) 1997-05-07 2004-01-13 Unisys Corporation User assistance for heterogeneous data processing systems
US6667747B1 (en) 1997-05-07 2003-12-23 Unisys Corporation Method and apparatus for providing a hyperlink within a computer program that access information outside of the computer program
US6065116A (en) * 1997-05-07 2000-05-16 Unisys Corporation Method and apparatus for configuring a distributed application program
US5917485A (en) * 1997-05-07 1999-06-29 Unisys Corporation User assistance for data processing systems
US9098297B2 (en) * 1997-05-08 2015-08-04 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US6330659B1 (en) * 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
WO1998050852A1 (en) * 1997-05-08 1998-11-12 Iready Corporation Hardware accelerator for an object-oriented programming language
US6594689B1 (en) 1997-05-08 2003-07-15 Unisys Corporation Multi-platform helper utilities
US6326970B1 (en) 1997-05-16 2001-12-04 Liberate Technologies TV centric layout
JP3788543B2 (ja) * 1997-05-20 2006-06-21 富士通株式会社 会議支援システム及び記録媒体
US6384849B1 (en) 1997-07-14 2002-05-07 Microsoft Corporation Method for displaying controls in a system using a graphical user interface
US5905991A (en) * 1997-08-21 1999-05-18 Reynolds; Mark L System and method providing navigation between documents by creating associations based on bridges between combinations of document elements and software
US6070175A (en) * 1997-08-26 2000-05-30 The United States As Represented By The Director The National Security Agency Method of file editing using framemaker enhanced by application programming interface clients
GB2329042B (en) * 1997-09-03 2002-08-21 Ibm Presentation of help information via a computer system user interface in response to user interaction
US6047293A (en) * 1997-09-16 2000-04-04 Teradyne, Inc. System for storing and searching named device parameter data in a test system for testing an integrated circuit
US6094657A (en) * 1997-10-01 2000-07-25 International Business Machines Corporation Apparatus and method for dynamic meta-tagging of compound documents
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6134594A (en) 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US5958004A (en) 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
US6631425B1 (en) * 1997-10-28 2003-10-07 Microsoft Corporation Just-in-time activation and as-soon-as-possible deactivation or server application components
US6587121B1 (en) 1997-12-19 2003-07-01 Unisys Corporation Graphical table of contents for a help system
US20020065951A1 (en) 1997-12-23 2002-05-30 Victor Girardi Ole automation server for manipulation of mail piece data
US6072486A (en) * 1998-01-13 2000-06-06 Microsoft Corporation System and method for creating and customizing a deskbar
US6819345B1 (en) * 1998-02-17 2004-11-16 Microsoft Corporation Managing position and size for a desktop component
US6067087A (en) * 1998-03-03 2000-05-23 Microsoft Corporation Method for building menus during idle times
US6297823B1 (en) * 1998-04-03 2001-10-02 Lucent Technologies Inc. Method and apparatus providing insertion of inlays in an application user interface
US6182095B1 (en) * 1998-04-30 2001-01-30 General Electric Capital Corporation Document generator
US6233582B1 (en) * 1998-05-14 2001-05-15 Sun Microsystems, Inc. Persistent storage interface for a configuration object-based system
US6473100B1 (en) * 1998-05-20 2002-10-29 Microsoft Corporation Hosting controls in a window via an interface for controlling the window
US6526416B1 (en) 1998-06-30 2003-02-25 Microsoft Corporation Compensating resource managers
US6442620B1 (en) 1998-08-17 2002-08-27 Microsoft Corporation Environment extensibility and automatic services for component applications using contexts, policies and activators
US6425017B1 (en) 1998-08-17 2002-07-23 Microsoft Corporation Queued method invocations on distributed component applications
US7155662B1 (en) * 1998-08-31 2006-12-26 Xerox Corporation Representing an entity as a document using a data source having active properties
US20050131992A1 (en) * 2003-12-11 2005-06-16 Eric Goldstein System, method and apparatus for selecting, displaying, managing, tracking and transferring access to content of web pages and other sources
US6810522B2 (en) * 1998-10-07 2004-10-26 Invensys Systems, Inc. Method and system for associating parameters of containers and contained objects
US6407759B1 (en) * 1998-11-30 2002-06-18 Sun Microsystems, Inc. Method and apparatus for modal dialog box management in applets on information appliances
US7328405B1 (en) * 1998-12-09 2008-02-05 Netscape Communications Corporation Smart browsing providers
US6549878B1 (en) * 1998-12-31 2003-04-15 Microsoft Corporation System and method for editing a spreadsheet via an improved editing and cell selection model
US6536033B1 (en) * 1999-01-28 2003-03-18 International Business Machines Corp. Uniform mechanism for building containment hierarchies
US6748455B1 (en) 1999-02-23 2004-06-08 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events with filtering
US6829770B1 (en) 1999-02-23 2004-12-07 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
US7716060B2 (en) 1999-03-02 2010-05-11 Germeraad Paul B Patent-related tools and methodology for use in the merger and acquisition process
US7966328B2 (en) 1999-03-02 2011-06-21 Rose Blush Software Llc Patent-related tools and methodology for use in research and development projects
US6499040B1 (en) * 1999-03-05 2002-12-24 Dassault Systemes Document and task coordination system for a computer
US6765592B1 (en) * 1999-04-30 2004-07-20 Microsoft Corporation Undockable sub-windows
US7249328B1 (en) * 1999-05-21 2007-07-24 E-Numerate Solutions, Inc. Tree view for reusable data markup language
US7650355B1 (en) 1999-05-21 2010-01-19 E-Numerate Solutions, Inc. Reusable macro markup language
US9262383B2 (en) 1999-05-21 2016-02-16 E-Numerate Solutions, Inc. System, method, and computer program product for processing a markup document
US9268748B2 (en) 1999-05-21 2016-02-23 E-Numerate Solutions, Inc. System, method, and computer program product for outputting markup language documents
US9262384B2 (en) 1999-05-21 2016-02-16 E-Numerate Solutions, Inc. Markup language system, method, and computer program product
AU3712300A (en) 1999-06-11 2001-01-02 Liberate Technologies Hierarchical open security information delegation and acquisition
US6662237B1 (en) * 1999-06-24 2003-12-09 Contivo, Inc. System for documenting application interfaces and their mapping relationship
US6581054B1 (en) 1999-07-30 2003-06-17 Computer Associates Think, Inc. Dynamic query model and method
US7644366B1 (en) * 1999-07-30 2010-01-05 Computer Associates Think, Inc. Method and system for displaying a plurality of discrete files in a compound file
US6842758B1 (en) 1999-07-30 2005-01-11 Computer Associates Think, Inc. Modular method and system for performing database queries
US6880126B1 (en) 1999-08-03 2005-04-12 International Business Machines Corporation Controlling presentation of a GUI, using view controllers created by an application mediator, by identifying a destination to access a target to retrieve data
WO2001013583A2 (en) 1999-08-16 2001-02-22 Iready Corporation Internet jack
US6748555B1 (en) 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
ATE390788T1 (de) * 1999-10-14 2008-04-15 Bluearc Uk Ltd Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
US6862686B1 (en) 1999-10-29 2005-03-01 International Business Machines Corporation Method and apparatus in a data processing system for the separation of role-based permissions specification from its corresponding implementation of its semantic behavior
US7181686B1 (en) 1999-10-29 2007-02-20 International Business Machines Corporation Selecting screens in a GUI using events generated by a set of view controllers
US6920636B1 (en) * 1999-12-15 2005-07-19 Microsoft Corporation Queued component interface passing for results outflow from queued method invocations
US8037193B2 (en) * 1999-12-24 2011-10-11 Telstra Corporation Limited Virtual token
CA2301822A1 (fr) * 2000-03-24 2001-09-24 9071 9410 Quebec Inc. Projection simultanee de plusieurs patrons avec acquisition simultanee pour l'inspection d'objets en trois dimensions
FR2809203B1 (fr) * 2000-05-18 2003-10-03 Cit Alcatel Procede de gestion d'une interface homme-machine graphique
US6341292B1 (en) 2000-05-30 2002-01-22 Outlooksoft Corporation Spreadsheet-based network information exchange with two-part cache
US6754677B1 (en) * 2000-05-30 2004-06-22 Outlooksoft Corporation Method and system for facilitating information exchange
US7788602B2 (en) * 2000-06-06 2010-08-31 Microsoft Corporation Method and system for providing restricted actions for recognized semantic categories
US7712024B2 (en) 2000-06-06 2010-05-04 Microsoft Corporation Application program interfaces for semantically labeling strings and providing actions based on semantically labeled strings
US7421645B2 (en) 2000-06-06 2008-09-02 Microsoft Corporation Method and system for providing electronic commerce actions based on semantically labeled strings
US7770102B1 (en) 2000-06-06 2010-08-03 Microsoft Corporation Method and system for semantically labeling strings and providing actions based on semantically labeled strings
US7716163B2 (en) 2000-06-06 2010-05-11 Microsoft Corporation Method and system for defining semantic categories and actions
AU2001274549A1 (en) * 2000-06-19 2002-01-02 Brother Kogyo Kabushiki Kaisha Data processing device, data processing method, and storage medium
US7624356B1 (en) 2000-06-21 2009-11-24 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US7346848B1 (en) 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US6883168B1 (en) 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
AU2001264895A1 (en) 2000-06-21 2002-01-02 Microsoft Corporation System and method for integrating spreadsheets and word processing tables
US6948135B1 (en) 2000-06-21 2005-09-20 Microsoft Corporation Method and systems of providing information to computer users
US6874143B1 (en) 2000-06-21 2005-03-29 Microsoft Corporation Architectures for and methods of providing network-based software extensions
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7191394B1 (en) 2000-06-21 2007-03-13 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US7117435B1 (en) 2000-06-21 2006-10-03 Microsoft Corporation Spreadsheet fields in text
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
US6684220B1 (en) * 2000-09-20 2004-01-27 Lockheed Martin Corporation Method and system for automatic information exchange
US7797276B1 (en) * 2000-10-02 2010-09-14 Guang Yang Integrated database data editing system
US6993528B1 (en) * 2000-10-04 2006-01-31 Microsoft Corporation Methods and systems for allowing third party client applications to influence implementation of high-level document commands
US20020052770A1 (en) * 2000-10-31 2002-05-02 Podrazhansky Mikhail Yury System architecture for scheduling and product management
US6697192B1 (en) 2000-11-08 2004-02-24 Massachusetts Institute Of Technology High power, spectrally combined laser systems and related methods
US7039717B2 (en) 2000-11-10 2006-05-02 Nvidia Corporation Internet modem streaming socket method
US7305465B2 (en) * 2000-11-15 2007-12-04 Robert Wing Collecting appliance problem information over network and providing remote technical support to deliver appliance fix information to an end user
US20040236843A1 (en) * 2001-11-15 2004-11-25 Robert Wing Online diagnosing of computer hardware and software
US9600842B2 (en) 2001-01-24 2017-03-21 E-Numerate Solutions, Inc. RDX enhancement of system and method for implementing reusable data markup language (RDL)
US7379475B2 (en) 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
US7493568B2 (en) * 2001-01-26 2009-02-17 Microsoft Corporation System and method for browsing properties of an electronic document
WO2002067102A1 (fr) * 2001-02-22 2002-08-29 Fujitsu Limited Processeur de données, logique de commande de l'affichage du processeur de données, support d'enregistrement, et logiciel
US6828988B2 (en) * 2001-02-27 2004-12-07 Microsoft Corporation Interactive tooltip
US7302634B2 (en) 2001-03-14 2007-11-27 Microsoft Corporation Schema-based services for identity-based data access
US20020133535A1 (en) * 2001-03-14 2002-09-19 Microsoft Corporation Identity-centric data access
US7539747B2 (en) * 2001-03-14 2009-05-26 Microsoft Corporation Schema-based context service
US7024662B2 (en) * 2001-03-14 2006-04-04 Microsoft Corporation Executing dynamically assigned functions while providing services
GB0107766D0 (en) * 2001-03-28 2001-05-16 Hewlett Packard Co Improvements relating to developing documents
US7778816B2 (en) 2001-04-24 2010-08-17 Microsoft Corporation Method and system for applying input mode bias
US6791747B2 (en) * 2001-04-25 2004-09-14 Massachusetts Institute Of Technology Multichannel laser transmitter suitable for wavelength-division multiplexing applications
WO2002086739A1 (en) * 2001-04-25 2002-10-31 Amplify, Llc. System, method and apparatus for selecting, displaying, managing, tracking and transferring access to content of web pages and other sources
US7216290B2 (en) * 2001-04-25 2007-05-08 Amplify, Llc System, method and apparatus for selecting, displaying, managing, tracking and transferring access to content of web pages and other sources
US6944829B2 (en) * 2001-09-25 2005-09-13 Wind River Systems, Inc. Configurable user-interface component management system
US6724399B1 (en) * 2001-09-28 2004-04-20 Siebel Systems, Inc. Methods and apparatus for enabling keyboard accelerators in applications implemented via a browser
US6907451B1 (en) 2001-09-29 2005-06-14 Siebel Systems, Inc. Method, apparatus, and system for immediate posting of changes in a client server environment
US8359335B2 (en) * 2001-09-29 2013-01-22 Siebel Systems, Inc. Computing system and method to implicitly commit unsaved data for a world wide web application
US7885996B2 (en) 2001-09-29 2011-02-08 Siebel Systems, Inc. Method, apparatus, and system for implementing notifications in a framework to support web-based applications
US7146617B2 (en) 2001-09-29 2006-12-05 Siebel Systems, Inc. Method, apparatus, and system for implementing view caching in a framework to support web-based applications
US7203948B2 (en) 2001-09-29 2007-04-10 Siebel Systems, Inc. Method, apparatus, and system for implementing caching of view custom options in a framework to support web-based applications
US7461119B2 (en) * 2001-09-29 2008-12-02 Siebel Systems, Inc. Method, apparatus, and system for managing status of requests in a client server environment
US7870492B2 (en) * 2001-10-02 2011-01-11 Siebel Systems, Inc. Method, apparatus, and system for managing commands in a client server environment
US7322013B1 (en) * 2001-10-25 2008-01-22 Adobe Systems Incorporated Launch and edit user interface improvements
CN1591411A (zh) * 2001-11-09 2005-03-09 无锡永中科技有限公司 数据处理系统
DE10157633A1 (de) * 2001-11-26 2003-08-28 Siemens Ag Medizinische Systemarchitektur mit einer komponentenorientierten Architektur zur Befundung und Dokumentation
US6976244B2 (en) * 2002-01-09 2005-12-13 International Business Machines Corporation Method, system, and product for storage of attribute data in an object oriented environment
US6909910B2 (en) 2002-02-01 2005-06-21 Microsoft Corporation Method and system for managing changes to a contact database
EP1333387A1 (en) * 2002-02-05 2003-08-06 Siemens Aktiengesellschaft A method of data refreshing of a mark-up language document
CA2372778A1 (en) * 2002-02-22 2003-08-22 Corel Corporation System and method for managing access to information on a network
US7689899B2 (en) 2002-03-06 2010-03-30 Ge Corporate Financial Services, Inc. Methods and systems for generating documents
US7325194B2 (en) 2002-05-07 2008-01-29 Microsoft Corporation Method, system, and apparatus for converting numbers between measurement systems based upon semantically labeled strings
US7707496B1 (en) 2002-05-09 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting dates between calendars and languages based upon semantically labeled strings
US7707024B2 (en) 2002-05-23 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting currency values based upon semantically labeled strings
US7742048B1 (en) 2002-05-23 2010-06-22 Microsoft Corporation Method, system, and apparatus for converting numbers based upon semantically labeled strings
US20030225839A1 (en) * 2002-06-04 2003-12-04 Dragan Kopunovic Knowledge router
US7281245B2 (en) * 2002-06-05 2007-10-09 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US7827546B1 (en) 2002-06-05 2010-11-02 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US6968509B1 (en) * 2002-06-05 2005-11-22 Microsoft Corporation Recording of user-driven events within a computer application
US7356537B2 (en) * 2002-06-06 2008-04-08 Microsoft Corporation Providing contextually sensitive tools and help content in computer-generated documents
US7698636B2 (en) * 2002-06-13 2010-04-13 Microsoft Corporation System and method for in-context editing of components
US7716676B2 (en) 2002-06-25 2010-05-11 Microsoft Corporation System and method for issuing a message to a program
US7392479B2 (en) 2002-06-27 2008-06-24 Microsoft Corporation System and method for providing namespace related information
US7209915B1 (en) 2002-06-28 2007-04-24 Microsoft Corporation Method, system and apparatus for routing a query to one or more providers
US9886309B2 (en) 2002-06-28 2018-02-06 Microsoft Technology Licensing, Llc Identity-based distributed computing for device resources
US6867786B2 (en) * 2002-07-29 2005-03-15 Microsoft Corp. In-situ digital inking for applications
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
JP4001014B2 (ja) * 2002-12-25 2007-10-31 日本電気株式会社 携帯電話機
US7783614B2 (en) 2003-02-13 2010-08-24 Microsoft Corporation Linking elements of a document to corresponding fields, queries and/or procedures in a database
US7415672B1 (en) 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US7370066B1 (en) 2003-03-24 2008-05-06 Microsoft Corporation System and method for offline editing of data files
US7275216B2 (en) 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
US7296017B2 (en) 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US7516145B2 (en) 2003-03-31 2009-04-07 Microsoft Corporation System and method for incrementally transforming and rendering hierarchical data files
US7711550B1 (en) 2003-04-29 2010-05-04 Microsoft Corporation Methods and system for recognizing names in a computer-generated document and for providing helpful actions associated with recognized names
US7558841B2 (en) 2003-05-14 2009-07-07 Microsoft Corporation Method, system, and computer-readable medium for communicating results to a data query in a computer network
US7168035B1 (en) 2003-06-11 2007-01-23 Microsoft Corporation Building a view on markup language data through a set of components
US7739588B2 (en) * 2003-06-27 2010-06-15 Microsoft Corporation Leveraging markup language data for semantically labeling text strings and data and for providing actions based on semantically labeled text strings and data
US7451392B1 (en) 2003-06-30 2008-11-11 Microsoft Corporation Rendering an HTML electronic form by applying XSLT to XML using a solution
US7197515B2 (en) 2003-06-30 2007-03-27 Microsoft Corporation Declarative solution definition
US7406660B1 (en) 2003-08-01 2008-07-29 Microsoft Corporation Mapping between structured data and a visual surface
US7581177B1 (en) 2003-08-01 2009-08-25 Microsoft Corporation Conversion of structured documents
US7334187B1 (en) 2003-08-06 2008-02-19 Microsoft Corporation Electronic form aggregation
DE10348708A1 (de) * 2003-10-16 2005-05-12 Saurer Gmbh & Co Kg Verfahren zum Gestalten von Effekten in Effektgarnen
JP4476594B2 (ja) * 2003-10-17 2010-06-09 淳二 城戸 有機エレクトロルミネッセント素子
US7644376B2 (en) 2003-10-23 2010-01-05 Microsoft Corporation Flexible architecture for notifying applications of state changes
US20050091594A1 (en) * 2003-10-23 2005-04-28 Microsoft Corporation Systems and methods for preparing graphical elements for presentation
US7266726B1 (en) 2003-11-24 2007-09-04 Time Warner Cable Inc. Methods and apparatus for event logging in an information network
US8302111B2 (en) 2003-11-24 2012-10-30 Time Warner Cable Inc. Methods and apparatus for hardware registration in a network device
US7178102B1 (en) 2003-12-09 2007-02-13 Microsoft Corporation Representing latent data in an extensible markup language document
US7404195B1 (en) 2003-12-09 2008-07-22 Microsoft Corporation Programmable object model for extensible markup language markup in an application
US7434157B2 (en) 2003-12-09 2008-10-07 Microsoft Corporation Programmable object model for namespace or schema library support in a software application
US7487515B1 (en) 2003-12-09 2009-02-03 Microsoft Corporation Programmable object model for extensible markup language schema validation
US7260631B1 (en) 2003-12-19 2007-08-21 Nvidia Corporation System and method for receiving iSCSI protocol data units
US8176545B1 (en) 2003-12-19 2012-05-08 Nvidia Corporation Integrated policy checking system and method
US7624198B1 (en) 2003-12-19 2009-11-24 Nvidia Corporation Sequence tagging system and method for transport offload engine data lists
US7899913B2 (en) 2003-12-19 2011-03-01 Nvidia Corporation Connection management system and method for a transport offload engine
US8549170B2 (en) 2003-12-19 2013-10-01 Nvidia Corporation Retransmission system and method for a transport offload engine
US8065439B1 (en) 2003-12-19 2011-11-22 Nvidia Corporation System and method for using metadata in the context of a transport offload engine
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US9213538B1 (en) 2004-02-06 2015-12-15 Time Warner Cable Enterprises Llc Methods and apparatus for display element management in an information network
US7412665B2 (en) * 2004-02-13 2008-08-12 Microsoft Corporation Menu management in an OLE document environment
US7430711B2 (en) 2004-02-17 2008-09-30 Microsoft Corporation Systems and methods for editing XML documents
US7509573B1 (en) 2004-02-17 2009-03-24 Microsoft Corporation Anti-virus security information in an extensible markup language document
US7318063B2 (en) 2004-02-19 2008-01-08 Microsoft Corporation Managing XML documents containing hierarchical database information
US7249306B2 (en) 2004-02-20 2007-07-24 Nvidia Corporation System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity
US7206872B2 (en) 2004-02-20 2007-04-17 Nvidia Corporation System and method for insertion of markers into a data stream
US7698413B1 (en) 2004-04-12 2010-04-13 Nvidia Corporation Method and apparatus for accessing and maintaining socket control information for high speed network connections
US20050235293A1 (en) * 2004-04-14 2005-10-20 Microsoft Corporation Methods and systems for framework layout editing operations
US7278092B2 (en) * 2004-04-28 2007-10-02 Amplify, Llc System, method and apparatus for selecting, displaying, managing, tracking and transferring access to content of web pages and other sources
US7496837B1 (en) 2004-04-29 2009-02-24 Microsoft Corporation Structural editing with schema awareness
US7568101B1 (en) 2004-05-13 2009-07-28 Microsoft Corporation Digital signatures with an embedded view
US7281018B1 (en) 2004-05-26 2007-10-09 Microsoft Corporation Form template data source change
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US20060059471A1 (en) * 2004-09-15 2006-03-16 Microsoft Corporation Calling non-public types
US7752601B1 (en) * 2004-09-20 2010-07-06 The Mathworks, Inc. Runtime component hosting
US7516399B2 (en) 2004-09-30 2009-04-07 Microsoft Corporation Structured-document path-language expression methods and systems
US7692636B2 (en) 2004-09-30 2010-04-06 Microsoft Corporation Systems and methods for handwriting to a screen
US7126557B2 (en) * 2004-10-01 2006-10-24 Southwest Research Institute Tapered area small helix antenna
US7957379B2 (en) 2004-10-19 2011-06-07 Nvidia Corporation System and method for processing RX packets in high speed network applications using an RX FIFO buffer
US7653637B2 (en) * 2004-10-20 2010-01-26 Microsoft Corporation Indirect persistent storage for plugin in container
US8487879B2 (en) 2004-10-29 2013-07-16 Microsoft Corporation Systems and methods for interacting with a computer through handwriting to a screen
US20060098673A1 (en) * 2004-11-09 2006-05-11 Alcatel Input queue packet switch architecture and queue service discipline
US7712022B2 (en) 2004-11-15 2010-05-04 Microsoft Corporation Mutually exclusive options in electronic forms
US7584417B2 (en) 2004-11-15 2009-09-01 Microsoft Corporation Role-dependent action for an electronic form
US7721190B2 (en) 2004-11-16 2010-05-18 Microsoft Corporation Methods and systems for server side form processing
US7509353B2 (en) 2004-11-16 2009-03-24 Microsoft Corporation Methods and systems for exchanging and rendering forms
US7904801B2 (en) 2004-12-15 2011-03-08 Microsoft Corporation Recursive sections in electronic forms
US7437376B2 (en) 2004-12-20 2008-10-14 Microsoft Corporation Scalable object model
US7818755B1 (en) * 2004-12-22 2010-10-19 Apple Inc. Window server event taps
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US7725834B2 (en) 2005-03-04 2010-05-25 Microsoft Corporation Designer-created aspect for an electronic form template
US7673228B2 (en) 2005-03-30 2010-03-02 Microsoft Corporation Data-driven actions for network forms
US20060230335A1 (en) * 2005-04-08 2006-10-12 Ilja Fischer Linking user interface frames
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US20080115073A1 (en) * 2005-05-26 2008-05-15 ERICKSON Shawn Method and Apparatus for Remote Display of Drawn Content
US7543228B2 (en) 2005-06-27 2009-06-02 Microsoft Corporation Template for rendering an electronic form
US8200975B2 (en) 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US7613996B2 (en) 2005-08-15 2009-11-03 Microsoft Corporation Enabling selection of an inferred schema part
US7562287B1 (en) 2005-08-17 2009-07-14 Clipmarks Llc System, method and apparatus for selecting, displaying, managing, tracking and transferring access to content of web pages and other sources
US7360166B1 (en) 2005-08-17 2008-04-15 Clipmarks Llc System, method and apparatus for selecting, displaying, managing, tracking and transferring access to content of web pages and other sources
US20110145689A1 (en) * 2005-09-09 2011-06-16 Microsoft Corporation Named object view over multiple files
US20070061699A1 (en) * 2005-09-09 2007-03-15 Microsoft Corporation Named object view of electronic data report
US8176410B1 (en) * 2005-09-13 2012-05-08 Adobe Systems Incorporated System and/or method for content cropping
US8468441B2 (en) * 2005-09-15 2013-06-18 Microsoft Corporation Cross-application support of charts
US8578277B2 (en) * 2005-09-15 2013-11-05 Microsoft Corporation Integrating charts in documents
US7788590B2 (en) 2005-09-26 2010-08-31 Microsoft Corporation Lightweight reference user interface
US7992085B2 (en) 2005-09-26 2011-08-02 Microsoft Corporation Lightweight reference user interface
US8001459B2 (en) 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US7730109B2 (en) * 2005-12-12 2010-06-01 Google, Inc. Message catalogs for remote modules
US20070204010A1 (en) * 2005-12-12 2007-08-30 Steven Goldberg Remote Module Syndication System and Method
US20070136201A1 (en) * 2005-12-12 2007-06-14 Google Inc. Customized container document modules using preferences
US7730082B2 (en) * 2005-12-12 2010-06-01 Google Inc. Remote module incorporation into a container document
US8185819B2 (en) 2005-12-12 2012-05-22 Google Inc. Module specification for a module to be incorporated into a container document
US7725530B2 (en) * 2005-12-12 2010-05-25 Google Inc. Proxy server collection of data for module incorporation into a container document
US20070192363A1 (en) * 2005-12-19 2007-08-16 Microsoft Corporation Document-centric application environment
US8560948B2 (en) * 2005-12-23 2013-10-15 Michael Hu User support system integrating FAQ and helpdesk features and FAQ maintenance capabilities
US7487465B2 (en) * 2006-01-06 2009-02-03 International Business Machines Corporation Application clippings
US7779343B2 (en) 2006-01-30 2010-08-17 Microsoft Corporation Opening network-enabled electronic documents
JP5007510B2 (ja) * 2006-02-13 2012-08-22 コニカミノルタビジネステクノロジーズ株式会社 文書処理装置および文書処理システム
US20070300154A1 (en) * 2006-06-23 2007-12-27 Bartlett Frederick H OLE simulator for chemical drawing programs
US20080011819A1 (en) * 2006-07-11 2008-01-17 Microsoft Corporation Microsoft Patent Group Verification of hit testing
US8185830B2 (en) 2006-08-07 2012-05-22 Google Inc. Configuring a content document for users and user groups
US20090006996A1 (en) * 2006-08-07 2009-01-01 Shoumen Saha Updating Content Within A Container Document For User Groups
US8407250B2 (en) 2006-08-07 2013-03-26 Google Inc. Distribution of content document to varying users with security customization and scalability
US8954861B1 (en) 2006-08-07 2015-02-10 Google Inc. Administrator configurable gadget directory for personalized start pages
US8694953B2 (en) * 2006-08-14 2014-04-08 Payman Khodabandehloo Tool and methodology for enterprise software applications
US9201854B1 (en) 2006-10-25 2015-12-01 Hewlett-Packard Development Company, L.P. Methods and systems for creating, interacting with, and utilizing a superactive document
US20080126368A1 (en) * 2006-11-24 2008-05-29 Microsoft Corporation Document Glossaries For Linking To Resources
US20080195468A1 (en) * 2006-12-11 2008-08-14 Dale Malik Rule-Based Contiguous Selection and Insertion of Advertising
US20080195938A1 (en) * 2006-12-14 2008-08-14 Steven Tischer Media Content Alteration
US20080195458A1 (en) * 2006-12-15 2008-08-14 Thomas Anschutz Dynamic Selection and Incorporation of Advertisements
US10318624B1 (en) 2006-12-28 2019-06-11 Apple Inc. Infinite canvas
US9390059B1 (en) * 2006-12-28 2016-07-12 Apple Inc. Multiple object types on a canvas
DE502007004382D1 (de) * 2007-01-09 2010-08-26 Siemens Ag Verfahren zur Fehlersuche in einem Automatisierungsgerät
US20080172597A1 (en) * 2007-01-16 2008-07-17 Siemens Medical Solutions Usa, Inc. Data Field Referencing Text Processing System
WO2008092079A2 (en) * 2007-01-25 2008-07-31 Clipmarks Llc System, method and apparatus for selecting content from web sources and posting content to web logs
US8539473B2 (en) * 2007-01-30 2013-09-17 Microsoft Corporation Techniques for providing information regarding software components for a user-defined context
US20080244442A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Techniques to share information between application programs
US8803881B2 (en) * 2007-09-26 2014-08-12 Autodesk, Inc. Navigation system for a 3D virtual scene
US20090172576A1 (en) * 2007-12-28 2009-07-02 Nixon Cheaz Method and System for Enabling and Disabling Features of a Computer Application Using a Preview Mode Within a Graphical User Interface
US7912867B2 (en) * 2008-02-25 2011-03-22 United Parcel Services Of America, Inc. Systems and methods of profiling data for integration
US9588781B2 (en) * 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US8826174B2 (en) * 2008-06-27 2014-09-02 Microsoft Corporation Using visual landmarks to organize diagrams
EP2300937B1 (en) * 2008-07-11 2019-08-21 Thomson Reuters Global Resources Unlimited Company System and method for web-based control of desktop
US8706622B2 (en) * 2008-08-05 2014-04-22 Visa U.S.A. Inc. Account holder demand account update
US9081471B2 (en) * 2008-09-19 2015-07-14 Oracle International Corporation Providing modal window views for widgets on web pages
US9448815B2 (en) 2009-04-15 2016-09-20 Wyse Technology L.L.C. Server-side computing from a remote client device
US9413831B2 (en) * 2009-04-15 2016-08-09 Wyse Technology L.L.C. Method and apparatus for authentication of a remote session
US9189124B2 (en) 2009-04-15 2015-11-17 Wyse Technology L.L.C. Custom pointer features for touch-screen on remote client devices
US20100325565A1 (en) * 2009-06-17 2010-12-23 EchoStar Technologies, L.L.C. Apparatus and methods for generating graphical interfaces
US10002035B2 (en) * 2009-08-21 2018-06-19 International Business Machines Corporation Visual selection and rendering of multiple clip board formats
US8743408B2 (en) * 2009-09-11 2014-06-03 Global Graphics Software Limited Selecting a binder file displayed on a GUI for storage of documents
US8990725B2 (en) 2009-09-11 2015-03-24 Global Graphics Software Limited System and method for processes enabled by metadata associated with documents within a binder file
US20110066932A1 (en) * 2009-09-11 2011-03-17 Global Graphics Software Limited System and method for providing a representation of hierarchical structures of documents
US9021507B2 (en) 2009-12-29 2015-04-28 International Business Machines Corporation Dynamic use of data across multiple programs
US20110296376A1 (en) * 2010-05-26 2011-12-01 Sybase, Inc. Dynamically Injecting Behaviors Into Flex View Components
US9747270B2 (en) 2011-01-07 2017-08-29 Microsoft Technology Licensing, Llc Natural input for spreadsheet actions
JP5445483B2 (ja) 2011-02-07 2014-03-19 ブラザー工業株式会社 画像処理プログラム
US8756494B2 (en) * 2011-02-15 2014-06-17 Adobe Systems Incorporated Methods and systems for designing documents with inline scrollable elements
US9430583B1 (en) 2011-06-10 2016-08-30 Salesforce.Com, Inc. Extracting a portion of a document, such as a web page
EP2745214A2 (en) * 2011-08-19 2014-06-25 Apple Inc. Authoring content for digital books
US10956485B2 (en) 2011-08-31 2021-03-23 Google Llc Retargeting in a search environment
US10630751B2 (en) 2016-12-30 2020-04-21 Google Llc Sequence dependent data message consolidation in a voice activated computer network environment
US8650188B1 (en) 2011-08-31 2014-02-11 Google Inc. Retargeting in a search environment
US8756500B2 (en) * 2011-09-20 2014-06-17 Microsoft Corporation Dynamic content feed filtering
US9053083B2 (en) 2011-11-04 2015-06-09 Microsoft Technology Licensing, Llc Interaction between web gadgets and spreadsheets
US9171099B2 (en) 2012-01-26 2015-10-27 Microsoft Technology Licensing, Llc System and method for providing calculation web services for online documents
US9753926B2 (en) 2012-04-30 2017-09-05 Salesforce.Com, Inc. Extracting a portion of a document, such as a web page
US9075895B2 (en) 2012-06-14 2015-07-07 Ntrepid Corporation Case data visualization application
US9767110B2 (en) 2012-06-14 2017-09-19 Ntrepid Corporation Case data visualization application
US8887134B2 (en) 2012-11-06 2014-11-11 Rockwell Automation Technologies, Inc. Customized object design for industrial automation application
US9135000B2 (en) 2012-11-06 2015-09-15 Rockwell Automation Technologies, Inc. Runtime process diagnostics
US9563861B2 (en) 2012-11-06 2017-02-07 Rockwell Automation Technologies, Inc. Integration of workflow and library modules
US9355193B2 (en) * 2012-11-06 2016-05-31 Rockwell Automation Technologies, Inc. Object design data model
US9031975B2 (en) 2012-11-06 2015-05-12 Rockwell Automation Technologies, Inc. Content management
US8898634B2 (en) 2012-11-06 2014-11-25 Rockwell Automation Technologies, Inc. Customized object design for industrial automation application
WO2014127465A1 (en) * 2013-02-25 2014-08-28 Summit-Tech Multimedia Communications Inc. Underlying message method and system
US10664652B2 (en) 2013-06-15 2020-05-26 Microsoft Technology Licensing, Llc Seamless grid and canvas integration in a spreadsheet application
US10431209B2 (en) 2016-12-30 2019-10-01 Google Llc Feedback controller for data transmissions
US10614153B2 (en) 2013-09-30 2020-04-07 Google Llc Resource size-based content item selection
US9703757B2 (en) 2013-09-30 2017-07-11 Google Inc. Automatically determining a size for a content item for a web page
US10078411B2 (en) 2014-04-02 2018-09-18 Microsoft Technology Licensing, Llc Organization mode support mechanisms
US10073720B2 (en) * 2015-07-30 2018-09-11 Airwatch, Llc Restricted application visibility
CN107506115A (zh) 2016-06-14 2017-12-22 阿里巴巴集团控股有限公司 一种菜单的显示处理方法、装置及系统
US11449469B2 (en) * 2017-10-09 2022-09-20 Box, Inc. Embedded content object collaboration
US10908780B2 (en) * 2017-11-30 2021-02-02 Panasonic Intellectual Property Management Co, Ltd. Image output device, method of controlling image output device, and television
US11716558B2 (en) 2018-04-16 2023-08-01 Charter Communications Operating, Llc Apparatus and methods for integrated high-capacity data and wireless network services
EP3864917A4 (en) 2018-10-12 2022-07-06 Charter Communications Operating, LLC APPARATUS AND METHODS FOR IDENTIFYING CELLS IN WIRELESS NETWORKS
US11129171B2 (en) 2019-02-27 2021-09-21 Charter Communications Operating, Llc Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
US11026205B2 (en) 2019-10-23 2021-06-01 Charter Communications Operating, Llc Methods and apparatus for device registration in a quasi-licensed wireless system
US11704138B2 (en) * 2020-05-11 2023-07-18 Delta Media Group, Inc. Method and system for calling/executing an action from an outside application within an existing open application
US11605187B1 (en) * 2020-08-18 2023-03-14 Corel Corporation Drawing function identification in graphics applications

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6055472A (ja) * 1983-09-06 1985-03-30 Canon Inc 文書処理方法
JPS6246365A (ja) * 1985-08-24 1987-02-28 Hitachi Ltd 文書処理装置
US4815029A (en) * 1985-09-23 1989-03-21 International Business Machines Corp. In-line dynamic editor for mixed object documents
AU607795B2 (en) * 1987-08-21 1991-03-14 Eastman Kodak Company Data integration by object management
US5079695A (en) * 1988-04-25 1992-01-07 Hewlett-Packard Company Object management facility which includes a snapshot facility for providing data transfer between two objects

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Peter Wayner"BRAVE NEW DESKTOP"BYTE Vol.17,No.14 P.153−156
Windowsアプリケーション間連携機構OLE,NIKKEI BYTE 1992年2月号 P.239−252

Also Published As

Publication number Publication date
EP0672277B1 (en) 1998-05-13
DE69318571D1 (de) 1998-06-18
US5581686A (en) 1996-12-03
EP0820008A2 (en) 1998-01-21
JPH08500200A (ja) 1996-01-09
EP0672277A1 (en) 1995-09-20
US5801701A (en) 1998-09-01
DE69318571T2 (de) 1998-09-17
WO1994014115A2 (en) 1994-06-23
WO1994014115A3 (en) 1994-09-29
US5634019A (en) 1997-05-27
US5754175A (en) 1998-05-19
US5613058A (en) 1997-03-18
EP0820008A3 (en) 2006-05-24

Similar Documents

Publication Publication Date Title
JP3181592B2 (ja) 埋め込まれたオブジェクトとイン・プレース対話するための方法及びシステム
US5706458A (en) Method and system for merging menus of application programs
US5627960A (en) Unified hierarchical and tear off menus in a graphical event-driven computer system
JP3613401B2 (ja) オブジェクトの名称を付けて結び付ける方法及びシステム
US6144377A (en) Providing access to user interface elements of legacy application programs
US5689664A (en) Interface sharing between objects
US5640579A (en) Method and system for logically partitioning a view of a document object from a frame in which the document object is displayed
US5862395A (en) Customizable user interfaces for programmed computer systems
US5692157A (en) Method and system for transferring data between objects using registered data formats
USRE38270E1 (en) Multiple level undo/redo mechanism
EP0851345B1 (en) Method and system for automatic persistence of controls in a windowing environment
US20040230911A1 (en) System and method for controlling user interface properties with data
EP0798655A2 (en) Internet-enabled graphical user interface with toolbar icons having built-in links to world-wide web documents and an integrated web browser
US20030071860A1 (en) System and method for managing graphical components
US20050188350A1 (en) Data binding
US20060090139A1 (en) Collection view objects for displaying data collection items in user interface elements
EP0622729A2 (en) A user interface builder for a user interface server
JPH08137646A (ja) ダイアログ・ボックスの表示方法及びシステム
JPH10105410A (ja) インターネット−イネーブル型ポートフォリオ・マネージャ・システム及び方法
US6360280B1 (en) Method and system for accessing shell folder capabilities by an application program
US6654947B1 (en) Method and system for creating dynamic interfaces using a general control container
US5832266A (en) Encapsulation of applications for inclusion within an object management facility environment
WO2004107200A1 (en) System and method for controlling user interface properties with data
Plateau et al. Building user interfaces with the LOOKS hyper-object system
CA1340917C (en) Encapsulation of applications for inclusion within an object management facility environment

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090420

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090420

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100420

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110420

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120420

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120420

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130420

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130420

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140420

Year of fee payment: 13

EXPY Cancellation because of completion of term