次に、本発明の実施形態について一例を挙げて説明する。
[システム全体の構成]
図1は、パーソナルコンピュータ1(以下、PC1という)と、このPC1に接続されたプリンタ2とを備えたシステムの概略構成を示すブロック図である。
このシステム内に含まれるPC1は、本発明でいう情報処理装置に相当し、このPC1上で機能するアプリケーションおよびプリンタドライバが連携して、PC1からプリンタ2へ印刷データを送信する処理を実行するように構成された印刷処理システムとして機能するようになっている。
このシステムの内、PC1は、図1に示すように、CPU11、ROM12、RAM13、ハードディスク装置14(以下、HDD14という)、操作部15、表示部16、およびUSB(Universal Serial Bus)インターフェース17(以下、USB I/F17という)などを備えている。
CPU11は、ROM12やRAM13に記憶されたプログラムに従って、PC1各部に対する制御および各種演算を実行する装置で、後述するアプリケーションとしての処理やプリンタドライバとしての処理は、このCPU11によって実行される。
ROM12は、PC1の電源スイッチを切っても記憶内容を保持可能な記憶装置で、BIOS(Basic Input Output System)や通常であれば更新されない読み出し用のデータ等を記憶している。
RAM13は、CPU11から直接アクセスされるメインメモリ等として利用される記憶装置である。このRAM13には、OS(Operating System)や各種アプリケーションなどのソフトウェアがHDD14から読み込まれ、また、CPU11による各種演算の結果やHDD14から読み込まれたデータもRAM13に記憶されるようになっている。後述するアプリケーションとしての処理やプリンタドライバとしての処理を実行する際には、各処理をCPU11に実行させるためのプログラム(アプリケーションプログラムやプリンタドライバプログラム)がHDD14からRAM13に読み込まれ、RAM13に記憶されたプログラムに従って、CPU11が各処理を実行することになる。
HDD14は、OS、各種アプリケーションプログラム、および各種データファイルを保存しておくための装置で、上記アプリケーションプログラムやプリンタドライバプログラムもHDD14に保存されている。
操作部15は、利用者からの各種指示を入力するための入力装置であり、例えば、キーボードや各種ポインティングデバイス(例えば、マウス)等によって構成される。
表示部16は、各種情報を利用者に提示するための出力装置であり、例えば、カラー画像を表示可能な液晶ディスプレイ等によって構成される。
USB I/F17は、プリンタおよびその他の周辺機器を接続可能なシリアルインターフェースである。
なお、本実施形態において、PC1には、マルチタスク機能を備えたOSが搭載され、複数のプロセスが並列に機能するとともに、それら複数のプロセスが連携して各種処理を実行するようになっている。本発明の印刷処理システムを構成するアプリケーションおよびプリンタドライバも、それぞれがOSの制御下で機能する1または2以上のプロセスにより構成され、それらアプリケーションのプロセスおよびプリンタドライバのプロセスが連携して、PC1からプリンタ2へ印刷データを送信する処理を実行する。また、PC1に搭載されたOSは、マルチウィンドウ機能を備え、後述するアプリケーションおよびプリンタドライバは、それぞれのUIとなるウィンドウをOSの制御下で表示するようになっている。以上のような機能を有するOSの具体例としては、Windows(登録商標)、MacOS(登録商標)などを挙げることができる。この種のOSが備える各種機能そのものは公知なので、ここでの詳細な説明は省略するが、以下の説明においては、PC1が、上記のようなOSによって提供される各種機能を有するとの前提で説明を続ける。
プリンタ2は、CPU21、ROM22、RAM23、HDD24、操作キー25、表示パネル26、USB I/F27、印字部29などを備えている。
CPU21は、ROM22に記憶されている制御プログラムに従ってプリンタ2各部の制御および各種演算を実行する装置である。
ROM22は、プリンタ2の電源スイッチを切っても記憶内容を保持可能な記憶装置で、上記制御プログラムの他、通常であれば更新されない読み出し用の各種データを記憶している。
RAM23は、CPU21から直接アクセスされるメインメモリ等として利用される記憶装置で、CPU21が処理中に算出する各種データなどが一時的にRAM23に記憶されるようになっている。
HDD24は、RAM23だけでは記憶しきれない大きなサイズのデータを記憶するための記憶装置である。
操作キー25は、利用者がマニュアル操作でプリンタ2に対して指令を与える場合に操作する入力装置である。
表示パネル26は、小型液晶ディスプレイによって構成された装置で、プリンタ2の設定や状態などの情報を表示できるようになっている。
USB I/F27は、PCを接続可能なシリアルインターフェースである。
印字部29は、シート状の媒体(例えば記録用紙)を給紙部から排紙部へと搬送する搬送機構、この搬送機構による搬送経路の途中で前記媒体に対して画像を記録する記録機構などによって構成される。
[印刷処理システムが備えるUIの概要]
次に、PC1上で機能する印刷処理システムが備えるUIの概要について、図2〜図4に基づいて説明する。
図2は、PC1の表示部16に表示される画面(アプリケーションのウィンドウ、およびプリンタドライバのダイアログ)の遷移と、画面遷移の契機となるイベントないし操作とを併記した説明図である。また、図3は、アプリケーションのウィンドウ内に表示されるメニューを例示した説明図、図4は、プリンタドライバの表示するダイアログボックスを例示した説明図である。
以下の説明においては、ポインティングデバイスとしてマウスを使用するものとし、マウスのボタンを押す操作をマウスDown操作、マウスのボタンを放す操作をマウスUp操作と呼ぶ。また、マウスDown操作後にマウスUp操作をしないままマウスカーソルを移動させる操作をマウスDrag操作と呼ぶ。さらに、短時間で続けてマウスDown操作およびマウスUp操作を行うことをクリック操作と呼ぶ。なお、周知の通り、一般に、PCにおける各種マウス操作は、キーボード等、他の入力デバイスを使っても同等な代替操作を実現できるように構成されていることが多く、本実施形態においても、上記マウスDown操作、マウスUp操作、マウスDrag操作、クリック操作がなされたとPC1が認識するような代替操作を、他の入力デバイスを使って実施できる。ただし、他の入力デバイスで代替操作ができること自体は本発明の要部ではなく、また、他の入力デバイスによる代替操作をすべて説明すると煩雑になるので、以下の説明においては、マウスによる操作のみを説明し、他の入力デバイスによる代替操作については、その具体的な説明を省略する。
さて、図2に示した各画面は、図中左上にあるアプリケーションメイン画面を起点として遷移するもので、このアプリケーションメイン画面は、PC1においてアプリケーションを起動した際、アプリケーションがPC1の表示部16に表示する。
このアプリケーションメイン画面内においては、利用者が「File」メニュー選択操作を行うことにより、アプリケーションが表示する画面を、図2中に示した<メニュー1>へと遷移させることができる。より詳しくは、図3(a)に示すように、PC1の表示部16には、マウス操作に応じて移動するマウスカーソル31や、メニューバー32を備えたアプリケーションメイン画面が表示されている。ここで、利用者がマウスを操作してマウスカーソル31でメニューバー32の中にある「File」33をポイントし、マウスDown操作を行った場合に、「File」メニュー選択操作を行ったことになる。そして、この「File」メニュー選択操作が行われると、PC1の表示部16には「File」メニュー34が表示され、その結果、図2中に示した<メニュー1>へ遷移したことになる。この「File」メニュー34の中には、「Print」35が他の項目とともに表示される。
次に、この状態で、利用者がマウスDrag操作を行うことにより、アプリケーションが表示する画面を、図2中に示した<メニュー1>から<メニュー2>へと遷移させることができる。より詳しくは、図3(b)に示すように、上記「File」メニュー選択操作に相当するマウスDown操作に引き続いて、利用者がマウスDrag操作を行って、マウスカーソル31を「File」メニュー34内へと移動させると、「File」メニュー34内にはマウスカーソル31に追従して移動するフォーカス36が現れ、このフォーカス36を「Print」35へと移動させると、「Print」35の隣に「Print」サブメニュー37が表示され、その結果、図2中に示した<メニュー2>へ遷移したことになる。この「Print」サブメニュー37の中には、「Base」38、「Advanced」39、および「Page Setup」40といった項目が表示される。これら「Print」サブメニュー37内の各項目は、後述する印刷設定ダイアログボックス内に、どのようなサブページがあるのかを示している。なお、詳しくは後述するが、ここで表示される「Base」、「Advanced」、および「Page Setup」といった文字列は、プリンタドライバがレジストリに登録した情報であるが、その情報をアプリケーションがレジストリから取得して、「Print」サブメニュー37の中に表示している。
次に、この状態で、利用者が引き続きマウスDrag操作を行うことにより、アプリケーションが表示する画面を、図2中に示した<メニュー2>から<メニュー3>へと遷移させることができる。より詳しくは、図3(c)に示すように、利用者が既に行っているマウスDrag操作を継続して、マウスカーソル31を「Print」サブメニュー37内へと移動させると、「Print」サブメニュー37内にはマウスカーソル31に追従して移動するフォーカス41が現れ、このフォーカス41を「Base」38へと移動させると、「Base」38の隣に「Base」サブメニュー42が表示され、その結果、図2中に示した<メニュー3>へ遷移したことになる。この「Base」サブメニュー42の中には、「Print Quality」、および「Media Type」といった項目が表示される。これら「Base」サブメニュー42内の各項目は、後述する印刷設定ダイアログボックス内にある「Base」サブページに、どのような設定項目があるのかを示している。なお、ここで表示される「Print Quality」、および「Media Type」といった文字列も、先に説明した「Print」サブメニュー37内の文字列と同様、プリンタドライバがレジストリに登録した情報であるが、その情報をアプリケーションがレジストリから取得して、「Base」サブメニュー42の中に表示している。
次に、この状態で、利用者が引き続きマウスDrag操作を行うことにより、アプリケーションが表示する画面を、図2中に示した<メニュー3>から<メニュー4>へと遷移させることができる。より詳しくは、図3(d)に示すように、利用者が既に行っているマウスDrag操作を継続して、フォーカス41を「Advanced」39へと移動させると、「Advanced」39の隣に「Advanced」サブメニュー43が表示され、その結果、図2中に示した<メニュー4>へ遷移したことになる。この「Advanced」サブメニュー43の中には、「Toner Save Mode」、および「Sleep Time」といった項目が表示される。これら「Advanced」サブメニュー43内の各項目は、後述する印刷設定ダイアログボックス内にある「Advanced」サブページに、どのような設定項目があるのかを示している。なお、ここで表示される「Toner Save Mode」、および「Sleep Time」といった文字列も、先に説明した「Print」サブメニュー37、あるいは「Base」サブメニュー42内の文字列と同様、プリンタドライバがレジストリに登録した情報であるが、その情報をアプリケーションがレジストリから取得して、「Advanced」サブメニュー43の中に表示している。
さらに、この状態で、利用者が引き続きマウスDrag操作を行うことにより、アプリケーションが表示する画面を、図2中に示した<メニュー4>から<メニュー5>へと遷移させることができる。より詳しくは、図3(e)に示すように、利用者が既に行っているマウスDrag操作を継続して、フォーカス41を「Page Setup」40へと移動させると、「Page Setup」40の隣に「Page Setup」サブメニュー44が表示され、その結果、図2中に示した<メニュー5>へ遷移したことになる。この「Page Setup」サブメニュー44の中には、「Page Size」、「Orientation」、および「Scaling」といった項目が表示される。これら「Page Setup」サブメニュー44内の各項目は、後述する印刷設定ダイアログボックス内にある「Page Setup」サブページに、どのような設定項目があるのかを示している。なお、ここで表示される「Page Size」、「Orientation」、および「Scaling」といった文字列も、先に説明した「Print」サブメニュー37、「Base」サブメニュー42、あるいは「Advanced」サブメニュー43内の文字列と同様、プリンタドライバがレジストリに登録した情報であるが、その情報をアプリケーションがレジストリから取得して、「Page Setup」サブメニュー44の中に表示している。
以上のような<メニュー1>から<メニュー5>に至る画面遷移は、利用者が既に行っているマウスDrag操作を継続する限り続くことになり、その中で<メニュー3>、<メニュー4>、または<メニュー5>への画面遷移が発生すると、各画面遷移が発生する毎に「Base」サブメニュー42、「Advanced」サブメニュー43、または「Page Setup」サブメニュー44のいずれかが表示されることになる。
一方、アプリケーションの表示する画面が<メニュー3>、<メニュー4>、または<メニュー5>へ遷移したところで、マウスDrag操作を行っていた利用者がマウスUp操作を行うと、その場合は、「Base」38、「Advanced」39、または「Page Setup」40の選択操作が確定したことになる。これら「Base」38、「Advanced」39、および「Page Setup」40は、いずれもプリンタドライバに対して印刷設定ダイアログボックス51の表示を指令するために用意された印刷指令項目のサブメニューであり、これらいずれかの選択操作が確定した場合、その時点で、アプリケーションはプリンタドライバに対してダイアログの表示を指令し、この指令を受けたプリンタドライバは、図4(a)〜同図(c)に示す印刷設定ダイアログボックス51を表示する。また、このとき、アプリケーションが表示する画面においては、「File」メニュー34以降の階層型メニュー全体(図3に示した例では、「File」メニュー34および「Print」サブメニュー37)が消去される。
プリンタドライバが表示する印刷設定ダイアログボックス51内には、「Base」サブページ52、「Advanced」サブページ53、「Page Setup」サブページ54、Cancelボタン55、およびPrintボタン56などが設けられている。そして、「Base」サブページ52、「Advanced」サブページ53、および「Page Setup」サブページ54には、図4(a)〜同図(c)に示すように、類似した機能毎にグループ分けされた設定項目について、各設定項目の設定値を入力ないし選択するための各種コントロールが設けられている。
ただし、「Base」サブページ52、「Advanced」サブページ53、および「Page Setup」サブページ54は重ねて表示されるようになっており、いずれか1つのサブページだけが利用者側から見て最も手前に重なるように表示される。詳しくは後述する処理の説明の中でも触れるが、どのサブページを最も手前に重なるように表示すべきかは、アプリケーション側で指定し、プリンタドライバは、アプリケーションから指定されたサブページを最も手前に重ねて表示する。
図2中に示した<メニュー3>へ遷移したところで、マウスDrag操作を行っていた利用者がマウスUp操作を行った場合、アプリケーションは「Base」サブページ52を指定して、印刷設定ダイアログボックス51の表示を指令する。これは、フォーカス41が移動した「Base」38に対応するサブページが、「Base」サブページ52となっているからである。その結果、印刷設定ダイアログボックス51は、「Base」サブページ52が利用者側から見て最も手前に重なるように表示されることになる。
また、図2中に示した<メニュー4>へ遷移したところで、マウスDrag操作を行っていた利用者がマウスUp操作を行った場合、アプリケーションは「Advanced」サブページ53を指定して、印刷設定ダイアログボックス51の表示を指令する。これは、フォーカス41が移動した「Advanced」39に対応するサブページが、「Advanced」サブページ53となっているからである。その結果、印刷設定ダイアログボックス51は、「Advanced」サブページ53が利用者側から見て最も手前に重なるように表示されることになる。
さらに、図2中に示した<メニュー5>へ遷移したところで、マウスDrag操作を行っていた利用者がマウスUp操作を行った場合、アプリケーションは「Page Setup」サブページ54を指定して、印刷設定ダイアログボックス51の表示を指令する。これは、フォーカス41が移動した「Page Setup」40に対応するサブページが、「Page Setup」サブページ54となっているからである。その結果、印刷設定ダイアログボックス51は、「Base」サブページ52が利用者側から見て最も手前に重なるように表示されることになる。
なお、以下の説明では、図4(a)に示すように「Base」サブページ52が利用者側から見て最も手前に重なるように表示された状態を<ダイアログ1>、図4(b)に示すように「Advanced」サブページ53が利用者側から見て最も手前に重なるように表示された状態を<ダイアログ2>、図4(c)に示すように「Page Setup」サブページ54が利用者側から見て最も手前に重なるように表示された状態を<ダイアログ3>と呼ぶ。
印刷設定ダイアログボックス51が表示された場合、印刷設定ダイアログボックス51内での各種操作を行うことができる。例えば、利用者が印刷設定ダイアログボックス51内にある「Base」サブページ52、「Advanced」サブページ53、または「Page Setup」サブページ54のいずれかを選択する操作(=各サブページの上部にあるタブをマウスでクリックする操作)を行えば、印刷設定ダイアログボックス51の表示内容を、<ダイアログ1>、<ダイアログ2>、または<ダイアログ3>のいずれかへ切り替えることができる。また、各サブページ内に設けられた各種コントロールへの入力操作により、利用者が所望の印刷設定を行ったら、印刷設定ダイアログボックス51内にあるPrintボタン56をクリックすることにより、プリンタ2への印刷出力を指令することができる。こうしてプリンタ2への印刷出力が指令された場合、従来技術と同様に、アプリケーションおよびプリンタドライバは、連携してPC1からプリンタ2へ印刷データを送信する処理を実行する。また、このとき、プリンタドライバは、印刷設定ダイアログボックス51を消去する。なお、アプリケーションが表示するアプリケーションメイン画面は、PC1の表示部16に残されることになる。
ちなみに、<メニュー2>へ遷移した後、その時点で利用者がマウスUp操作を行った場合、アプリケーションが表示する画面においては、「File」メニュー34以降の階層型メニュー全体(図3に示した例では、「File」メニュー34および「Print」サブメニュー37)が消去され、プリンタドライバは<ダイアログ1>を表示する。つまり、<ダイアログ1>を表示させたい場合に限り、<メニュー2>へ遷移した後に、直ちにマウスUp操作を行ってもよい。ただし、<メニュー2>へ遷移した後に、直ちにマウスUp操作を行った場合、上述の「Base」サブメニュー42、「Advanced」サブメニュー43、および「Page Setup」サブメニュー44の表示は行われず、この挙動は、従来技術においてアプリケーションからプリンタドライバのUIを呼び出す場合と同じ挙動になる。
[アプリケーションおよびプリンタドライバが実行する処理]
次に、上記のような画面遷移を伴うUIを実現するためにアプリケーションおよびプリンタドライバが実行する処理について、図5および図6のフローチャートに基づいて説明する。図5に示す処理は、PC1において、利用者が所定の操作を行ってアプリケーションを起動した際に、アプリケーションのプロセスとして実行される処理であり、以下の説明においては、アプリケーション処理と称する。また、図6は、アプリケーション処理の中でプリンタドライバに対して印刷設定ダイアログの表示が指令された際に、プリンタドライバのプロセスとして実行される処理であり、以下の説明においては、プリンタドライバ処理と称する。
アプリケーション処理を開始すると、図5に示すように、PC1は、まず、デフォルトプリンタドライバの情報を取得する(S101)。デフォルトプリンタドライバの情報は、そのプリンタドライバをPC1にインストールした際に、PC1のレジストリに登録されており、S101の処理では、デフォルトプリンタドライバの情報をレジストリから取得する。ここで取得されるデフォルトプリンタドライバの情報は、図7(a)に示すような情報群である。これらの情報の内、「Printサブメニュー表示構成」は、上述した「Print」サブメニュー37の中に選択肢として表示される情報であり、これは、印刷設定ダイアログボックス51内にある3つのサブページを示す情報でもある。また、「印刷設定ダイアログ処理モジュールポインタ」および「印刷実行処理モジュールポインタ」は、プリンタドライバ内に含まれる「印刷設定ダイアログ処理モジュール」、「印刷実行処理モジュール」へのポインタで、後述する処理の中では、これらのポインタが示すアドレスを指定して各処理モジュールを呼び出すことにより、プリンタドライバに対して各処理の実行を指令することになる。
続いて、PC1は、S101の処理で取得した「Printサブメニュー表示構成」に基づいて、「Print」メニューのツリー構造を設定する(S103)。図7(a)に例示した「Printサブメニュー表示構成」の場合、階層構造が2階層で、各階層内には2つないし3つの選択肢が含まれているので、アプリケーションが表示する「Print」メニューの構造も、1階層目となる「Print」サブメニュー37と、2階層目となる「Base」サブメニュー42、「Advanced」サブメニュー43、および「Page Setup」サブメニュー44が用意され、各階層内に2つ〜3つの選択肢(「Print」サブメニュー37内には、「Base」38、「Advanced」39、および「Page Setup」40、「Base」サブメニュー42内には、「Print Quality」、および「Media Type」、「Advanced」サブメニュー43内には、「Toner Save Mode」、および「Sleep Time」、「Page Setup」サブメニュー44内には、「Page Size」、「Orientation」、および「Scaling」)が用意される。
次に、PC1は、「File」メニューの選択イベントがあるか否かを判断し(S105)、「File」メニューの選択イベントがない場合は(S105:NO)、その他の処理を実行し(S107)、S105の処理へと戻る。このS105〜S107のループ処理の中で、「File」メニューの選択イベントがあった場合は(S105:YES)、S109の処理へと移行する。「File」メニューの選択イベントは、上述の「File」メニュー選択操作に相当するマウスDown操作によって発生し、マウスDown操作に伴うイベントが発生したことは、OSによって検出されてアプリケーションに通知される。なお、S107の処理(その他の処理)は、「File」メニューの選択イベントがない場合に実行される様々な処理を包含しており、このS107の処理の中で、さらに様々な別のイベントに対応する処理が実行される。ただし、それらの処理は本発明の要部には関連しない処理となるので、以下、本発明の要部に関連しない処理は、すべて「その他の処理」とのみ説明し、その詳細な説明を省略することにする。
さて、S109の処理へ移行すると、PC1は、「File」メニュー34を表示して(S109)、「Print」メニューの選択イベントがあるか否かを判断し(S111)、「Print」メニューの選択イベントがない場合は(S111:NO)、その他の処理を実行し(S113)、S111の処理へと戻る。このS111〜S113のループ処理の中で、「Print」メニューの選択イベントがあった場合は(S111:YES)、S115の処理へと移行する。「Print」メニューの選択イベントは、上述のフォーカス36を「Print」35へと移動させる操作に相当するマウスDrag操作によって発生し、マウスDrag操作に伴うイベントが発生したことは、OSによって検出されてアプリケーションに通知される。
S115の処理へ移行すると、PC1は、「Print」35をフォーカスして、第1サブメニュー(本実施形態の場合、「Print」サブメニュー37)を表示して(S115)、第1サブメニューの選択イベントがあるか否かを判断し(S117)、第1サブメニューの選択イベントがない場合は(S117:NO)、その他の処理を実行し(S119)、S117の処理へと戻る。このS117〜S119のループ処理の中で、第1サブメニューの選択イベントがあった場合は(S117:YES)、S121の処理へと移行する。第1サブメニューの選択イベントは、上述のフォーカス41を「Base」38、「Advanced」39、または「Page Setup」40のいずれかへと移動させる操作に相当するマウスDrag操作によって発生し、マウスDrag操作に伴うイベントが発生したことは、OSによって検出されてアプリケーションに通知される。なお、上述のフォーカス41を「Base」38、「Advanced」39、または「Page Setup」40のいずれかへと移動させる操作が行われる前の段階で、マウスUp操作が行われることにより、マウスDrag操作が中断されると、S119の処理へ移行する。この場合、S119の処理の中では、印刷設定ダイアログボックス51の表示を行う処理が行われることになるが、既に説明した通り、後述する第2サブメニューの表示を行うことなく印刷設定ダイアログボックス51の表示を行う処理自体は、従来技術と差異がない処理になるので、詳細な説明は省略する。
さて、S121の処理へ移行すると、PC1は、第1サブメニュー(=「Base」38、「Advanced」39、または「Page Setup」40のいずれか)をフォーカスして、第2サブメニュー(本実施形態の場合、「Base」サブメニュー42、「Advanced」サブメニュー43、または「Page Setup」サブメニュー44のいずれか)を表示する(S121)。
続いて、PC1は、第1サブメニューの決定イベントがあるか否かを判断し(S125)、第1サブメニューの決定イベントがない場合は(S125:NO)、引き続いて、サブメニューの選択が外れたか否かを判断する(S127)。そして、サブメニューの選択が外れていない場合は(S127:NO)、その他の処理を実行し(S129)、S125の処理へと戻る。このS125〜S129のループ処理の中で、第1サブメニューの決定イベントがあった場合は(S125:YES)、S131の処理へと移行する。第1サブメニューの決定イベントは、上述のフォーカス41を「Base」38、「Advanced」39、または「Page Setup」40のいずれかへと移動させた後のマウスUp操作によって発生し、マウスUp操作に伴うイベントが発生したことは、OSによって検出されてアプリケーションに通知される。
S131の処理へ移行すると、PC1は、メニュー表示を終了して、タブ(ページ)選択番号を設定する(S131)。このS131の処理は、後述するS133の処理で引数となる値を設定する処理で、ここで設定されるタブ(ページ)選択番号は、フォーカス41が「Base」38へ移動している場合は「1」、「Advanced」39へ移動している場合は「2」、「Page Setup」40へ移動している場合は「3」とされる。これらのタブ(ページ)選択番号「1」〜「3」は、プリンタドライバ側で規定した値であるが、その値は、S101の処理によってレジストリから取得した「Printサブメニュー表示構成」の中に含まれているので、プリンタドライバ側と整合する適切な値をアプリケーション側でも使用することができる。
続いて、PC1は、印刷設定ダイアログ処理を実行する(S133)。このS133の処理では、具体的には、S101の処理によってレジストリから取得した「印刷設定ダイアログ処理モジュールポインタ」が示す処理モジュールを呼び出すことにより、プリンタドライバに対して、印刷設定ダイアログボックス51の表示を指令する。このとき、アプリケーションからプリンタドライバへは、図7(b)に示す引数が渡される。この引数は、S131の処理で設定したタブ(ページ)選択番号であり、表示させるべきサブページに応じて「1」〜「3」のいずれかとなる。
なお、S133の処理を実行することにより、このアプリケーション処理と並行してプリンタドライバ処理(図6参照)が実行され、これにより、印刷設定ダイアログボックス51の表示が行われることになるが、プリンタドライバ処理の詳細については後述することにする。
さて、S133の処理を実行した後、PC1は、プリンタドライバ側の処理終了を待って、その返り値のチェックを行う(S135)。ここで、プリンタドライバ側からは、利用者の操作に応じて異なる返り値がアプリケーション側に返される。具体的には、後から詳述するプリンタドライバ処理で、図4(a)〜同図(c)のいずれかに示す印刷設定ダイアログボックス51を表示した後、利用者の操作により、Cancelボタン55がクリックされた場合には、プリンタドライバ側からアプリケーション側へ返り値0が返される。一方、利用者の操作により、Printボタン56がクリックされた場合には、プリンタドライバ側からアプリケーション側へ返り値1が返される。
S133の処理において、返り値が1であった場合(S135:=1)、これは利用者から印刷処理の実行が指令されたことを意味するので、その場合は、印刷実行処理を実行する(S137)。このS137の処理では、具体的には、S101の処理によってレジストリから取得した「印刷実行処理モジュールポインタ」が示す処理モジュールを呼び出すことにより、プリンタドライバに対して印刷実行を指令する。
なお、指令を受けたプリンタドライバ側では、アプリケーション側からの出力データ、およびプリンタドライバが表示した印刷設定ダイアログボックス51での設定に基づいて、プリンタ2での印刷出力に必要な印刷データを生成する処理、その印刷データをスプーラ経由でプリンタ2へと送出する処理などが行われるが、これら一連の処理は、従来技術と差異のない処理になるので、図示および詳細な説明を省略する。
こうしてS137の処理を終えたら、S105の処理へと戻ることにより、再びS105以降の処理を繰り返すことになる。
一方、上記S133の処理において、返り値が0であった場合は(S135:=0)、これは利用者から印刷処理のキャンセルが指令されたことを意味するので、その場合は、S137の処理をスキップして、そのままS105の処理へと戻ることにより、再びS105以降の処理を繰り返すことになる。
ところで、上述したS125〜S129のループ処理の中では、サブメニューの選択が外れたと判断されることもある(S127:YES)。この場合、PC1は、第1サブメニューのフォーカスをやめて、第2サブメニューを消す(S139)。そして、その他の処理を実行し(S141)、S117の処理へと戻る。このS141の処理では、マウスカーソル31の位置に応じて、さらに不要なメニューや不要なフォーカスを消去する処理なども行われる。
つまり、S117の処理へと戻る前に、S139〜S141の処理により、マウスカーソル31が外れた不要なメニューや不要なフォーカスは消去されることになる。ただし、第1サブメニューの選択が外れたのに伴って、別の第1サブメニューが選択されていれば、S117の処理で肯定判断がなされ、その結果、再び別の第1サブメニューに対応する第2サブメニューが表示されるので、この場合、利用者からは、第2サブメニューが切り替わったように見えることになる。なお、第1サブメニューの選択が外れた際、別の第1サブメニューも選択されていなければ、S117の処理で否定判断がなされるので、その場合、利用者からは、第2サブメニューの表示が終了したように見える。
次に、以上説明したようなアプリケーション処理において、S133の処理によってプリンタドライバが呼び出されたときに、プリンタドライバが実行するプリンタドライバ処理について、図6のフローチャートに基づいて説明する。
プリンタドライバ処理を開始すると、図6に示すように、PC1は、まず、アプリケーション側から引数として渡されたタブ番号により、表示ページ(=利用者側から見て最も手前側に重ねて表示されるページ)を確定する(S203)。そして、その表示ページ中に設けられたコントロール(例えば、リストボックス、チェックボックス、テキストボックス、ラジオボタン等)に設定項目の値をセットして(S205)、印刷設定ダイアログボックス51を表示する(S207)。このS207の処理により、PC1の表示部16には印刷設定ダイアログボックス51が表示されることになる。
S207の処理を実行したら、続いて、PC1は、印刷設定ダイアログボックス51内のコントロールに対する操作がなされたか否かを判断し(S211)、コントロール操作がない場合は(S211:NO)、S211の処理へと戻り、このS211のループ処理により、利用者がコントロールの操作を行うまで待機する。
そして、このS211のループ処理の中で、利用者がコントロールの操作を行った場合(S211:YES)、PC1は、ダイアログ終了か否かを判断する(S213)。このS213の処理では、印刷設定ダイアログボックス51中にあるコントロールの内、Cancelボタン55またはPrintボタン56がクリックされていた場合に、ダイアログ終了と判断し、他のコントロールに対する操作が行われていた場合には、ダイアログ終了ではないと判断する。
S213の処理においてダイアログ終了ではないと判断した場合(S213:NO)、PC1は、各コントロールの状態を変更し(S215)、S211の処理へと戻ることにより、引き続きコントロール操作を受け付ける。これにより、S213の処理においてダイアログ終了ではないと判断され続ける限り、S211〜S215のループ処理が何度でも繰り返されることになり、印刷設定ダイアログボックス51中にある複数のコントロールに関し、利用者が任意に行う操作を何回でも受け付けることになる。
一方、S213の処理においてダイアログ終了と判断した場合(S213:YES)、PC1は、利用者から印刷が指令されたか否かを判断する(S217)。このS217の処理では、印刷設定ダイアログボックス51中にあるコントロールの内、Cancelボタン55がクリックされていた場合に印刷が指令されたと判断し、Printボタン56がクリックされていた場合に印刷は指令されていないと判断する。
S217の処理において印刷が指令されたと判断した場合(S217:YES)、PC1は、コントロールの状態を各設定項目に保存する(S219)。このS219の処理により、コントロール操作によって印刷設定ダイアログボックス51内でのみ表示上変更されていた各種設定値は、各設定値毎に決められた記憶領域(例えば、レジストリ、あるいは、今回分の印刷処理を実行するための一時記憶領域)に保存されることになる。なお、ここで保存された値は、例えば、上記S137の処理でアプリケーションからプリンタドライバに対して印刷実行が指令された際にプリンタドライバが参照することになる。
そして、S219の処理を終えたら、アプリケーションに返す返り値として1をセットして(S221)、印刷設定ダイアログボックス51を閉じて(S223)、プリンタドライバ処理を終了する。
一方、S217の処理において印刷は指令されていないと判断した場合(S217:NO)、PC1は、アプリケーションに返す返り値として0をセットして(S225)、上記S223の処理へと移行することにより、印刷設定ダイアログボックス51を閉じて(S223)、プリンタドライバ処理を終了する。すなわち、S217の処理において印刷は指令されていないと判断した場合は、S219の処理に相当する処理を実行せず、S221の処理とは異なる返り値をセットして、プリンタドライバ処理を終了する。この場合、コントロール操作によって印刷設定ダイアログボックス51内で表示上変更されていた各種設定値が仮にあったとしても、それらの設定値は各設定値毎に決められた記憶領域には保存されず、印刷設定ダイアログボックス51内での設定変更は行われなかったことになる。
以上説明したようなプリンタドライバ処理、および先に説明したアプリケーション処理の双方が、PC1によって実行され、その結果、PC1の表示部16に表示される画面(アプリケーションのウィンドウ、およびプリンタドライバのダイアログ)は、図2に示したように遷移することになる。
[効果]
以上説明した通り、上記PC1によれば、アプリケーションが表示するメニュー(より具体的には、「Print」サブメニュー37)上においてフォーカスを移動させる操作を行うだけで、プリンタドライバがダイアログボックス内に表示する情報の少なくとも一部に相当するダイアログ内情報(より具体的には、「Base」38、「Advanced」39、および「Page Setup」40といったダイアログ内のサブページ情報や、「Print Quality」、「Media Type」、「Toner Save Mode」、「Sleep Time」、「Page Size」、「Orientation」、および「Scaling」といったダイアログ内の設定項目情報)を、メニューの一部として表示することができる。
したがって、印刷設定ダイアログボックス51を表示した後にしかダイアログ内情報を見ることができなかった従来技術とは異なり、利用者は、プリンタドライバに印刷設定ダイアログボックス51を表示させるための操作を行う前に、メニュー上でのフォーカス移動操作によってダイアログ内情報(どのようなサブページ(グループ)があるのか、どのような設定項目があるのか、あるいは、どの設定項目がどのサブページ(グループ)に属するのか等)を確認し、印刷設定ダイアログボックス51の表示が必要かどうかを判断することができる。
また、上記PC1によれば、利用者が所望のグループ(「Base」38、「Advanced」39、または「Page Setup」40のいずれか)を選択すれば、そのグループに属する設定項目を含むサブページが初期表示内容となる印刷設定ダイアログボックス51が表示されるので、メニュー上での操作によって、簡単に所望の設定項目に辿り着くことができる。
[変形例等]
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
例えば、上記実施形態においては、メニュー上の項目へフォーカスを移動させる操作をマウスDrag操作とし、フォーカスが移動した項目の選択を決定(確定)する操作をマウスUp操作としていたが、各操作を別の操作に対応づけてもよい。具体的には、例えば、メニュー上の項目へフォーカスを移動させる操作を、マウスDown操作を行わないままマウスカーソルを移動させる操作として、フォーカスが移動した項目の選択を決定(確定)する操作をクリック操作としてもよい。この場合でも、メニュー上の項目へフォーカスを移動させる操作を行うだけで、上述の実施形態同様、印刷設定ダイアログボックス51が仮表示されるので、このような仮表示が行われない従来技術とは異なり、印刷設定ダイアログボックス51内にある所望のサブページへのアクセスが容易になる。
また、上記実施形態では、「File」メニュー34内にある「Print」35が、PC1のデフォルトプリンタに対応づけられている場合について説明したが、「Print」35が複数のプリンタに対応していて、その下位に設けられたサブメニューで1台のプリンタが選択できるようなメニュー構造になっていてもよい。より具体的には、例えば、図8に示すように、「File」メニュー34内にある「Print」35にフォーカス36を移動させる操作が行われた場合に、プリンタ選択サブメニュー61が表示されるようにし、このプリンタ選択サブメニュー61の中に複数のプリンタ名が表示されるようにする。そして、プリンタ選択サブメニュー61の中で、フォーカス63を1つのプリンタ名に移動させる操作が行われたら、その1つのプリンタ名のサブメニューとして、上記実施形態で説明した「Print」サブメニュー37相当のサブメニューを表示するように構成する。このように構成すれば、複数のプリンタについて、各プリンタ毎にメニュー内にダイアログ内情報の表示を行うことができ、利用者は、各プリンタ毎のダイアログ内情報を確認して、所望のプリンタドライバかどうか、および、ダイアログボックスの表示が必要かどうかを判断することができる。
また、上記実施形態では、印刷設定ダイアログボックス51内に設けられた複数のサブページに関し、タブを選択する操作によって最前面に表示されるサブページを切り替えるようにしてあったが、サブページの具体的形態は任意であり、例えば、タブの無いサブページを利用する場合でも、本発明の構成を適用することができる。