(57)【特許請求の範囲】
【請求項１】
情報を記憶するためのレジストリを有するコンピュータシステムにおいて、ユーザインタフェースに表示されるプロパティページのエディットコントロール内にユーザによって入力された情報を持続性をもって記憶する方法であって、
（A）リソースファイル内に前記プロパティページのためのコントロールを定義する処理であって、当該コントロールが、
(1)前記ユーザによって前記ユーザインタフェース内で編集可能なように指定されるエディットコントロールと、
(2)(i)前記リソースファイルにおいて前記エディットコントロールに隣接し、
(ii)前記ユーザインタフェース内では不可視に指定され、
(iii)前記レジストリ内のキーを特定するテキストを有した分身(buddy)コントロールとを含む、前記コントロール定義のための処理と、
（B）   (1)前記リソースファイルにおいて、前記分身コントロールが、前記エディットコントロールに隣接し且つ前記ユーザインタフェースで不可視に指定されることを検出し、
(2)前記分身コントロールから前記レジストリ内のキーを特定するテキストを検索し、
(3)前記検索されたテキストにより特定されたキーを用いて、前記レジストリから情報を検索し、
(4)前記エディットコントロールを前記検索された情報で初期設定し、
(5)前記ユーザインタフェースを介して受信されたユーザ入力に応答して、前記エディットコントロールの情報を修正し、
(6)前記検索されたテキストにより特定されたキーを用いて、前記エディットコントロールの修正された情報を前記レジストリに記憶することによって前記プロパティページを表示する処理と、を含み、
前記リソースファイルで前記エディットコントロールが隣接の分身コントロールを有することを前記検出処理が示すとき、前記エディットコントロールに関する情報が前記レジストリに持続的に記憶されるようにすることを特徴とする方法。
【請求項２】
エディットボックス及びリストボックスを有するコンボボックスコントロールに関するアイテムのリストを特定するためのコンピュータシステムにおける方法であって、
ウィンドウ内での表示のためにリソースファイルでコントロールを定義する処理であって、当該コントロールが、
(1)前記ユーザによって前記ウィンドウ内で編集可能なように指定されたコンボボックスコントロールと、
(2)(i)前記リソースファイルにおいて前記コンボボックスコントロールに隣接し、
(ii)前記ウィンドウ内では不可視に指定され、
(iii)前記リストボックスに表示されるべきアイテムリストを特定するテキストを有した、分身(buddy)コントロールと、を含む前記コントロール定義のための処理と、
前記リソースファイルにおいて、前記分身コントロールが、前記コンボボックスコントロールに隣接し且つ前記ウィンドウで不可視に指定されることを検出する処理と、
前記分身コントロールから前記リストボックスに表示されるべきアイテムリストを特定するテキストを検索する処理と、
前記リストボックスが表示されるという指示を受信する処理と、
前記指示の受信に呼応して、前記検索されたテキストを前記リストボックスのアイテムリストとして表示する処理と、を含み、
前記コンボボックスコントロールが前記リソースファイルで隣接した分身コントロールを有することを前記検出処理が示すとき、前記アイテムリストが前記リストボックスに表示されることを特徴とする方法。
【請求項３】
前記検索されたテキストを表示後、アイテムリストを特定する分身コントロールに関するテキストを修正し、修正後のアイテムリスト内で表示されるようにする処理を更に含む、請求項２に記載の方法。
【請求項４】
前記リストボックスに表示されたアイテムのうちの１つを選択するユーザ入力を受信する処理と、
前記コンボボックスコントロールが後に表示されるとき、前記エディットボックスを前記選択されたアイテムで初期設定されるように、前記選択されたアイテムの指示を持続的に記憶する処理とを含み、
前記リソースファイルで定義され、且つ当該リソースファイル内で前記コンボボックスコントロールに関連する分身コントロールにより特定されるキーを用いて、前記選択されたアイテムの指示がレジストリに記憶されることを特徴とする請求項２に記載の方法。
【請求項５】
リソースファイルで定義されたウィンドウにおけるコントロールのコンテンツの表示を変更するためのコンピュータシステムにおける方法であって、
前記ウィンドウ内の各コントロールに関して、
前記分身コントロールが分身コントロール情報を有し、且つ前記ウィンドウが表示されるときは可視的な顕示性を有さない分身コントロールが前記コントロールに関連しているかどうか判断する処理であって、前記分身コントロールが前記リソースファイルにおいて前記コントロールに隣接しているように特定される場合は、前記コントロールに関連するものとして決定される前記判断処理と、
前記コントロールが前記分身コントロールに関連するとき、前記分身コントロール情報を検索する処理と、
前記分身コントロール情報を検索後、前記検索された分身コントロール情報を前記コントロールの部分として表示する処理と、
前記検索された分身コントロール情報を表示後、前記コントロールが後に表示されるとき、前記修正された分身コントロール情報が表示されるように、前記分身コントロール情報を修正することによって前記分身コントロールの定義を修正する処理を含む方法。
【請求項６】
コンピュータプログラムが検索された分身コントロール情報の表示を制御し、且つ前記修正された分身コントロール情報はコンピュータプログラムを修正することなく表示される、請求項５に記載の方法。
【請求項７】
ウィンドウの可視的コントロールに関する制御値を選択的且つ持続的に記憶するためのコンピュータシステムにおける方法であって、
(1)可視的コントロール及び不可視的情報コントロールを含む前記ウィンドウのコントロールを記述するリソース情報が定義される処理と、
(2)前記定義されたリソース情報に従って前記ウィンドウを表示する処理と、
(3)各可視的コントロールに関して、
(i)前記可視的コントロールが、前記リソース情報内に定義された関連の不可視的情報コントロールを有するかどうか判断する処理であって、その不可視的情報コントロールは、前記リソース情報内において前記関連の可視的コントロールに隣接して定義される分身コントロールである当該処理と、
(ii)前記可視的コントロールが関連の不可視的情報コントロールを有するときだけ、前記可視的コントロールの制御値を持続性記憶装置に持続的に記憶する処理とを含む方法。
【請求項８】
前記不可視的情報コントロールが、前記制御値を持続的に記憶するときに使用するキーを含んでいることを特徴とする、請求項７に記載の方法。
【請求項９】
前記不可視的情報コントロールは、前記ウィンドウが表示されているとき、可視的な顕示性を有さない、請求項７に記載の方法。
【請求項１０】
ウィンドウの可視的コントロールに関する制御値を持続的に記憶するためのコンピュータシステムにおける方法であって、
(1)前記ウィンドウの可視的コントロール及び不可視的情報コントロールを含むコントロールを記述するリソース情報を定義する処理と、各可視的コントロールが、キーを有する対応の不可視的情報コントロールに関連付けられており、
(2)前記定義されたリソース情報に従って前記ウィンドウを表示する処理と、
(3)前記リソース情報内に定義された各可視的コントロールに関して、
(i)前記対応の不可視的情報コントロールからのキーを前記リソース情報から検索する処理であって、その不可視的情報コントロールは、前記リソース情報内で前記関連の可視的コントロールに隣接して定義されている分身コントロールである当該処理と、
(ii)前記検索されたキーを使用して、前記可視的コントロールの制御値を前記持続性記憶装置に持続的に記憶する処理と、を含む方法。
【請求項１１】
前記不可視的情報コントロールは、前記ウィンドウが表示されているときに、可視的な顕示性を持たない、請求項１０に記載の方法。
【請求項１２】
キーを使用してレジストリに記憶されたウィンドウの可視的コントロールに関する制御値を表示するためのコンピュータシステムにおける方法であって、
(1)前記ウィンドウの可視的コントロール及び不可視的情報コントロールを含むコントロールを記述するリソース情報がデータとして定義される処理であって、各可視的コントロールがキーを含む対応の不可視的情報コントロールに関連し、
(2)前記リソース情報内に定義された各可視的コントロールに関して、
(i)対応の不可視的情報コントロールからのキーを前記リソース情報から検索する処理であって、その不可視的情報コントロールは、前記リソース情報において前記関連の可視的コントロールに隣接して定義されている分身コントロールである当該処理と、
(ii)前記キーを検索後、前記検索されたキーを使用して、持続的に記憶された前記可視的コントロールの制御値を持続性記憶装置から検索する処理と、
(3)前記持続的に記憶された各可視的コントロールのための制御値を検索後、前記定義されたリソース情報に従って前記ウィンドウを表示する処理とを含む方法。
【請求項１３】
前記不可視的情報コントロールは、前記ウィンドウが表示されているときに、可視的な顕示性を持たない、請求項１２に記載の方法。
【請求項１４】
ウィンドウの可視的コントロールに関する制御値を選択的且つ持続的に記憶するコンピュータシステムであって、
可視的コントロール及び不可視的情報コントロールを含む前記ウィンドウの各コントロール定義を含むリソースファイルと、
前記リソースファイル内のコントロール定義に従って前記ウィンドウを表示する手段と、
前記可視的コントロールに関する制御値をユーザから受け取る手段と、
各可視的コントロールが、前記リソースファイルでの定義とともに、関連する不可視的情報コントロールを有するかどうか判断する手段であって、その不可視的情報コントロールは、前記関連の可視的コントロールに隣接して定義される分身コントロールである当該手段と、
その可視的コントロールが関連する不可視的情報コントロールを有するときだけ、可視的コントロールのためにユーザから受け取ったコントロールに関する制御値を持続性記憶装置に持続的に記憶する手段と、を有するコンピュータシステム。
【請求項１５】
前記不可視的情報コントロールは、前記制御値を持続的に記憶するときに使用するキーを含んでいることを特徴とする、請求項１４に記載のコンピュータシステム。
【請求項１６】
前記不可視的情報コントロールは、前記ウィンドウが表示されているとき、可視的な顕示性を有さない、請求項１４に記載のコンピュータシステム。
【請求項１７】
ウィンドウの可視的コントロールに関する制御値を持続的に記憶するため、コンピュータシステムに、
可視的コントロール及び不可視的情報コントロールをもつウィンドウ・コントロールの定義を含むリソースファイルを受信する手順であって、前記各可視的コントロールがキーを有する対応の不可視的情報コントロールに関連付けられている前記手順と、
前記受信されたリソースファイルに従って前記ウィンドウを表示する手順と、そして、
前記リソース情報に定義された各可視的コントロールに関して、
前記対応の不可視的情報コントロールからのキーを前記リソースファイルから検索する手順であって、その不可視的情報コントロールが、前記リソースファイル内において前記関連の可視的コントロールに隣接して定義された分身コントロールである当該手順と、
前記検索されたキーを使用して、前記可視的コントロールの制御値を持続性記憶装置に持続的に記憶する手順と、を実行させるための指令を含んだコンピュータ読取り可能な記録媒体。
【請求項１８】
前記不可視的情報コントロールは、前記ウィンドウが表示されているとき、可視的な顕示性を有さない、請求項１７に記載のコンピュータ読取り可能な記録媒体。
【請求項１９】
キーを使用してレジストリに記憶され且つウィンドウの可視的コントロールに関する制御値を表示するため、コンピュータシステムに、
可視的コントロール及び不可視的情報コントロールを含む前記ウィンドウのコントロールを記述するリソース情報を受信する手順であって、各可視的コントロールがキーを有する対応の不可視的情報コントロールに関連付けられている前記手順と、
前記リソース情報内で定義された各可視的コントロールに関して、
前記対応の不可視的情報コントロールからのキーを前記リソース情報から検索する手順であって、その不可視的情報コントロールが前記リソースファイル内において前記関連の可視的コントロールに隣接して定義された分身コントロールである当該手順と、
前記キーを検索後、前記検索されたキーを使用して、持続的に記憶された前記可視的コントロールの制御値を持続性記憶装置から検索する手順と、
前記持続的に記憶された各可視的コントロールのための制御値を検索後、前記定義されたリソース情報に従って前記ウィンドウを表示する手順と、を実行させるための指令を含んだコンピュータ読取り可能な記録媒体。
【請求項２０】
前記不可視的情報コントロールは、前記ウィンドウが表示されているとき、可視的な顕示性を有さない、請求項１９に記載のコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的に、データをストアするためのコンピュータシステムに関し、特に、ウィンドウのコントロールのデータを持続的にストアするためのシステムに関する。
【０００２】
【従来の技術】
多くのコンピュータシステムは、ユーザがコンピュータプログラムとインターフェースすることができるウィンドウベースユーザインターフェースを備える。ウィンドウは、コンピュータプログラムがその出力を表示する表示装置の領域であり、典型的には矩形である。ウィンドウは、コンピュータプログラムがデータを表示することができる種々の異なるタイプの「フィールド」を包含し得る。例えば、あるフィールドでは、コンピュータプログラムはユーザによって見られるべきラベルを表示することができ、別のフィールドでは、コンピュータプログラムはユーザによってキーボードで入力されたキャラクタをエコーすることができる。これらのフィールドの各々は、典型的には、それらが含まれているウィンドウの子ウィンドウとして実施される。これらの子ウィンドウはまた「コントロール」として知られている。
【０００３】
図１ａはコントロールを含むウィンドウを図示する。このウィンドウはドキュメントのプロパティに関する情報を含むので、プロパティシートとして知られている。プロパティは、ドキュメントのようなオブジェクトの所定の特徴を特定する。例えば、キャラクタのプロパティがフォント及び色を含み得るのに対して、ドキュメントのプロパティは、作成者の名前及び作成日付を含み得る。プロパティシート１０１は、general １０２、summary １０３、statistics１０４、contents１０５及びcustom１０６という５つのプロパティページを含む。各プロパティページはプロパティシートの子ウィンドウであり、プロパティページの子ウィンドウである種々のコントロールを含む。例えば、customプロパティページはコンボボックス１０７、エディットボックス１０８、チェックボックス１０９を含む。
【０００４】
Microsoft Corporation によるWindows （登録商標）のような所定のウィンドウ環境は、プログラマが、ウィンドウ及びコントロールを使用するプログラムを生成するのを助けるための種々のツールを提供する。特に、customプロパティページのようなプロパティページを作成するために、プログラマはプロパティページのレイアウト及び特徴を定義するためにリソースエディタを使用する。これらの特徴は、コンピュータプログラムによって開かれ且つ使用されるリソースファイルにストアされる。表１はcustomプロパティページに対応するリソースファイルの引用を含む。リソースファイルのこの部分は、コンボボックス１０７、エディットボックス１０８、チェックボックス１０９及びそれらの関連するラベルの定義を含む。各ラインはコントロールの定義を含む。ライン１は、コンボボックス１０７の左のラベル「Type: 」に対応し、コントロールがテキストコントロール（即ち、「LTEXT 」）であり、且つ、コントロールが静的で特定の位置に配置されることを示す。各ラインに「[location]」として表示されている配置は、customプロパティページ内のコントロールの配置の左上座標と右下座標を示す。コンボボックス１０７に対応するライン２は、コントロールがコンボボックス（即ち、「ＣＯＭＢＯＢＯＸ」）であり、且つ、コンボボックスに関する一意的な識別子（即ち、「ＩＤＣ＿ＣＯＭＢＯ１」）を含む。ライン２はまた、コンボボックスがドロップダウンリストを有していることを示し、ユーザがコントロールを介して指定したとき、タブはこのコンボボックスで止まることを示す。ライン３は、ラベル「Value:」に対応し、コントロールがテキストコントロールであり且つ静的であることを示す。ライン４は、エディットボックス１０８に対応し、コントロールがエディットボックス（即ち、「EDITTEXT」）であることを示し、コントロールに関する一意的な識別子を含む。ライン４はまた、コントロールが水平方向にスクロールし、タブがこのコントロールで止まることを示す。ライン５は、チェックボックス１０８に対応し、コントロールがコントロール（即ち、「CONTROL 」）であることを示し、コントロールに関する一意的な識別子を含む。ライン５はまた、コントロールに関するラベル（即ち、「Link To Content 」を含み、コントロールがチェックボックスであることを示し、且つ、タブがこのコントロールで止まることを示す。
【０００５】
【表１】
0004053637.tif 000002
【０００６】
コントロールを表示するコンピュータプログラムを修正する必要なしに、コントロールの配列及び内容についてなされるべき種々の変更をリソースファイルの使用によってさせることができる。例えば、種々のボックスのラベルに対応するコントロールは、リソースファイルを単に修正することによって変更することができる。次いで、コンピュータプログラムは（再コンパイルされないが）再構築され得る。この次、再構築されたコンピュータプログラムが実行され、該プログラムは修正を伴ってリソースファイルを開け、修正されたコントロールを表示する。
図１ｂ乃至１ｄは、種々のタイプのコントロールの操作を図示する。図１ｂはコンボボックスの操作を図示する。コンボボックス１０７はエディットボックス１０７ａとリストボックス１０７ｂとを有する。ユーザがエディットボックス１０７ａの右の矢印を選択したとき、リストボックス１０７ｂが表示される。リストボックスは、エディットボックス１０７ａに入力することができる可能性のある値のリストを含む。ユーザはマウス及びマウスポインタで値を選択することによってリストボックス１０７ｂから選択し得る値の１つを選択することができ、或いは、エディットボックス１０７ａに値を直接入力するためにキーボードを使用することができる。図１ｃはエディットボックスの操作を図示する。ユーザは、根本的なコンピュータプログラムによって実施される編集を条件として、エディットボックスにいかなる情報をもタイプすることができる。図１ｄはチェックボックスの操作を図示する。チェックボックス１０９は、ユーザがマウス及びマウスポインタを使用することによってチェック又はアンチェックすることができる。
【０００７】
典型的なコンピュータプログラムは、プロパティページの種々のコントロールに入力されたデータの持続的な記憶をさせる。かかるデータは典型的には、ディスクのファイルに持続的に記憶される。各コンピュータプログラムは、種々のコントロールから値を検索すること、及び、ファイルに値を記憶することを制御する。従って、コントロールの値を持続的にストアするコンピュータプログラムの各開発者はかかるストアを実施するコードを開発する必要がある。
典型的なコンピュータプログラムは、コンボボックスのリストボックスを含む種々のリストボックスに関するハードコード化値を使用する（即ち、ソースコードで定義する）。従って、リストボックスの内容を変更するために、開発者はソースコードを変更及びリコンパイルしうる。ソースコードのかかる変更は誤りを犯しやすく、且つ、コストがかかる。
【０００８】
【課題を解決するための手段】
本発明は、ウィンドウに表示されたコントロールの値を変更するための制御方法及びシステムを提供する。制御システムは、ウィンドウ内に各コントロールの定義を含むリソース情報を有する。各コントロールに関して、制御システムは、分身コントロールがコントロールに関係しているかどうか判断する。分身コントロールは分身コントロール情報を有し、ウィンドウが表示されているとき、可視的な顕示性を持たないのが好ましい。コントロールが分身コントロールを有するとき、コントロールシステムは、分身コントロール情報を検索し、コントロールの部分として検索された情報を表示する。次いで、ユーザは、分身コントロール情報を修正することによって分身コントロールの定義を修正するので、そのため、コントロールがその後に表示されるとき、修正された分身コントロール情報が表示される。修正された分身コントロール情報は好ましくは、ウィンドウを表示することを制御するコンピュータプログラムを修正することなしに表示される。また、分身コントロールはコントロールに隣接しているのが好ましい。更に、コントロールがリストボックスであるとき、分身コントロール情報は、リストボックスに表示されるべきアイテムのリストである。
【０００９】
別の態様では、コントロールシステムは、コンピュータプログラムの挙動に影響を及ぼすように、パラメータデータをコンピュータプログラムに渡すための一般的な機構を提供する。コンピュータプログラムは、ウィンドウと、コントロールをウィンドウ内に定義するリソース情報とを有する。コントロールシステムは、パラメータコントロールがウィンドウの表示に影響しないリソース情報内にパラメータコントロールを定義し、コンピュータプログラムに渡されるべきパラメータデータを含む。コンピュータプログラムは、パラメータコントロールの定義をリソース情報から検索し、パラメータデータを検索された定義から抽出し、コントロールの定義を変更することによってコンピュータプログラムの挙動を変更することができるように、パラメータデータによって示された挙動を実行する。パラメータデータは好ましくは、コントロールに関する値を持続的にストアするためのキーを含み、若しくは、コントロールが、リストボックスに表示されるべきアイテムのリストのように表示されるとき、表示されるべき情報を含む。
【００１０】
【発明の実施の形態】
本発明は、コントロール及び種々の変形コントロールに関してユーザが入力した値を持続的にストアするための制御方法及びシステムを提供する。好ましい実施形態では、コントロールシステムはコントロールの各タイプ（例えば、コンボボックス、テキストボックス）に関するウィンドウクラス、及び、コントロールクラスを定義する。これらのクラスは、コントロール値の持続的なストアとコントロールの内容の変更との相互関係を提供する。コントロールシステムを使用するコンピュータプログラムは、コントロールを包含するウィンドウを管理するためのウィンドウオブジェクトを示し、該ウィンドウオブジェクトはコントロールを管理するための各コントロールに関するコントロールオブジェクトを示す。ウィンドウが最初に表示されるとき、ウィンドウオブジェクトはコントロール値を持続性記憶装置からロードするために各コントロールオブジェクトをリクエストする。ユーザが現在のコントロール値を適用することを指示（例えば、「OK」ボタンをクリック）したとき、ウィンドウオブジェクトはコントロール値を持続性記憶装置にストアするために各コントロールオブジェクトをリクエストする。従って、コントロール値は持続的にストアされ、次いで、ウィンドウが表示されたとき検索される。かかる持続性記憶装置は好ましくは、Microsoft Windows （登録商標）オペレーティングシステムによって提供されるシステムレジストリである。しかし、データベース又はファイルのような他の持続性記憶装置が用いられても良い。
【００１１】
コントロール値を持続的にストアするために、コントロールシステムは、各コントロールに対して一意的なキーを割り当て、コントロール値をストアし且つ検索するためにそのキーを使用するのが好ましい。ある実施形態では、該一意的なキーは、プログラム識別子、ウィンドウ識別子、及び、コントロール識別子の組み合わせを含むことができる。従って、コントロールシステムは、コントロールに関する値がストアされているとき、かかる一意的なキーを生成し、値が検索されるとき同じキーを再生成する。しかし、かかる組み合わせの生成は、コントロールシステムが、あるウィンドウから別のウィンドウに移動されたコントロールに関してストアされた値を検索することができないことを意味している。特に、コントロールが移動される前に、コントロールシステムはカレントウィンドウの識別子に基づいたキーを生成し得る。コントロールが移動した後に、システムは、新しいウィンドウの識別子に基づいた新しいキーを生成し得る。しかし、この新しいキーによって、他のキーと一緒にストアされた値を検索することはできない。例えば、コントロールシステムは、「Ｃｕｓｔｏｍ＼ＩＤＣ＿ＣＯＭＢＯＢＯＸ１」を図１ａのコンボボックス１０７に割り当てることができる。なぜならば、そのウィンドウは「Ｃｕｓｔｏｍ」というタイトルを有し、コンボボックスは「ＩＤＣ＿ＣＯＭＢＯＢＯＸ１」の識別子を有しているからである。従って、コンボボックスの値はそのキーを伴ってストアされ得る。しかし、次いで、general ウィンドウが表示されるとき、コンボボックスが「General 」というタイトルを有するウィンドウに移動されるならば、キー「Ｇｅｎｅｒａｌ＼ＩＤＣ＿ＣＯＭＢＯＢＯＸ１」が生成され得る。このキーを使用すると、コントロールシステムはコンボボックスに関する持続的にストアされた値を検索しようと試みる。しかし、コントロールは移動しているので、キーは不適当であり、持続的にストアされた値は検索されない。
【００１２】
不適当なキー生成のこの問題を扱うために、コントロールシステムは、各コントロールが、コントロールが包含されているウィンドウの独立したキーを割り当てることができる機構を提供する。かかるウィンドウ独立キー（window-independent key）によって、コントロールを異なるウィンドウに移動させることができ、コントロールを移動する前に、持続的にストアされた値を依然として検索することができる。その機構によって、ウィンドウ独立キーを、コントロールの定義と一緒にリソースファイルにストアすることができる。ある実施形態では、コントロールに関するキーの識別子を包含するようにコントロールの定義を拡張することができる。例えば、ウィンドウ独立キーを特定するためのコントロールを定義するパラメータをラインに追加することができる。定義のかかる拡張は、リソースファイルのフォーマットの再仕様を実行することによって達成することができる。
【００１３】
好ましい実施形態では、ウィンドウ独立キーはリソースファイルのフォーマットの再仕様なしで特定される。そのコントロールシステムは、そのテキストとしてウィンドウ独立キー（例えば、リソースファイルの一意的な識別子）を包含する各コントロールと関連する「分身コントロール（buddy control ）」を使用する。特定のコントロールに関する分身コントロールは、特定のコントロールの直後に続く静的且つ可視的な顕示性を持たないテキストコントロールとして、リソースファイルに定義される。従って、分身コントロールが次のコントロールを検索することによって、及び、それが静的且つ可視的な顕示性を持たないテキストコントロールであるかどうか判断することによって定義されるならば、特定のコントロールに関するコントロールオブジェクトを決定することができる。分身コントロールを定義したならば、次いで、その分身コントロールのテキストは、特定のコントロールに関する値をストアし且つ検索するとき、使用されるべきキーを特定する。更に、分身コントロールは可視的な顕示性を持たないので、ウィンドウの外観には影響しない。
【００１４】
キーを特定することに加えて、分身コントロールの有無は、コントロールの値が持続的にストアされるべきかどうか示すためのフラグとして使用することができる。即ち、所定のコントロールに関して定義された分身コントロールがないならば、次いで、そのコントロールのための値は持続的にストアすべきでない。反対に、分身コントロールが定義されているならば、次いで、値は、特定のキーを用いて持続的にストアされうる。一般的には、分身コントロールの使用は、対応するコントロールについてコンピュータプログラムに情報を与えるための機構として使用することができる。更に、ウィンドウの外観に影響を与えないコントロールの使用は、任意の情報をコンピュータプログラムに与えるための一般的な機構を提供する。
【００１５】
ある状況では、各コントロールに対する一意的なキーの割り当てによって、容認できないオーバーヘッドを生じ得る。例えば、レジストリのアクセスは各キーに関するディスクアクセスを含み得る。従って、好ましいコントロールシステムは、所定のタイプのコントロールに関する値を、単一のキーで結合させ且つストアさせることができる。ある実施形態では、ウィンドウの全てのボタンコントロールに関する値を、単一のキーのもとで結合し且つストアする。しかし、かかる値を結合したとき、対応するコントロールは異なるウィンドウに容易に移動できない。従って、値のかかる結合を実施するための決定は、コントロールを異なるウィンドウに容易に移動する能力の損失に対するアクセスの節約を必然的に考慮する。好ましい実施形態では、コントロールシステムは、コンピュータプログラムの全てのウィンドウに関する所定のタイプの全てのコントロールのための全ての値を結合し、単一のキーで結合された値をストアするように実施することができる。この方法では、コントロールを異なるウィンドウに移動することができ、且つ、持続的にストアされた値を検索することができる。
【００１６】
コントロールシステムはまた、コンピュータプログラム中にアイテムをハードコード化することなく、特定されるべきであるリストボックスのアイテムを許容する。特に、リストボックスのアイテムは、分身コントロールのテキストとしてストアすることができる。従って、分身コントロールが定義されているならば、リストボックスに関するコントロールオブジェクトを求めることができる。ある１つが定義されたならば、次いで、コントロールオブジェクトは、テキストに示されたアイテムでリストボックスを満たすことができる。
表２はリソースファイルに定義された分身コントロールの使用を示す。この例で示されたように、コントロールシステムは、コンボボックス及びチェックボックスに関する全てのコントロール値を持続的に自動的にストアする。コントロールシステムは、それらのコントロール値の各々を結合し、単一のキーと一緒にそれらをストアする。コントロールシステムは、エディットボックスに関する値が持続的にストアされるべきであるかどうかを示すためのフラグとしてエディットボックスに関する分身コントロールの有無を使用する。分身コントロールがあるならば、次いで、そのテキストは、エディットボックスに関するコントロール値をストア及び検索するためにキーを包含する。また、コンボボックスが分身コントロールを有するならば、コンボボックスのリストボックスに関するアイテムを包含するので、コントロールシステムは分身コントロールのテキストを解読する。ライン２ａは、ライン２に定義されたコンボボックスに関する分身コントロールを定義する。この分身コントロールのテキストは、コンボボックスのリストボックスに関するアイテムのリストを含む。ライン４ａは、ライン４に定義されたエディットボックスに関する分身コントロールを定義する。この分身コントロールのテキストは、エディットボックスの値をストアし且つ検索するとき、使用のためのキーを包含する。
【００１７】
【表２】
0004053637.tif 000003
【００１８】
図２は、本発明が実施され得るコンピュータシステムを図示するブロック図である。コンピュータシステム２０１は、中央処理装置、メモリ、及び、ディスクとライブのような記憶装置を備える。コンピュータシステムはまた、オペレーティングシステム２０２、レジストリ２０３、アプリケーションプログラム２０４、及び、ディスプレイ２０５を有する。コントロールシステムは典型的には、ディスク又は読み出し専用メモリのようなコンピュータ読取り可能媒体に記憶され、それは実行するためにメモリにロードされる。オペレーティングシステムは、コンピュータシステムのオーバーオールオペレーションを調整し、且つ、アプリケーションプログラムとディスプレイのような種々の装置との間のインターフェースとして作用する。レジストリは、種々のアプリケーションプログラムが情報を持続的にストアすることができる集中型機構を提供する。好ましい実施形態では、レジストリの情報は、データに対するパス名（即ち、キー）に基づいた階層型の構成である。レジストリは、データベースを使用して、若しくは、ファイルの情報をストアすることによって実施することができる。アプリケーションプログラムは種々のウィンドウの表示を制御する。プロパティページのような各ウィンドウに関して、アプリケーションプログラムは、ウィンドウの表示を管理するための相互関係を有するウィンドウオブジェクト２１０を生成する。アプリケーションプログラムはまた、コントロールを管理するためのウィンドウに各コントロールに対応するコントロールオブジェクトを含む。本発明は、ウィンドウ及びコントロールオブジェクトを定義する種々のＣ＋＋クラスとして実施されるのが好ましい。
図３は、好ましい実施形態において使用される種々のデータ構造を図示するブロック図である。以下に述べるように、プロパティページのようなウィンドウの実施に基づいて本発明を説明する。Ｗｉｎｄｏｗｓのようなウィンドウシステムは、ウィンドウ及びコントロール、特に、プロパティページ及びそのコントロールの標準的なオペレーションを制御するために、標準的なウィンドウ及びコントロールクラスを定義する。好ましい実施形態では、コントロールシステムのウィンドウ及びコントロールクラスは、これらの定義されたクラスを引き継ぎ、且つ、本発明の種々の態様を実施するために機能性を追加する。ある実施形態では、各プロパティページは対応するＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクト３０１をメモリに有し、それは標準的なプロパティページクラスを引き継ぐＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔの例である。ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトはＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトのリストに対するポインタを含む。プロパティページ内の各コントロールは、標準的なコントロールクラスを引き継ぐＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌクラスの例である対応するＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを有する。ＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌクラスは、コントロールタイプ、即ち、エディットボックス（ＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌ）、コンボボックス（ＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌ）及びボタン（ＣＰｅｒｓｉｓｔｅｎｔＢｕｔｔｏｎＣｏｎｔｒｏｌ）に基づいてサブクラスに分けられる。即ち、あるサブクラスはエディットボックスに対応し、別のサブクラスはコンボボックスに対応し、他のサブクラスはボタンに対応する。ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトはまた、レジストリデータ３０３に対するポインタを含む。レジストリデータ３０３は、単一のキーでレジストリにストアされるべき情報を含む。この例では、プロパティページの各コンボボックス及びボタンに関する値は、単一のキーで結合され且つストアされる。従って、単一のプロパティページに関する全てのコンボボックス及びボタンの値は１つのキーでストアされる。ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトがその値を持続的にストアするために、ＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌ又はＣＰｅｒｓｉｓｔｅｎｔＢｕｔｔｏｎＣｏｎｔｒｏｌを検出したとき、オブジェクトはその値をレジストリ値構造３０４にストアする。ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトがそれらの値を持続的にストアするために全てのコントロールオブジェクトを検出した後、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトは、全てのコントロール値をレジストリ値構造３０４に結合し且つ持続的にストアする。各ＣＰｅｒｓｉｓｉｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌオブジェクトはレジストリデータ３０６に対するポインタを包含する。レジストリデータ３０６は分身コントロールから検索された、もし存在するならば、対応するＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌオブジェクトに関する一意的なキーを包含する。
【００１９】
図４乃至図８は、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスに関する種々のメソッドの流れ図を図示する。ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスは、プロパティページウィンドウに送信されたウィンドウメッセージを処理するためのメソッドＢａｓｅＤｌｇＰｒｏｃと、コントロールの値が変更されたことを示すためのメソッドＤｏＣｏｍｍａｎｄと、持続的にストアされた値に対するコントロールの値を初期化するためのメソッドＳｅｔＡｃｔｉｖｅと、プロパティページを表示するためのメソッドＤｉｓｐｌａｙと、コントロールの値を持続的にストアするためのメソッドＡｐｐｌｙとを有する。ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスは、コントロールの値が変更されたかどうかを示し、従って、値が持続的にストアされる必要があるかどうかを示すデータメンバを包含する。
【００２０】
図４はＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＢａｓｅＤｌｇＰｒｏｃの流れ図を示す。メソッドはプロパティページウィンドウに関するウィンドウプロシージャとして保存する。メソッドは、種々のメッセージを渡し、且つ、メッセージを処理する。メソッドは、プロパティページが初期化されるべきであることを示す初期化メッセージ（「ＷＭ＿ＩＮＩＴ」）と、コントロールの値が変更されていることを示すコマンドメッセージ（「ＷＭ＿ＣＯＭＭＡＮＤ」）と、プロパティページが初めて表示されているかどうか（「ＳＥＴＡＣＴＩＶＥ」）、ＯＫボタンが選択されているかどうか（「ＡＰＰＬＹ」）、又は、キャンセルボタンが選択されているかどうか（「ＱＵＥＲＹＣＡＮＣＥＬ」）を示すコマンドメッセージ（「ＷＭ＿ＣＯＭＭＡＮＤ」）とを受信する。このメソッドの実施は標準的なプロパティページクラスから引き継がれるのが好ましい。ステップ４０１では、メッセージが初期化メッセージならば、メソッドはステップ４０２に続き、そうでなければメソッドはステップ４０４に続く。ステップ４０４乃至４０６では、メソッドはこのオブジェクトのためのウィンドウに関して渡されたハンドルをストアし、変更されたものをクリアし、初期化フラグをクリアする。この渡されたハンドルは、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトの他のメソッドが対応するプロパティページウィンドウを識別することができるようにストアされる。ステップ４０２では、メッセージがコマンドメッセージならば、次いで、メソッドはステップ４０７に続き、そうでなければ、メソッドはステップ４０９に続く。ステップ４０７では、メソッドはこのＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトのメソッドＤｏＣｏｍｍａｎｄを呼び出し、復帰する。ステップ４０９では、メッセージが通知メッセージならば、次いで、メソッドはステップ４１０に続き、そうでなければ、メソッドは復帰する。ステップ４１０では、通知がＡＰＰＬＹメッセージならば、次いで、メソッドはステップ４１１に続く。メッセージがＳＥＴＡＣＴＩＶＥメッセージならば、次いで、メソッドはステップ４１４に続く。メッセージがＱＵＥＲＹＣＡＮＣＥＬメッセージならば、次いで、メソッドはステップ４１６に続く。ステップ４１１で、プロパティページのコントロール値が変更されているならば、次いで、変更は持続的にストアされ、且つ、メソッドはステップ４１２に続き、そうでなければ復帰する。ステップ４１２では、メソッドは、コントロール値をレジストリにストアするためにこのＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトのメソッドＡｐｐｌｙを呼び出す。ステップ４１３では、メソッドは、最後に持続的にストアされ、次いで、復帰するまで、コントロール値が変更されていないことを示すために変更されたフラグをクリアする。ステップ４１４では、メソッドはこのＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトのメソッドＳｅｔＡｃｔｉｖｅを呼び出す。ステップ４１５では、メソッドは、プロパティページが初期化され、次いで復帰することを示すための初期化フラグを設定する。ステップ４１６では、メソッドは、このＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトのメソッドＱｕｅｒｙＣａｎｃｅｌを呼び出し、次いで、復帰する。
【００２１】
図５はＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＤｏＣｏｍｍａｎｄの流れ図である。メソッドは、コントロールの値が変更されているならば、変更フラグを設定する。ステップ５０１では、コントロール値が、プロパティページウィンドウプロシージャによって受信されたメッセージによって示されたように変更されているならば、次いで、メソッドはステップ５０２で変更フラグを設定する。メソッドは次いで復帰する。
図６は、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＳｅｔＡｃｔｉｖｅの流れ図である。このメソッドは、プロパティページの各コントロールに関して持続的にストアされた値を検索することと、検索された値でプロパティページのコントロールを初期化することと、リストボックスを初期化することと、コントロールを表示することとを管理する。初めに、メソッドは、このＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトが、既に初期化され、復帰しているかどうか判断するために初期化フラグを調べる。ステップ６０１乃至６０４では、メソッドは、適当なサブクラスのプロパティページの各コントロールに関するＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを生成することをループする。ステップ６０１では、メソッドは１番目からはじめて、プロパティページのコントロールを選択する。ステップ６０２では、全てのコントロールが既に選択されているならば、次いで、メソッドはステップ６０５に続き、そうでなければ、メソッドはステップ６０３に続く。ステップ６０３では、メソッドは、選択されたコントロールのタイプに関する適当なサブクラスのＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを生成する。ステップ６０４では、プロシージャはＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトによって、生成されたＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを維持されたコントロールオブジェクトのリストに加える。ステップ６０５乃至６０７では、メソッドは、各コントロールオブジェクトを選択すること、及び、持続性記憶装置からその値をロードするためにＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを導くことをループする。ステップ６０５では、メソッドは、１番目からはじめて、次のＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを選択する。ステップ６０６では、全てのＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトが既に選択されてしまっているならば、次いで、メソッドはステップ６０８に続き、そうでなければ、メソッドはステップ６０７に続く。ステップ６０７では、メソッドは、選択されたＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトのメソッドＬｏａｄを呼び出し、次のＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを選択するためにステップ６０５にループする。ステップ６０８では、プロパティページに関する単一のキーと共にストアするために一緒に結合された全ての値をレジストリからロードする。ステップ６０９では、メソッドは、コントロールを表示するためにこのＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトのメソッドＤｉｓｐｌａｙを呼び出し、次いで復帰する。
【００２２】
図７は、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＤｉｓｐｌａｙの流れ図である。このメソッドは、各ＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトを選択することをループし、そのメソッドＤｉｓｐｌａｙを呼び出す。ステップ７０１では、メソッドは１番目からはじめて、次のＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌオブジェクトを選択する。ステップ７０２では、全てのＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトが既に選択されてしまっているならば、次いで、メソッドは復帰し、そうでなければ、メソッドはステップ７０３に続く。ステップ７０３では、メソッドは選択されたＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトのメソッドＤｉｓｐｌａｙを呼び出し、次のＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトを選択するためにステップ７０１にループする。
【００２３】
図８は、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＡｐｐｌｙの流れ図である。このメソッドは、各ＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｌオブジェクトを選択し、その値を持続的にストアするためのそのメソッドＳａｖｅを呼び出す。ステップ８０１では、メソッドは１番目からはじめて、次のＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトを選択する。ステップ８０２では、全てのＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトが既に選択されてしまっているならば、次いで、メソッドはステップ８０４に続き、そうでなければ、メソッドはステップ８０３に続く。ステップ８０３では、メソッドは選択されたＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトのメソッドＳａｖｅを呼び出し、次のＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｏｒｏｌオブジェクトを選択するためにステップ８０１にループする。ステップ８０４では、メソッドは一緒に結合された全ての値をレジストリにストアし、次いで復帰する。メソッドＳａｖｅが、コンボボックス又はボタンコントロールに関してステップ８０３において呼び出されたとき、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトが持続性記憶装置に関するコントロール値にアクセスし且つ結合することができるように、メソッドＳａｖｅはコントロール値をレジストリ値構造３０４にストアする。
【００２４】
図９は、ＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌクラスのメソッドＬｏａｄの流れ図である。このメソッドは、もしあるならば、このコントロールに関するキーを決定するように分身コントロールのテキストを解析する。次いで、メソッドは値をレジストリから検索し、その検索された値に対してコントロールを初期化する。（ＣＰｅｒｓｉｓｔｅｎｔＣｏｎｔｒｏｌサブクラスのメソッドＳａｖｅは、サブクラスに関してメソッドＬｏａｄに類似した仕方で作動する。）ステップ９０１では、メソッドは、リソースファイルから次のコントロールの定義を検索する。ステップ９０２では、次のコントロールが分身コントロールならば、次いで、メソッドはステップ９０３に続き、そうでなければ、メソッドは復帰する。ステップ９０３では、メソッドは、このコントロールに関するキーを識別するためにこのＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌオブジェクトのメソッドＧｅｔＡｎｄＰａｒｓｅＢｕｄｄｙを呼び出す。ステップ９０４では、メソッドは、キーを使用してレジストリからコントロール値を検索する。ステップ９０５では、メソッドは検索された値に対してコントロールにテキストを設定し、そして復帰する。
【００２５】
図１０は、ＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌクラスのメソッドＧｅｔＡｎｄＰａｒｓｅＢｕｄｄｙの流れ図である。メソッドは、分身コントロールに関係するテキストを検索し、キーを識別するためにテキストを解析する。ステップ１００１では、メソッドは分身コントロールに関するテキストを検索する。ステップ１００２では、メソッドはテキストからキーを解析する。ステップ１００３では、メソッドはキーをストアし、そして復帰する。
図１１は、ＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌクラスのＤｉｓｐｌａｙメソッドの流れ図である。Ｄｉｓｐｌａｙは、テキストがロードされたとき操作される。
図１２は、ＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌクラスのメソッドＬｏａｄの流れ図である。コンボボックスが分身コントロールを有するならば、次いで、その分身コントロールはコンボボックスのリストボックスに関するアイテムのリストを包含する。ステップ１２０１では、メソッドは次のコントロールを検索する。ステップ１２０２では、次のコントロールが分身コントロールならば、次いで、メソッドはステップ１２０３に続き、そうでなければ、メソッドは復帰する。ステップ１２０３では、メソッドは分身コントロールに関するテキストを検索する。ステップ１２０４では、メソッドは、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトが、結合された値からその値を検索することができるように、このＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌオブジェクトの識別子をレジストリ値構造３０４に加える。コンボボックスに関するストアされた値は、アイテムのリストのインデックスであるのが好ましい。
【００２６】
図１３は、ＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌクラスのメソッドＤｉｓｐｌａｙの流れ図である。このメソッドは、このＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌオブジェクトの分身コントロールのウィンドウテキストに基づいたリストボックスを満たし、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトによって、結合された値から検索された値にその値を設定する。ステップ１３０１では、メソッドはコンボボックスのエディットボックス及びリストボックスをリセットする。ステップ１３０２では、メソッドは分身コントロールからのアイテムのリストでリストボックスを満たす。ステップ１３０３では、メソッドはエディットボックスに関する値をレジストリ値構造３０４から検索する。ステップ１３０４では、メソッドは検索値をエディットボックスに設定し、そして復帰する。
【００２７】
図１４は、ＣＰｅｒｓｉｓｔｅｎｔＢｕｔｔｏｎＣｏｎｔｒｏｌクラスのメソッドＬｏａｄの流れ図である。このメソッドは、コントロールがチェックボックスであるかどうか判断し、もしそうならば、ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクトがその値を検索することができるように、その識別子をレジストリ値構造３０４に加える。ステップ１４０１では、メソッドは、リソースファイルからウィンドウのスタイルを検索する。ステップ１４０２では、コントロールがチェックボックスならば、次いで、メソッドはステップ１４０３に続き、そうでなければ、メソッドは復帰する。ステップ１４０３では、メソッドはコントロールの識別子をレジストリ値構造に加え、そして復帰する。
図１５は、ＣＰｅｒｓｉｓｔｅｎｔＢｕｔｔｏｎＣｏｎｔｒｏｌクラスのメソッドＤｉｓｐｌａｙの流れ図である。このメソッドは、その値をレジストリ値構造３０４から検索し、それゆえに、チェックボックスを設定する。ステップ１５０１では、メソッドはレジストリ値を検索する。ステップ１５０２では、メソッドはチェックボックスを検索された値に設定し、そして復帰する。
【００２８】
本発明を好ましい実施形態の観点から説明したけれども、それは本発明をこれらの実施形態に制限することを意図していない。本発明の精神の範囲内の修正は当業者には明らかであろう。本発明の範囲は特許請求の範囲によって定義する。
【図面の簡単な説明】
【図１ａ】コントロールを含むウィンドウを図示する。
【図１ｂ】コンボボックスの操作を図示する。
【図１ｃ】エディットボックスの操作を図示する。
【図１ｄ】チェックボックスの操作を図示する。
【図２】本発明が実行され得るコンピュータシステムを図示するブロック図である。
【図３】好ましい実施形態で使用される種々のデータ構造を図示するブロック図である。
【図４】ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＢａｓｅＤｌｇＰｒｏｃの流れ図である。
【図５】ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＤｏＣｏｍｍａｎｄの流れ図である。
【図６】ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＳｅｔＡｃｔｉｖｅの流れ図である。
【図７】ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＤｉｓｐｌａｙの流れ図である。
【図８】ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔクラスのメソッドＡｐｐｌｙの流れ図である。
【図９】ＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌクラスのメソッドＬｏａｄの流れ図である。
【図１０】ＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌクラスのメソッドＧｅｔＡｎｄＰａｒｓｅＢｕｄｄｙの流れ図である。
【図１１】ＣＰｅｒｓｉｓｔｅｎｔＥｄｉｔＣｏｎｔｒｏｌクラスのメソッドＤｉｓｐｌａｙの流れ図である。
【図１２】ＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌクラスのメソッドＬｏａｄの流れ図である。
【図１３】ＣＰｅｒｓｉｓｔｅｎｔＣｏｍｂｏＣｏｎｔｒｏｌクラスのメソッドＤｉｓｐｌａｙの流れ図である。
【図１４】ＣＰｅｒｓｉｓｔｅｎｔＢｕｔｔｏｎＣｏｎｔｒｏｌクラスのメソッドＬｏａｄの流れ図である。
【図１５】ＣＰｅｒｓｉｓｔｅｎｔＢｕｔｔｏｎＣｏｎｔｒｏｌクラスのメソッドＤｉｓｐｌａｙの流れ図である。
【符号の説明】
２０１    コンピュータシステム
２０２    オペレーティングシステム
２０３    レジストリ
２０４    アプリケーションプログラム
２０５    ディスプレイ
２１０    ウィンドウオブジェクト
２１１    コントロールオブジェクト
３０１    ＣＰｒｏｐＰａｇｅＰｅｒｓｉｓｔｅｎｔオブジェクト
３０３    レジストリデータ
３０４    レジストリ値
３０６    レジストリデータ
【図１ａ】
0004053637.tif 000004
【図１ｂ】
0004053637.tif 000005
【図１ｃ】
0004053637.tif 000006
【図１ｄ】
0004053637.tif 000007
【図２】
0004053637.tif 000008
【図３】
0004053637.tif 000009
【図４】
0004053637.tif 000010
【図５】
0004053637.tif 000011
【図６】
0004053637.tif 000012
【図７】
0004053637.tif 000013
【図８】
0004053637.tif 000014
【図９】
0004053637.tif 000015
【図１０】
0004053637.tif 000016
【図１１】
0004053637.tif 000017
【図１２】
0004053637.tif 000018
【図１３】
0004053637.tif 000019
【図１４】
0004053637.tif 000020
【図１５】
0004053637.tif 000021