次に本発明を実施するための最良の形態について図面を参照して説明する。
<システム構成の説明>
〔第1実施形態〕
図1は、本発明の第1実施形態を示す情報処理装置、印刷装置を含むプリンタ制御システムの一例を示すブロック図である。
なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、LAN,WAN等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できる。
図1において、300はホストコンピュータで、双方向インタフェース21Aを介してプリンタ150と通信可能に接続されている。
ホストコンピュータ300において、1はCPUで、ROM3のプログラム用ROMあるいは外部メモリ11に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表(表計算等を含む)等が混在した文書処理を実行する。なお、CPU1は、システムバス4に接続される各デバイスを総括的に制御する。また、外部メモリ11は、フレキシブルディスクやハードディスク等が含まれる。
また、ROM3のプログラム用ROMあるいは外部メモリ11には、CPU1の制御プログラムであるオペレーティングシステムプログラム(以下OS)等が記憶されている。さらに、ROM3のフォント用ROMあるいは外部メモリ11には上記文書処理の際に使用するフォントデータ等が記憶されている。
また、ROM3のデータ用ROMあるいは外部メモリ11には上記文書処理等を行う際に使用する各種データが記憶されている。
2はRAMで、CPU1の主メモリ、ワークエリア等として機能する。また、RAM2は、オプションRAMを装着することで、メモリ容量を増量することができるように構成されている。
5はキーボードI/Fで、キーボード9や不図示のポインティングデバイスからのキー入力を制御する。6はディスプレイI/Fで、ディスプレイ10の表示を制御する。
7は外部メモリI/Fで、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタドライバ等を記憶するハードディスク(HD)、フレキシブルディスク(FD)等の外部メモリ11とのアクセスを制御する。
8はプリンタI/Fで、所定の双方向インタフェース21Aを介してプリンタ150に接続されて、プリンタ150との通信制御処理を実行する。
なお、CPU1は、例えばRAM2上に設定された表示情報RAMへのアウトラインフォントの展開(ラスタライズ)処理を実行し、ディスプレイ10上でのWYSIWYGを可能としている。
また、CPU1は、CRT10上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。
ユーザは、印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行う。
プリンタ150において、12はプリンタCPU(CPU)で、システムバス15に接続されるデバイスを総括的に制御する。
また、CPU12は、ROM14のプログラム用ROMに記憶された制御プログラム等あるいは外部メモリ21に記憶された制御プログラム等に基づいてシステムバス15に接続される印刷部17に出力情報としての画像信号を出力する。
また、このROM14のプログラムROMには、CPU12の制御プログラム等を記憶する。ROM14のフォント用ROMには出力情報を生成する際に使用するフォントデータ等を記憶し、ROM14のデータ用ROMにはハードディスク等の外部メモリ21がないプリンタの場合には、ホストコンピュータ300上で利用される情報等を記憶している。
CPU12は、入力部16を介してホストコンピュータ300との通信処理が可能となっており、プリンタ150内の情報等をホストコンピュータ300に通知可能に構成されている。
13はRAMで、CPU12の主メモリ、ワークエリア等として機能し、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
なお、RAM13は、出力情報展開領域、環境データ格納領域、NVRAM等に用いられる。前述したハードディスク(HD)、ICカード等の外部メモリ21は、外部メモリI/F18によりアクセスが制御される。
外部メモリ21は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。17は印刷部インタフェースで、印刷部19へ画像データを出力するとともに、印刷部19の各種センサから検出される情報をCPU12に通知する。
また、20は操作部で、操作のためのスイッチおよびLED表示器等が配されている。また、前述した外部メモリ21は1個に限らず、少なくとも1個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。
さらに、図示しないNVRAMを有し、操作パネル20からのプリンタモード設定情報を記憶するようにしてもよい。なお、操作パネル20は、タッチパネル型の液晶ディスプレイを備え、ユーザに機能設定画面を表示可能に構成されている。
図2は、図1に示したホストコンピュータ300のモジュール構成を説明するブロック図である。本例は、ホストコンピュータ300における典型的な印刷データ生成処理を行うモジュールに対応する。
図2において、アプリケーション201、グラフィックエンジン202、プリンタドライバ203、およびシステムスプーラ204は、外部メモリ11に保存されたファイルとして存在する。これらのファイルは、OSやそのモジュールを利用するモジュールによってRAM2にロードされCPU1により実行されるプログラムモジュールである。
また、アプリケーション201およびプリンタドライバ203は、外部メモリ11のFDや不図示のCD−ROM、あるいは不図示のネットワークを経由して外部メモリ11に追加することが可能となっている。
なお、外部メモリ11は、例えばハードディスク(HD)等で構成される。
外部メモリ11に保存されているアプリケーション201は、RAM2にロードされてCPU1により実行される。
一方、アプリケーション201からプリンタ150に対して印刷を行う際には、同様にRAM2にロードされ実行可能となっているグラフィックエンジン202を利用して出力(描画)を行う。
グラフィックエンジン202は、プリンタ毎に用意されたプリンタドライバ203を、外部メモリ11からRAM2にロードし、プリンタドライバ203は、アプリケーション210の出力をプリンタの制御コマンドに変換する。
このようにして、プリンタドライバ203により変換されたプリンタ制御コマンドは、OSによってRAM2にロードされたシステムスプーラ204を経て双方向インタフェース21A経由でプリンタ150へ出力される仕組みとなっている。
図3は、図1に示したホストコンピュータ300にインストールされるアプリケーションと、各プリンタ用のプリンタドライバとの関係を説明する模式図である。
図3において、アプリケーション311は、オペレーティングシステム(OS)312が提供する各種関数(API)をコールして処理を行う。OS312は印刷に関わる処理を選択されているプリンタのプリンタドライバ313、314が提供する関数(DDI)をコールして処理を行い、アプリケーション311から選択されたプリンタへの印刷が可能となっている。なお、図中では、プリンタドライバ313とプリンタドライバ314の違いを、プリンタドライバA、プリンタドライバBと表記する。
このときプリンタドライバ313,314とOS312、及び、アプリケーション間で、図4に示すようにプリンタの印刷設定データがやり取りされる。
図4は、図1に示したホストコンピュータ300にインストールされるアプリケーションと、各プリンタ用のプリンタドライバとの関係を詳細に説明する模式図である。
図4において、Win32アプリケーション504やプリントチケット対応アプリケーション506から印刷設定する場合については図33にて説明済みなので、ここでは説明を省略する。
プリンタドライバ501にプリントチケットの入出力を直接管理するプリントチケット入出力部901を設ける。そして、図5に示すようなOSの関与しない独自のインタフェースを設ける。
この新インタフェース対応アプリケーション902(以下、アプリケーション902と呼ぶ)は、プリントチケットAPI505を呼び出すことなく、図5に示すプリンタドライバが公開する独自のインタフェースを呼び出す。これにより、アプリケーション902から直接プリントチケットをプリントチケット入出力部901へ渡すことができる。
図5、図6は、本実施形態を示す情報処理装置にインストールされるプリンタドライバが公開するインタフェース関数の一例を示す図である。また、本例は、プリンタドライバが公開する独自のインタフェースの一部である。
図5は、プリンタドライバが公開する独自のインタフェース関数をC言語の関数として定義している例である。OSが定義するプリンタドライバインタフェース関数DrvDocumentPropertySheetsとは名前が異なるだけで関数仕様はほぼ同等なので、ここでは説明を省略する。
なお、DrvDocumentPropertySheets関数の詳細については、例えばhttp://msdn2.microsoft.com/en-us/library/ms801131.aspxにて確認することができる。
図6は、図5に示した関数で使用される構造体の一部を説明する図である。
本例は、OSが定義するDOCUMENTPROPERTYHEADER構造体を模した仕様になっている例である。なお、DOCUMENTPROPERTYHEADER構造体の詳細については、例えばhttp://msdn2.microsoft.com/en-us/library/aa506306.aspxにて確認することができる。
以下、DOCUMENTPROPERTYHEADER構造体とCN_DOCUMENTPROPERTYHEADER構造体の違いのみを説明する。
DOCUMENTPROPERTYHEADER構造体には、入出力するDEVMODE構造体をメンバとして保持し、さらに出力用DEVMODEのサイズもメンバとして保持しているが、これらはCN_DOCUMENTPROPERTYHEADER構造体には一切存在しない。
その代わりに、入出力するプリントチケットをメンバ(IStream *pPrintTicket(引数))として保持する。
以下では、アプリケーションの印刷設定画面の表示フローと、図5、図6に示すインタフェース関数を用いて、プリンタドライバの印刷設定画面の表示フローについて説明する。
図7Aは、本実施形態を示す情報処理装置におけるユーザインタフェースの表示制御を説明する図である。本例は、アプリケーションのユーザインタフェースで表示される印刷設定機能を示す文字列に合わせて、プリンタドライバが提供するユーザインタフェースで表示される印刷設定機能文字列を置き換える表示制御に対応する。なお、図4と同一のものには同一の符号を付してある。
図7Aにおいて、7000AはUI文字テーブルで、機能名とそれに対応したUIの文字列テーブル情報1501を保持する。
AP−UIはアプリケーションによる印刷設定画面で、アプリケーション902が文字列テーブル情報1501を参照してディスプレイ10に表示する。
7000BはUI文字テーブルで、ドライバ側の機能名とそれに対応したUIの文字列テーブル情報1601を保持する。
7000Cは文字列テーブルで、UI文字テーブル7000Bの文字列IDに対応する文字列データをID別に保持する。
DR−UIはドライバによる印刷設定画面で、通常は、印刷設定画面AP−UIで表示される機能の文字列と異なるが、後述する置き換え処理実行後のため、印刷設定画面DR−UIと印刷設定画面AP−UIとが同じ表示としている状態に対応する。
以下、アプリケーション902側の処理について説明する。なお、図7Aにおいて、(1)〜(7)はそれぞれ処理を示す。
まず、処理(1)では、プリンタドライバ501から図32に示すデータ構造を備えるプリンタの能力情報(以下、PrintCapabilitiesと呼ぶ)を取得する。
次に、処理(2)で、アプリケーション902は、プリンタドライバ501から取得したPrintCapabilities 内でアプリケーション902のUIで表示している機能を判別する。
次に、処理(3)で、アプリケーション902は、UI文字テーブル7000A内に保持される文字列テーブル情報1501を参照して、処理(2)で判別された機能に対応する文字列情報を取得する。
これにより、アプリケーション902は、図7Aに示すように、例えばプリンタドライバ501から取得したPrintCapabilities 内の機能が「Collate」であれば、「部単位印刷」という文字列を文字列テーブル情報1501から取得する。
次に、処理(4)で、後述する図10に示す処理に基づき、ドライバUIオープン時に指定する図11に示すPrintTicket内に、文字列置き換え対象となる機能の記述部分に処理(3)で取得した文字列をReplaceDisplayStringとして指定する。
以下、指定するPrintTicket の記述例を示す。
<feature name="Collate">
<property name="ReplaceDisplayString">
<value>部単位印刷</value>
</property>
<option name="ON"/>
</feature>
次に、プリンタドライバ501側の処理について説明する。
まず、処理(5)で、プリンタドライバ501内の文字列テーブル7000Cを参照して、印刷設定画面DR−UIの機能を表示するための文字列を取得する。この状態では、プリンタドライバ501で設定される機能に対する文字列がUI画面に表示されるため、印刷設定画面DR−UIと印刷設定画面AP−UIとで機能に関わる文字列が異なる場合がある。
次に、プリンタドライバ501は、UI文字テーブル7000Bに保持されるドライバ側の機能名とそれに対応したUIの文字列テーブル情報1601を参照する。
次に、プリンタドライバ501は、アプリケーション902から生成されるPrintTicketで指示されるReplaceDisplayStringが指示された機能のUI文字列を、指定された文字列で置き換える。
そして、処理(7)で、ドライバUIオープン時に、処理(6)で置き換えた文字列を印刷設定画面DR−UIとして表示することで、印刷設定画面DR−UIと印刷設定画面AP−UIとが同じ表示とする。
なお、プリンタドライバ501から取得されるPrintCapabilitiesに含まれていない機能に対応する文字列については、後述するようにグレイ表示される。
このように本実施形態では、アプリケーション902がプリンタドライバ501に提供するUIを表示する際に、アプリケーション902は、プリンタドライバ501に指示するPrintTicket内で、自身のUIに表示している機能名称を指定する。
そして、プリンタドライバ501は、アプリケーション902から取得するPrintTicketで指定されたアプリケーションの機能名称に置き換えてドライバUIを構成する。
これにより、アプリケーションのUI表示に対する表示言語と、プリンタドライバのUI表示に対する表示言語が異なる場合にも、アプリケーション902に対応する機能文字列でドライバ側の機能文字列を統一することができる。
したがって、ユーザはプリンタドライバが提供するUI画面の機能を示す文字列が、アプリケーション902が提供するUI画面の機能を示す文字列とに違和感がなくなり、操作性が向上する。
図7Bは、本実施形態を示す情報処理装置における第1のデータ処理手順の一例を示すフローチャートである。本例は、図4に示したアプリケーション902が自身で管理している印刷設定画面を表示する処理例である。なお、S1901〜S1908は各ステップを示す。また、各ステップは、CPU1がRAM2にアプリケーション902をロードして実行することで実現される。
アプリケーション902のプログラムは、ホストコンピュータ300の外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
まず、S1901で、アプリケーション902は、プリンタデバイスの能力情報を取得する。プリンタデバイスのPrintCapabilitiesは、プリントチケットAPI505を通じて取得する。ここで、図32に示すようなXML形式のPrintCapabilities をアプリケーション902に返す。なお、アプリケーション902がプリンタデバイス501のPrintCapabilitiesを取得する処理が第1の取得処理であり、アプリケーション902が後述するS2004で機能に対応した文字列を取得する処理が第2の取得処理に対応する。
図32の例に示すPrintCapabilitiesには、Collate、Duplex、MediaSize、OutputBinの4つのFeatureが含まれる。また、それぞれのFeatureには、DisplayNameプロパティが指定されている。
その後、S1902で、アプリケーション902は、図8に示すような、機能名とそれに対応したアプリケーション側のUIの文字列テーブル情報1501を取得する。
図8に示すように、文字列テーブル情報1501には、機能名(Feature名)1502に応じたUI文字列1503、UIのコントロールID1504が格納されている。
次に、S1903で、アプリケーション902は、S1902にて取得した文字列テーブル情報1501を参照し、最初の機能の情報を取得する。
次に、S1904で、アプリケーション902は、S1903にて文字列テーブル情報1501より取得した機能がS1901にてプリンタドライバ501より取得したPrintCapabilities内に含まれる機能か否かを判別する。ここで、アプリケーション902がPrintCapabilities内に存在すると判別された場合には、S1905へ進む。
そして、S1905で、アプリケーション902は、文字列テーブル情報1501内に格納されたFeature名(機能名)1502に応じた文字列を用いて、アプリケーションUIを、ホストコンピュータ300のディスプレイ10に表示する。ここで、アプリケーションUIとは、図7Aに示した印刷設定画面AP−UIに対応する。
次に、S1906で、アプリケーション902は、現在取得している機能情報が文字列テーブル情報1501の最後の項目であるか否かを判別し、最後であると判断されたら、本処理を終了する。
一方、S1906で、アプリケーション902が最後の項目でないと判断された場合は、S1908に進み、文字列テーブル情報1501内の次の項目を取得した後、S1904〜S1906までの処理を繰り返す。
一方、S1904にて、アプリケーション902がプリンタドライバ501より取得したPrintCapabilities内に機能が存在しないと判別された場合には、S1907へ進む。そして、S1907で、機能に対応したUIコントロールをグレイ表示し、使用不可の機能として通知して、S1904へ戻る。
図9は、図1に示したディスプレイ10に表示されるアプリケーションの印刷設定画面1201の一例を示す図である。本画面は、アプリケーション902による表示画面例である。
図9に示す画面では、用紙設定コントロール1202、両面設定コントロール1203、部単位印刷設定コントロール1205がそれぞれ文字列テーブル情報1501内のUI文字列で表示されている例である。
また、PrintCapabilitiesに含まれていない機能に対応するステイプル設定コントロール1206がグレイ表示(図9では網掛けで示す)されている。
アプリケーションの印刷設定画面1201には、さらにプリンタを選択するプリンタ選択コントロール1204、プリンタドライバ501の印刷設定画面を表示するためのプロパティボタン1207を備える。さらに、アプリケーションの印刷設定画面1201には、印刷設定画面を確定させるOKボタン1208、キャンセルボタン1209を含んで構成されている。
次に、アプリケーションの印刷設定画面1201のプロパティボタン1207が押下され、アプリケーション902からプリンタドライバ501の印刷設定画面を表示する処理について説明する。
図10は、本実施形態を示す情報処理装置における第2のデータ処理手順の一例を示すフローチャートである。本例は、アプリケーション902が表示した図9に示す画面において、ユーザの操作により、プロパティボタン1207が押下された際に実行される、アプリケーションからプリンタドライバの印刷設定画面を表示させる指示例である。
なお、S2001〜S2007は各ステップを示す。また、各ステップは、CPU1がRAM2にアプリケーション902をロードして実行することで実現される。
S2001で、アプリケーション902は、印刷設定画面1201内の印刷設定に関わるコントロールの選択状態を取得する。次に、S2002で、アプリケーション902は、S1901でプリンタドライバ501より取得したPrintCapabilities内のFeature一覧のうち、S2001で状態を取得したコントロールに対応したFeatureを参照する。
次に、S2003で、アプリケーション902は、参照したFeatureのOptionの一覧の中で、選択状態の設定項目に対応した項目以外のOptionを削除する。その結果、アプリケーション902は、図11に示すように、Featureに特定の設定項目のOptionのみが記述された状態のPrintTicket1401を生成する。
図11は、本実施形態を示す情報処理装置で生成されるPrintTicketの一例を示す図である。本例は、アプリケーション902によりFeature1402に特定の設定項目のOption1404のみが記述された状態のPrintTicketを生成した例である。
図11の例では、"Collate"Featureでは、"On"Optionが、"Duplex"Featureでは、"OFF"Optionがそれぞれ選択されている状態に対応する。
次に、S2004で、アプリケーション902は、文字列テーブル情報1501を取得する。そして、S2005で、アプリケーション902は、文字列テーブル情報1501を参照して、現在のコントロールに関連する機能の文字列情報を取得し、ReplaceDisplayStringプロパティとして図11に示すPrintTicket1401に指定する。
図11の例では、"Collate"FeatureのReplaceDisplayStringプロパティ1403として、アプリケーションの文字列テーブル情報1501内のCollateに対応した文字列、"部単位印刷"が記述されている。
次に、S2006で、アプリケーション902は、S2001で参照した印刷設定のコントロールが最後の設定項目か否かを判別する。ここで、アプリケーション902が、最後であると判定した場合、次のS2007へ進む。そして、S2007で、アプリケーション902は、プリンタドライバの印刷設定画面を表示する指示に従い、生成した図6に示すPrintTicketを指定してプリンタドライバ501の印刷設定画面表示を指示して、本処理を終了する。
一方、S2006で、最後の設定項目でないとアプリケーション902が判定した場合には、S2001に戻り、次の印刷設定のコントロールの状態を取得して、全ての印刷設定コントロールが終了するまで、処理を繰り返す。
最終的には、図6に示すAPIの引数pPrintTicketには、アプリケーションの印刷設定画面の状態が反映される。さらに、UI文字列がReplaceDisplayStringプロパティに記述された、図11に示すようなPrintTicketが指定される。
図12は、本実施形態を示す情報処理装置における第3のデータ処理手順の一例を示すフローチャートである。
本例は、アプリケーション902が表示した図9に示す画面において、ユーザの操作により、プロパティボタン1207が押下される後のプリンタドライバ側の印刷設定画面を表示する処理例である。
より具体的にいえば、本処理は、図5に示したCN_DrvDocumentPropertySheets関数の呼び出しにおいて、プリンタドライバ501に対しユーザインタフェースの表示が指示された場合の処理フローの一部に対応する。なお、ユーザインタフェースの表示の指示は、図6に示したCN_DOCUMENTPROPERTYHEADER構造体のfModeメンバにDM_IN_PROMPTが設定された場合に相当する。
また、S2101〜S2111は各ステップを示す。また、各ステップは、CPU1がRAM2にサブモジュール502をロードして実行することで実現される。なお、プリンタドライバ501のプログラムはコンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
S2101で、サブモジュール502は、図10に示したアプリケーション902によるS2007における印刷設定画面の表示指示に応じた、プリンタドライバ側のコマンドを受信する。
次に、S2102で、サブモジュール502は、図6に示したAPIのpPrintTicketに指定されているPrintTicketを取得する。
次に、S2103で、サブモジュール502は、図13に示すようなサブモジュール502内で保持している文字列テーブル情報1601を取得し、メモリ中に展開する。
図13は、図4に示したサブモジュール502内で保持される文字列テーブル情報1601の一例を示す図である。
図13において、文字列テーブル情報1601には、機能名1602とその機能に対応したUIのコントロールID1603、UI文字列1604が関連付けられて格納されている。
S2104では、サブモジュール502がS2102でアプリケーション902より取得したPrintTicket内の最初のFeatureを参照し、S2105で、サブモジュール502は、参照したFeature内にReplaceDisplayStringプロパティが存在するか否かを判別する。
ここで、サブモジュール502がS2105でReplaceDisplayStringがあると判断した場合には、S2106で、サブモジュール502がS2103で取得した文字列テーブル情報1601内で現在参照しているFeatureと一致する機能名を検索する。
次に、S2107では、サブモジュール502がS2106で一致する機能名が存在する否かを判断する。ここでサブモジュール502がS2106で一致する機能名が存在すると判断した場合、S2108に進む。そして、S2108で、サブモジュール502は、一致する機能名のUI文字列1603を、指定されたPrintTicket内のReplaceDisplayString文字列で置き換える。これにより、図13に示すUI文字列「ソート」は、アプリケーション902が生成したPrintTicketで指定される文字列「部単位印刷」に置き換えられる。
一方、S2107で、サブモジュール502が一致した機能名が検索できないと判断した場合は、何もせずにS2109に進む。そして、S2109では、サブモジュール502が現在参照しているFeatureがPrintTicket内の最後のFeatureであるか否かを判別する。ここで、サブモジュール502が最後のFeatureであると判定された場合には、S2111で、UI文字列が置き換えられた、図14に示すような文字列テーブル情報2201のUI文字列2204に従って、プリンタドライバのUI画面をディスプレイ10上に表示する。
図14は、図4に示したサブモジュール502が保持する文字列テーブル情報2201の一例を示す図である。
この際、文字列テーブル情報2201内の各機能の機能名2202に関連付けられたコントロールID2203の文字列は、アプリケーション902から取得するPrintTicketで指定されたUI文字列2204に置き換えられて保持する。
図14に示す文字列テーブル情報2201では、CollateのUI文字列(ソート)が、"部単位印刷"に、MediaSizeのUI文字列(用紙名称)が"用紙"に、それぞれアプリケーションが指定した文字列に置き換えられている状態を示す。
この結果、図15に示すようなアプリケーションの文字列に置き換えられたプリンタドライバの印刷設定画面1800がディスプレイ10に表示される。
図15、図16は、本実施形態を示す情報処理装置で表示可能なユーザインタフェースの一例を示す図である。なお、図15は、サブモジュール502による文字列の置き換えが実行された印刷設定画面に対応し、図16は、サブモジュール502による文字列の置き換えが実行さていない通常の印刷設定画面に対応する。
図16では、通常のプリンタドライバの印刷設定画面を示しているが、用紙名称1701と、ソート1702のUI文字列が、図15に示す設定画面では、それぞれ"用紙"、"部単位印刷"とアプリケーションの文字列に置き換えられていることを示している。
以上の手順により、アプリケーションのUI文字列で、プリンタドライバのUI文字列の置換えが実現可能となる。
〔第2実施形態〕
以下では、アプリケーションの印刷設定画面の表示フローと、図5、図6に示したインタフェース関数を用いて、プリンタドライバの印刷設定画面を表示する処理について図7Bに示すフローチャートを参照して説明する。
本実施形態では、アプリケーションのUI文字列で、プリンタドライバのUI文字列の置換えた際に、文字列表示がUI表示可能な文字数を超えて表示すべき文字列の一部が切る状態となる場合でも、正しく置き換えた機能を示す文字列を表示可能とする例である。
図7Bは、図4に示したアプリケーション902が自身で管理している印刷設定画面を表示する処理フローである。
アプリケーション902のプログラムは、コンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
アプリケーション902は、S1901で、プリンタデバイスの能力情報を取得するために、プリントチケットAPI505を通じて、プリンタドライバ501よりPrintCapabilitiesを取得する。
ここで、アプリケーション902は、図13に示すようなXML形式のPrintCapabilities をプリンタドライバ501より取得する。図13の例に示すPrintCapabilitiesの例では、Collate、Duplex、MediaSize、OutputBinの4つのFeatureが含まれる場合である。また、それぞれのFeatureには、DisplayNameプロパティが指定されている。
その後、S1902にて、アプリケーション902は、図8に示すような、機能名とそれに対応したUIの文字列テーブル情報1501を取得する。
ここで、文字列テーブル情報1501には、機能名1502に応じたUI文字列1503、UIのコントロールID1504が格納されている。
S1903では、アプリケーション902は、S1902にて取得した文字列テーブル情報1501を参照し、最初の機能の情報を取得する。次に、S1904で、アプリケーション902は、S1903で取得した機能がS1901でプリンタドライバ501より取得したPrintCapabilities内に含まれる機能か否かを判別する。
ここで、アプリケーション902がS1901で取得した機能がPrintCapabilities内に存在すると判別した場合には、S1905へ進む。そして、S1905で、アプリケーション902は、文字列テーブル情報1501内に格納されたFeature名に応じた文字列を用いて、アプリケーションUIをディスプレイ10に表示する。
次に、S1906で、アプリケーション902は、現在取得している機能情報が文字列テーブル情報1501の最後の項目であるか否かを判別し、最後であると判断したら、本処理を終了する。
一方、S1905で、アプリケーション902が現在取得している機能情報が最後の項目でないと判断された場合は、S1908に進む。そして、S1908で、アプリケーション902は、文字列テーブル情報1501内の次の項目を取得した後、S1904〜S1906までの処理を繰り返す。
一方、S1904にて、アプリケーション902がS1902で取得した機能がS1901でプリンタドライバ501よりPrintCapabilities内に存在しないと判別された場合には、その機能に対応したUIコントロールをグレイ表示し、使用不可の機能として通知する。
図9は、図7に示したのフローにより構成されたアプリケーションの印刷設定画面1201の一例を示す。
図9において、用紙設定コントロール1202、両面設定コントロール1203、部単位印刷設定コントロール1205がそれぞれ文字列テーブル情報1501内のUI文字列で表示されている。
また、プリンタドライバ501より取得するPrintCapabilitiesに含まれていない機能、例えばステイプル機能に対応するステイプル設定コントロール1206はグレイ表示されている。ここでは、ステイプル機能がグレイ表示(図中では、網掛けで示す)されている例を示す。
アプリケーションの印刷設定画面1201には、さらにプリンタを選択するプリンタ選択コントロール1204、プリンタドライバの印刷設定画面を表示するためのプロパティボタン1207を備える。さらに、アプリケーションの印刷設定画面1201には、印刷設定画面を確定させるOKボタン1208、キャンセルボタン1209を備える。
次に、アプリケーションの印刷設定画面1201のプロパティボタン1207が押下され、アプリケーション902からプリンタドライバ501に対して印刷設定画面を表示させる指示について説明する。
図10は、図9に示したアプリケーションのプロパティボタン1207が押下された際に、アプリケーション902からプリンタドライバ501の印刷設定画面を表示させる指示を行う処理フローである。
なお、本フローに係わるアプリケーション902のプログラムはコンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
S2001で、アプリケーション902は、図9に示す印刷設定画面1201内の印刷設定に関わるコントロールの選択状態を取得する。次に、S2002で、アプリケーション902は、図7に示したS1901でプリンタドライバ501より取得したPrintCapabilities内のFeature一覧のうち、S2001で印刷設定画面1201の状態から取得したコントロールに対応したFeatureを参照する。
そして、S2003では、アプリケーション902は、参照したFeatureのOptionの一覧の中で、選択状態の設定項目に対応した項目以外のOptionを削除する。
その結果、図11に示すように、Featureに特定の設定項目のOptionのみが記述された状態のPrintTicket1401が生成される。図11の例では、"Collate"Featureでは、"On"Optionが、"Duplex"Featureでは、"OFF"Optionがそれぞれ選択されている状態を示す。
次に、S2004で、アプリケーション902は、文字列テーブル情報1501を取得する。そして、S2005で、アプリケーション902は、文字列テーブル情報1501内を参照して、現在のコントロールに関連する機能の文字列情報を取得し、ReplaceDisplayStringプロパティとしてPrintTicket1401に指定する。
図11に示す例では、"Collate"FeatureのReplaceDisplayStringプロパティとして、アプリケーションの文字列テーブル情報1501内のCollateに対応した文字列、"部単位印刷"が記述されている。
次に、S2006で、アプリケーション902は、S2001で参照した印刷設定のコントロールが最後の設定項目か否かを判別する。S2006で、アプリケーション902が最後であると判定された場合、S2007へ進む。そして、S2007で、アプリケーション902は、プリンタドライバ501の印刷設定画面を表示させる指示のためのAPI505に、作成したPrintTicketを指定してプリンタドライバ505の印刷設定画面の表示を指示する。
一方、S2007で、アプリケーション902が最後の設定項目でないと判定された場合には、S2001に戻り、次の印刷設定のコントロールの状態を取得して、全ての印刷設定コントロールが終了するまで、処理を繰り返す。
そして、最終的には図6に示すAPIの引数pPrintTicketには、アプリケーションの印刷設定画面の状態が反映され、UI文字列がReplaceDisplayStringプロパティに記述された、図11に示すようなPrintTicketが指定される。
次に、図12を用いて、ユーザの操作に従いプロパティボタン1207が押下された後のプリンタドライバ501側の印刷設定画面を表示する処理について説明する。
本フローに係わるプリンタドライバを構成する新ドライバサブモジュール(以下、サブモジュールと呼ぶ)502のプログラムはコンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
図5に示したCN_DrvDocumentPropertySheets関数の呼び出しにおいて、プリンタドライバ501に対しユーザインタフェースの表示が指示された場合の処理フローの一部である。
ユーザインタフェースの表示の指示は、図6に示したCN_DOCUMENTPROPERTYHEADER構造体のfModeメンバにDM_IN_PROMPTが設定された場合に相当する。
S2101で、サブモジュール502は、図10に示したアプリケーション902によるS2007の印刷設定画面の表示指示に応じたコマンドを受信する。次に、S2102では、サブモジュール502は、図6に示すAPIのpPrintTicketに指定されているPrintTicket取得する。
次に、S2103で、サブモジュール502は、図17に示すように、プリンタドライバ501内で保持している文字列テーブル情報2501を取得し、メモリ中に展開する。
図17は、図5に示したプリンタドライバ501が保持する文字列テーブル情報の一例を示す図である。
図17に示すように、文字列テーブル情報には、機能名2502とその機能に対応したUIのコントロールID2503、UI文字列2504、最大UI表示文字数2505が関連付けられて格納されている。
S2104では、サブモジュール502は、S2102で取得したPrintTicket内の最初のFeatureを参照し、S2105で参照したFeature内にReplaceDisplayStringプロパティが存在するか否かを判別する。
ここで、サブモジュール502がS2105で、ReplaceDisplayStringがあると判断された場合には、S2106へ進む。そして、S2106で、サブモジュール502は、S2103で取得した文字列テーブル情報1601内で現在参照しているFeatureと一致する機能名を検索する。
次に、S2107で、サブモジュール502がS2106で一致する機能名が存在するかどうかを判断する。ここで、サブモジュール502が一致する機能名が存在すると判断した場合、S2108に進む。
そして、S2108で、サブモジュール502が一致する機能名のUI文字列2503を、指定されたPrintTicket内のReplaceDisplayString文字列で置き換える。
一方、S2107で、サブモジュール502が一致した機能名が検索できないと判断した場合は、何もせずにS2109に進む。
そして、S2109では、サブモジュール502は現在参照しているFeatureがPrintTicket内の最後のFeatureであるか否かを判別する。ここで、サブモジュール502が最後のFeatureであると判別した場合には、S2111へ進む。そして、S2111で、UI文字列が置き換えられた、例えば図14に示すような文字列テーブル情報2201のUI文字列2204に従って、プリンタドライバのUI画面をディスプレイ10に表示する。
この際、サブモジュール502は、図17に示す文字列テーブル情報2501を、図18に示す文字列テーブル情報2601内の各機能に関連付けられたコントロールIDの文字列をアプリケーション902から取得したPrintTicketに従って置き換えて保持する。
図18は、図5に示したプリンタドライバ501が保持する文字列テーブル情報の一例を示す図である。
図18に示す文字列テーブル情報2601では、機能名2602がCollateのUI文字列(ソート)2604が、"部単位印刷"に、MediaSizeのUI文字列(用紙名称)が"用紙"に、それぞれアプリケーションが指定した文字列に置き換えられている。なお、2603はコントロールIDを示す。
この結果、図18に示す文字列テーブル情報2601に従って図19に示すようなアプリケーション902の文字列に置き換えられたプリンタドライバ501の印刷設定画面がディスプレイ10に表示される。
ここでは、プリンタドライバ501の印刷設定画面で設定された最大表示文字数2605を超える文字は表示されない。つまり、部単位印刷は、5文字から構成されるため、最大表示文字数「4」に従い、4文字分となる「部単位印」のみが表示された状態となる。したがって、ユーザは、一見してその項目名を正確に認識できない場合がある。
そこで、以下、プリンタドライバ501が図20に示す表示処理を行うことで、置き換えられた文字列すべてを、図21に示すように表示された項目名の近傍に表示する。これにより、置き換えられた全ての文字列と、表示されなかった文字列とを対向して表示することが可能となる。
図20は、本実施形態を示す情報処理装置における第4のデータ処理手順の一例を示すフローチャートである。本例は、プリンタドライバの印刷設定画面上のコントロールにマウスオーバーした際の表示処理例である。なお、S2401〜S2406は各ステップを示す。また、各ステップは、CPU1がRAM2にプリンタドライバ501をロードして実行することで実現される。
まず、S2401で、プリンタドライバ501がマウスオーバイベントが発生したことを検出したら、S2402で、プリンタドライバ501は、イベントが発生したUIのコントロール情報を取得する。
次に、S2403では、プリンタドライバ501は、S2402で取得したコントロール情報のコントロールIDが図18に示す文字列テーブル情報2601内に存在するか否かを判別する。
ここで、プリンタドライバ501が文字列テーブル情報にコントロールIDが存在すると判別した場合は、プリンタドライバ501は、S2404で文字列テーブル情報2601の最大表示文字数2605(内容「4」)を取得する。
一方、S2403で、プリンタドライバ501が文字列テーブル情報にコントロールIDが存在しないと判別した場合は、何もせずに処理を終了する。
そして、S2405では、プリンタドライバ501は、該コントロールに対応した最大表示文字数2605とUI文字列2604のUI表示文字数を比較する。
そして、プリンタドライバ501は、最大表示文字数2605よりUI文字列2604のUI表示文字数の方が大きいかどうかを判断する。ここで、プリンタドライバ501が最大表示文字数2605よりUI文字列2604のUI表示文字数の方が大きいと判断された場合には、S2406へ進む。
具体的には、プリンタドライバ501は、UI文字列である「部単位印刷」の場合、5文字から構成されるため、最大文字数「4」を超えると判断する。
そして、S2604で、プリンタドライバ501は、ツールチップを用いてすべてのUI文字列2604の文字列すべてを、置き換えられた文字列「部単位印」の近傍に、総文字数が5文字の「部単位印刷」をディスプレイ10にポップアップするように表示制御して、本処理を終了する。なお、本例は、言語が日本語の場合を示すが、仕向け地に応じて、表示する文字列の言語やその文字数や表示態様は本実施形態に限定されることはない。
図21は、図1に示したディスプレイ10に表示されるユーザインタフェースの一例を示す図である。
本例は、ツールチップにより、プリンタドライバ501で置き換えられたUI文字列が表示された印刷設定画面例である。
図21に示すように、本実施形態では、4文字目で切れている「部単位印刷」の表示がツールチップで全体が表示される。
一方、S2405にて、プリンタドライバ501が最大表示文字数2605よりUI文字列2604が小さいと判断した場合には、何もせずに本処理を終了する。
以上の手順により、アプリケーションのUI文字列で、プリンタドライバのUI文字列の置換えた際に、上述した文字列表示が切れる状態となる場合においても、置き換えた文字列を全て表示することができる。これにより、ユーザは、文字列を指示する操作を行うと、その機能文字列の内容を確認できる。
〔第3実施形態〕
以下では、アプリケーションの印刷設定画面の表示フローと、図5、図6に示したインタフェース関数を用いて、プリンタドライバの印刷設定画面の表示フローについて説明する。
本実施形態は、アプリケーション902のUI文字列で、プリンタドライバ501のUI文字列の置換えた際に、プリンタドライバの元のUI文字列と置き換えた文字列とを同時に表示させる例である。
図7に、アプリケーション902が自身で管理している印刷設定画面を表示する際のフローを示す。
なお、アプリケーション902のプログラムはコンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
アプリケーション902は、S1901で、プリンタデバイスの能力情報を取得するために、プリントチケットAPI505を通じて、PrintCapabilitiesを取得する。
具体的には、アプリケーション902は、図32に示すようなXML形式のPrintCapabilities をプリンタドライバ501より取得する。図32の例に示すPrintCapabilitiesには、Collate、Duplex、MediaSize、OutputBinの4つのFeatureが含まれる。また、それぞれのFeatureには、DisplayNameプロパティが指定されている例である。
その後、アプリケーション902は、図7に示したS1902にて、図8に示すような、機能名とそれに対応したUIの文字列テーブル情報1501を取得する。
図8に示すように、文字列テーブル情報1501には、機能名1502に応じたUI文字列1503、UIのコントロールID1504が格納されている。
そして、S1903で、アプリケーション902は、S1902にて取得した文字列テーブル情報1501を参照し、最初の機能の情報を取得する。
次に、S1904で、アプリケーション902は、S1903で文字列テーブル情報1501から取得した機能がS1901でプリンタドライバ501より取得したPrintCapabilities内に含まれる機能か否かを判別する。
ここで、アプリケーション902がS1903で取得した機能がプリンタドライバ501より取得したPrintCapabilities内に存在すると判別された場合には、S1905へ進む。そして、S1905で、アプリケーション902は、文字列テーブル情報1501内に格納されたFeature名に応じた文字列を用いて、アプリケーションUIをディスプレイ10に表示する。
次に、S1906で、アプリケーション902は、現在取得している機能情報が文字列テーブル情報1501の最後の項目であるか否かを判別し、最後であると判断されたら、本処理を終了する。
一方、S1905で、アプリケーション902が最後の項目でないと判別した場合は、S1908に進み、文字列テーブル情報1501内の次の項目を取得した後、S1904〜S1906までの処理を繰り返す。
一方、S1904にて、アプリケーション902がS1903で取得した機能がS1901でプリンタドライバ501より取得したPrintCapabilities内に存在しないと判別された場合には、S1907へ進む。そして、S1907で、アプリケーション902は、機能に対応したUIコントロールをUI画面上でグレイ表示(図中では、網掛けで示す)し、使用不可の機能として、ユーザに認知させる。
図9は、図7に示した表示制御処理により構成されたアプリケーションの印刷設定画面1201である。
図9において、用紙設定コントロール1202、両面設定コントロール1203、部単位印刷設定コントロール1205がそれぞれ文字列テーブル情報1501内のUI文字列で表示されている状態に対応する。また、プリンタドライバ501より取得したPrintCapabilitiesに含まれていないステイプル設定コントロール1206がグレイ表示されている状態に対応する。
アプリケーションの印刷設定画面1201には、さらにプリンタを選択するプリンタ選択コントロール1204、プリンタドライバの印刷設定画面を表示するためのプロパティボタン1207を含んで構成されている。さらに、アプリケーションの印刷設定画面1201には、印刷設定画面を確定させるOKボタン1208、キャンセルボタン1209を含んで構成されている。
次に、アプリケーションの印刷設定画面1201のプロパティボタン1207が押下され、アプリケーション902からプリンタドライバの印刷設定画面の表示を指示する処理について説明する。
図10は、アプリケーション902のプロパティボタン1207が押下された際に、アプリケーション902からプリンタドライバ501の印刷設定画面を表示させる指示を行う処理フローである。
なお、本フローに係わるアプリケーション902のプログラムは、コンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
S2001で、アプリケーション902は、印刷設定画面1201内の印刷設定に関わるコントロールの選択状態を取得する。次に、S2002で、アプリケーション902は、図7に示したS1901において、プリンタドライバ501より取得したPrintCapabilities内のFeature一覧のうち、S2001で状態を取得したコントロールに対応したFeatureを参照する。
次に、S2003では、アプリケーション902は、参照したFeatureのOptionの一覧の中で、選択状態の設定項目に対応した項目以外のOptionを削除する。
その結果、アプリケーション902は、図11に示すように、Featureに特定の設定項目のOptionのみが記述された状態のPrintTicket1401を生成する。
図11に示す例では、"Collate"Featureでは、"On"Optionが、"Duplex"Featureでは、"OFF"Optionがそれぞれ選択されている例である。
次に、S2004で、アプリケーション902は、文字列テーブル情報1501を取得する。そして、S2005で、アプリケーション902は、文字列テーブル情報1501内を参照して、現在のコントロールに関連する機能の文字列情報を取得し、ReplaceDisplayStringプロパティとしてPrintTicket1401に指定する。
図11の例では、"Collate"FeatureのReplaceDisplayStringプロパティとして、アプリケーションの文字列テーブル情報1501内のCollateに対応した文字列、"部単位印刷"が記述されている。
次に、S2006で、アプリケーション902は、S2001で参照した印刷設定のコントロールが最後の設定項目か否かを判別する。ここで、アプリケーション902がS2006で最後であると判定した場合、S2007へ進む。そして、S2007で、アプリケーション902は、図6に示すプリンタドライバの印刷設定画面を表示させる指示のためのAPIに、生成したPrintTicketを指定してプリンタドライバ501に印刷設定画面を表示させる指示を行う。
一方、S2007で、アプリケーション902が最後の設定項目でないと判定した場合には、S2001に戻り、次の印刷設定のコントロールの状態を取得して、全ての印刷設定コントロールが終了するまで、処理を繰り返す。
最終的には図6に示すAPIの引数pPrintTicketには、アプリケーションの印刷設定画面の状態が反映され、UI文字列がReplaceDisplayStringプロパティに記述された、図11に示すようなPrintTicketが指定される。
図22は、本実施形態を示す情報処理装置における第5のデータ処理手順の一例を示すフローチャートである。本例は、図9に示したプロパティボタン1207が押下された後のプリンタドライバ501側の印刷設定画面を表示する処理例である。
より具体的には、図5に示すCN_DrvDocumentPropertySheets関数の呼び出しにおいて、プリンタドライバに対しユーザインタフェースの表示が指示された場合の処理フローの一部である。
また、ユーザインタフェースの表示の指示は、図6に示したCN_DOCUMENTPROPERTYHEADER構造体のfModeメンバにDM_IN_PROMPTが設定された場合に相当する。
なお、S3201〜S3212は各ステップを示す。また、各ステップに係わるサブモジュール502のプログラムはコンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
S3201で、サブモジュール502は、S2007の印刷設定画面を表示する指示に応じた、プリンタドライバ側のコマンドを受信する。S3202では、サブモジュール502は、図6に示すAPIのpPrintTicketに指定されているPrintTicketをアプリケーション902より取得する。
次に、S3203で、サブモジュール502は、図23に示すようなプリンタドライバ内で保持している文字列テーブル情報2901を取得し、RAM2上中に展開する。
図23,図24は、本実施形態を示す情報処理装置のプリンタドライバが保持する文字列テーブル情報の一例を示す図である。
図23に示す文字列テーブル情報2901には、機能名2902とその機能に対応したUIのコントロールID2903、UI文字列2904、置換えフラグ2905、オリジナル文字列2906が関連付けられて格納されている。
次に、S3204では、サブモジュール502は、S3202でアプリケーション902より取得したPrintTicket内の最初のFeatureを参照する。そして、S3205で、サブモジュール502は、参照したFeature内にReplaceDisplayStringプロパティが存在するか否かを判別する。
ここで、サブモジュール502が」ReplaceDisplayStringがあると判断した場合には、S3206へ進む。そして、S3206で、サブモジュール502は、S3203で取得した文字列テーブル情報1601内で現在参照しているFeatureと一致する機能名を検索する。
そして、S3207で、サブモジュール502は、S3206による検索で、一致する機能名が存在するかどうかを判断する。ここで、サブモジュール502が一致する機能名が存在すると判断した場合、S3208に進む。そして、S3208で、サブモジュール502は、一致する機能名のUI文字列2903を、指定されたPrintTicket内のReplaceDisplayString文字列で置き換える。
一方、S3207で、サブモジュール502が一致した機能名が検索できないと判断した場合は、何もせずにS3210に進む。
次に、S3209で、サブモジュール502は、UI文字列を置き換えたことを示す図23に示す置換えフラグ2905をTRUEに設定する。次に、S3210では、サブモジュール502は、現在参照しているFeatureがPrintTicket内の最後のFeatureであるか否かを判別する。ここで、サブモジュール502が最後のFeatureであると判定された場合には、S3212へ進む。そして、S3212で、サブモジュール502は、UI文字列が置き換えられた、図24に示すような文字列テーブル情報3001のUI文字列3004に従って、UI画面をディスプレイ10に表示する。
この際、サブモジュール502は、文字列テーブル情報3001内の各機能に関連付けられたコントロールIDの文字列を置き換える。
図24に示す文字列テーブル情報3001では、機能名3002がCollateのUI文字列(ソート)3004が、"部単位印刷"に、MediaSizeのUI文字列(用紙名称)が"用紙"に、それぞれアプリケーションが指定した文字列に置き換えられる例を示している。なお、図24において、3003はコントロールIDを示し、3005は置換えフラグを示し、3006はオリジナル文字列を示す。
この結果、サブモジュール502は、図19のユーザインタフェースに示すようなアプリケーションの文字列に置き換えられた印刷設定画面をディスプレイ10に表示する。
図25は、本実施形態を示す情報処理装置における第5のデータ処理手順の一例を示すフローチャートである。本例は、サブモジュール502の印刷設定画面上のコントロールにマウスオーバーした際の処理例である。なお、S2801〜S2806は各ステップに係わるサブモジュール502のプログラムはコンピュータの外部メモリ11に記憶されており、RAM2に読み出されCPU1によって実行される。
まず、S2801で、サブモジュール502が、ユーザがポインティングデバイスを操作することに従い、図26に示すように、マウスが移動するマウスオーバイベントが発生したことを検出すると、S2802へ進む。
そして、S2802で、サブモジュール502は、マウスオーバイベントが発生したUIのコントロール情報を取得する。ここでは、図26に示すように機能を示す、例えば「用紙」の付近に移動したことを検出した場合であるので、「collate」が取得される。
次に、S2803では、サブモジュール502は、S2802で取得したコントロール情報のコントロールIDが文字列テーブル情報3001内に存在するか否かを判別する。ここで、サブモジュール502がS2803で文字列テーブル情報にコントロールIDが存在すると判別した場合は、S2804で文字列テーブル情報3001の置換えフラグ2905を取得する。
一方、サブモジュール502がS2803で文字列テーブル情報3001にコントロールIDが存在しないと判定した場合は、何もせずに処理を終了する。
次に、S2805では、サブモジュール502は、置換え文字列がTRUEであるか否かを文字列テーブル情報3001の置換えフラグ3005を参照して判断する。ここで、サブモジュール502が、置換えフラグ3005がTRUEであると判断した場合には、S2806にて、該コントロールのオリジナル文字列3005をツールチップによりディスプレイ10に表示する。
図26は、図1に示したディスプレイ10に表示されるユーザインタフェースの一例を示す図である。本例は、プリンタドライバの印刷設定画面例である。
図26に示すように、本実施形態では、ツールチップにより、アプリケーション902で置き換えられたUI文字列(部単位印刷)と共に元々のプリンタドライバ501の文字列(ソート)が、同一のUI画面上に表示される。しかも、部単位印刷とソートとが近接した位置関係を維持した状態で表示される。これにより、簡単な操作を行うだけでユーザはドライバUI画面上で、文字列を置き換える前と置き換えた後の状態を容易に視認できる。
一方、S2805にて、置換えフラグ3005がFALSEであるとサブモジュール502が判断した場合には、何もせずに、本処理を終了する。
以上の手順により、アプリケーションのUI文字列で、プリンタドライバのUI文字列の置換えた際に、プリンタドライバの元のUI文字列を同時に表示させることが可能となる。
なお、第2実施形態と第3実施形態による表示制御を有効とするモードを備えて、初期設定される当該モードに応じて、文字列の表示制御を切り換えるように構成してもよい。
また、コマンドキー等の操作を行うことで、機能文字列の表示制御を第2実施形態に示す表示制御から第3実施形態に示す表示制御に切り換え可能に構成してもよい。この際、いずれの表示を優先させるかは、初期設定で決定される表示制御から他の表示制御に切り換えるものとする。
〔第4実施形態〕
以下、図27に示すメモリマップを参照して本発明に係る情報処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
図27は、本発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図7B、図10、図12、図20、図22、図25に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVDなどを用いることができる。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバやftpサーバ等も本発明の請求項に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではない。例えばそのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行う。そして、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込ませる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施形態の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。