JPH1195889A - ウィンドウサイズの決定又はウィンドウ移動の方法 - Google Patents

ウィンドウサイズの決定又はウィンドウ移動の方法

Info

Publication number
JPH1195889A
JPH1195889A JP10161212A JP16121298A JPH1195889A JP H1195889 A JPH1195889 A JP H1195889A JP 10161212 A JP10161212 A JP 10161212A JP 16121298 A JP16121298 A JP 16121298A JP H1195889 A JPH1195889 A JP H1195889A
Authority
JP
Japan
Prior art keywords
window
message
function
windows
messages
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.)
Pending
Application number
JP10161212A
Other languages
English (en)
Inventor
Bushie Aran
アラン・ブシエ
Mari Santo Aran
アラン・マリー−サント
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.)
Bull SAS
Original Assignee
Bull SAS
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
Application filed by Bull SAS filed Critical Bull SAS
Publication of JPH1195889A publication Critical patent/JPH1195889A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Digital Computer Display Output (AREA)
  • User Interface Of Digital Computer (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

(57)【要約】 【課題】 “Windows(登録商標)”アプリケー
ションにおけるウィンドウサイズの決定又は移動の方法
を提供する。 【解決手段】 “Windows”(1)と“Wind
ows”下で実行される種々のアプリケーション(2
0、21、22)との間に特定のメッセージをインタセ
プトするフィルタ(4)を位置させ、特定のアプリケー
ション(5)によってこれらのメッセージを処理し、
“Windows”側で何の動作もトリガせずかつ他の
アプリケーションの動作をブロックしないニュートラル
な“WM_ENTERIDLE”メッセージを、次に
“Windows”に返送することを特徴とする“Wi
ndows”アプリケーションにおけるウィンドウサイ
ズの決定又は移動の方法。

Description

【発明の詳細な説明】
【0001】本発明はウィンドウサイズの決定又は移動
の方法に関している。
【0002】ウィンドウサイズの決定又は移動の方法と
しては、マイクロソフト“Windows”のマルチウ
ィンドウのマルチタスキングプログラムが特に公知であ
る。この種のプログラムは、ウィンドウがサイズを決め
られかつ移動せしめられる時、その他のウィンドウで実
行中のアプリケーションの展開をブロックする欠点を有
している。
【0003】本発明の目的は、この欠点を克服すること
にある。
【0004】この目的は、次の事実、即ち“Windo
ws”アプリケーションにおけるウィンドウサイズの決
定又は移動の方法が具体的なメッセージをインタセプト
するフィルタを“Windows”と“Window
s”で実行される種々のアプリケーションとの間に挿入
することと、特定のアプリケーションによりこれらのメ
ッセージを処理することと、“Windows”の側で
何の動作もトリガせずかつこの他のアプリケーションの
実行をブロックしないニュートラルメッセージを“Wi
ndows”に送ることとからなる該事実によって達成
される。
【0005】他の特徴によれば、特定のアプリケーショ
ンによって行われる処理は、発生し得るかつ潜在的にウ
ィンドウの移動事象又はウィンドウサイズの決定の事象
に対応する具体的な事象の各々を処理することと、この
処理時間内に処理終了をトリガしながら、後からの事象
が生じるまでに格納されている多数のパラメータ、W_
Top、W_Right、W_Bottom、W_Le
ft、W_Caption、Frm_CurPos、h
_wndCurrの初期化を可能とする特定のファンク
ションを呼び出すこととからなる。
【0006】他の特徴によれば、格納されたパラメータ
は以下のもの、即ち、あらゆるウィンドウで動作が開始
されたことを示す変数である“h_WndCurr”=
“h_WndCurrent”と、アイコンがロードさ
れたのを記憶する“b_LoadedIcon”と、ア
イコンの場合、メニュー実行であるか又はアイコン移動
フェーズであるかどうかを示す変数である“h_Wnd
Menu”と、アプリケーションが開始されかつこのア
プリケーションの特定カーソルが置換される前に、“W
indows”の能動カーソルの識別子が記憶されるの
を可能にする変数である“h_OldCursor”
と、サイズの決定、フレーミング、及び最小幅を定める
それぞれの間のウィンドウの座標変数である“w_CX
Screen”、“w_CYScreen”、“w_C
Xframe”、“w_CYMinHeight”、
“w_CXMinWidth”と、現行フレームポジシ
ョン変数である“Frm_CurPos”と、現行マウ
スポジション変数である“Mse_CurPos”と、
新ウィンドウ及び方向テストの座標を計算するために用
いられる方向変数である“w_Left”、“w_To
p”、“w_Right”、“w_Bottom”、
“w_Caption”と、ウィンドウの初期位置を規
定する変数である“Wnd_StartPos”と、カ
ーソルの初期位置を規定する変数である“Mse_St
artPos”と、開始時に偽であると割り当てられた
ブール変数である“b_Cursor及び“b_Loa
dedIcon”とである。
【0007】他の特徴によれば、二つのフィルタがあ
る。第1の“WM_GETMESSAGE”フィルタ
は、以下のハードウェアの割り込みによって通知された
メッセージが受け取られることを可能にし、WM_NC
LBUTTONDOWN、WM_MOUSEMOVE、
WM_KEYDOWN、WM_SYSKEYDOWN、
また第2の“WH_CALLWNDPROC”フィルタ
は、以下の方法に送られたメッセージがフィルタされか
つ受け取られることを可能にする、WM_SYSCOM
MAND、WM_ACTIVATEAPP、WM_NC
ACTIVATE、WM_ACTIVATWE。
【0008】他の特徴によれば、各メッセージにとって
特定のプログラムの処理をトリガし、格納されたパラメ
ータと、それ自体ユティリティファンクションを呼び出
す以下のごとき主要処理ファンクション、処理初期化の
ABMSInit、ウィンドウ移動のABMSMov
e、及び処理終了のABMSEndとを参加させるメッ
セージをインタセプトすることである。
【0009】他の特徴によれば、ABMSInitファ
ンクションは、メッセージ“WM_NCLBUTTON
DOWN”と、“WM_SYSCOMMAND”に依存
するメッセージ“SC_SIZE”とを処理するための
みに実行される。
【0010】他の特徴によれば、ABMSEndファン
クションは、“WM_LBUTTONUP”と、“WM
_SYSKEYDOWN”に依存するメッセージ“VK
_ESCAPE”及び“VK_RETURN”とを処理
するためのみに実行される。
【0011】他の特徴によれば、ABMSMoveファ
ンクションは、“WM_SYSKEYDOWN”に依存
するメッセージである“WM_MOUSEMOVE、M
K_LEFT、VK_UP、VK_RIGHT、及びV
K_DOWN”メッセージを処理するためのみに実行さ
れる。
【0012】他の特徴によれば、ABMSInitファ
ンクションは、“SETCAPTURE”命令によって
マウスメッセージを適合させることと、次いで該ウィン
ドウが親ウィンドウの子ウィンドウであるかどうか、即
ちこの子ウィンドウの移動を限定するためにこの親ウィ
ンドウに書き込まれているかどうかを確認することと、
次いで現行座標となるためウィンドウの初期座標とカー
ソルの位置とを初期化することと、さらにウィンドウの
特性パラメータ(w_CXframe、w_CXMin
Width、w_CYMinHeight)を初期化す
ることとからなる。
【0013】他の特徴によれば、この方法は、以下の各
段階を備えている。即ち、フィルタの能動モードへの遷
移と、そこへメッセージが送られる“h_Wnd”ウィ
ンドウの識別子を記憶することと、記憶がHitTes
tファンクション及びABMSInitファンクション
によって達成される、このクリックゾーンから生じる種
類の動作を記憶することと、後続のマウスメッセージを
当該ウィンドウに適合させることと、InvertBl
ock手続きによってウィンドウの周囲にゴーストフレ
ームを最初に描くことと、置換することによってこのメ
ッセージをニュートラルにし、また“Windows”
の側で処理されずかつ何の動作もトリガしない“WM_
ENTERIDLE”メッセージを代用することとであ
る。
【0014】他の特徴によれば、この方法は、以下の各
段階を備えている。即ち、InvertBlockによ
ってゴーストを消去しながら、ABMSComputN
ewPos手続きによってウィンドウの最終座標を計算
することと、ABMSMoveファンクションによって
最終位置にウィンドウを描くことと、ABMSEndフ
ァンクションによって記憶パラメータをゼロにリセット
することとである。
【0015】最終的な特徴によれば、この方法はまた、
以下各段階を備えている。即ち、“Release C
apture”命令によるマウスメッセージのオーナシ
ップの放棄と、フィルタの能動モードへ通過とである。
【0016】本発明の他の特徴及び利点は図面に関する
以下説明によってより明確に理解されよう。
【0017】図4のフローチャートの種々の段階を詳細
に示したアペンディックス(1〜8)は明細書後部に記
載されている。
【0018】本発明は、CPU(中央処理装置)又はプ
ロセッサ、ディスプレイモニタ、キーボードリソース、
及びマウスを備えているコンピュータ装置上で動作する
マルチタスク、即ちマルチウィンドウプログラムの改良
に関している。
【0019】いくつかのアプリケーションが、アプリケ
ーションごとに一つ又はそれ以上のウィンドウとともに
実行されるのを可能にするプログラムの動作を示してい
る図5の従来の技術では、多数の欠陥が示されている。
これにより、“Windows”環境又はOS2におい
て、“Windows”プログラムのコア(1)は、種
々のアプリケーション又はタスク(T1、T2、T3)
即ちそれぞれ(20、21、23)の方向にメッセージ
(30、31)を送る。“Windows”のコア
(1)は、メッセージ(30、31)が、活動状態とな
ったタスク、例えば図5の場合はタスク(T1)及び
(T3)へ送られ、かつそれぞれのタスクにアドレスさ
れたこれらのメッセージがそれぞれの待ち行列(Q1、
Q3)にスタックされるのを可能にする。“Windo
ws”のコア(1)は、次いで待機メッセージを管理し
それらを処理するアプリケーションにプロセッサが帰属
するものとし、さらにこの待ち行列が空の時、タスク
は、プロセッサが他の活動状態となったアプリケーショ
ンに帰属するのを可能にすべく“Windows”のコ
ア(1)にプロセッサを回復させる。各アプリケーショ
ン(T1、T3)は、関連したウィンドウ(F1、F
3)を備えている。各ウィンドウは、可視又は不可視の
オブジェクトで構成されている。アプリケーションのウ
ィンドウに関する種々のメッセージに対するウィンドウ
の使用又はリアクションモードを構成する方法が、各ウ
ィンドウと対応付けられている。この方法は各メッセー
ジを処理し、結果としての動作を実行するプログラムで
ある。このプログラムは、これらのメッセージのいくつ
かを処理するために選択するか、又はいくつかの他のメ
ッセージが“Windows”によって処理されるのを
許可することができる。後者の場合には、アプリケーシ
ョンプログラムは“Windows”のコア(1)のフ
ァンクション(13)にメッセージ(33)を送ること
を要求し、さらにこのファンクションは“defaul
t Windows Proc.”(デフォルトウィン
ドウプロセッサ)と呼ばれる。“Windows”のコ
ア(1)はこれらの具体的なメッセージを認識すること
ができ、さらに例えばウィンドウサイズを決めたり、又
はそれを移動させる場合には標準処理を実行する。この
ため、ウィンドウサイズを決めたいとするオペレータ
は、ハードウエアを割込ませることによって多数のメッ
セージを生成するシステム“mouse”(マウス)を
実行する。これらのメッセージは、例えば関連するアプ
リケーションの待ち行列(Q1)に送られ、スタックさ
れる。この待ち行列を処理する時、プログラムはこれら
のメッセージをウィンドウの方法に送り、さらにマウス
が位置する所、即ちウィンドウのエッジ上か中間部内か
又はメニューゾーン上かを見つけ出そうとする。この位
置によっては、この方法は多数の異なるメッセージを生
成する。
【0020】マウスがウィンドウのエッジ上にある場
合、そのために生じる割込みはメッセージ“WM_LB
UTTONDOWN”を生成する。方法がこのメッセー
ジを回復する時、方法がこのメッセージをファンクショ
ン(13)の“Def Window Proc”に送
り、“Windows”に手渡す。この具体的なメッセ
ージを検出する“Windows”は、そこからメッセ
ージが得られたそのウィンドウのゾーンを見つけ出し、
さらに場合によっては、“WM_SIZE”(ウィンド
ウサイズの決定に対応する)又は“WM_MOVE”
(ウィンドウを移動させることに対応する)のごとき多
数のメッセージを生成し、さらにこれらのメッセージを
迅速に処理することができるようにマウスから次に続く
メッセージを待機する。
【0021】送られたメッセージ(30、31)は、
“Windows”のコア(1)によって直接アプリケ
ーションに送られるシステムメッセージか、割込み後に
しばしば生成される、例えばマウスメッセージ又はキー
ボードメッセージのごときハードウエアからのメッセー
ジかのいずれかであり得る。この方法が“Def Wi
ndow Proc”ファンクションにメッセージを送
った時、及びこのファンクション(13)がメッセージ
の処理終了を行うのを許可するウィンドウサイズの決定
又は移動に関する他の情報がこのファンクションに届い
ていない間は、プロセッサはこのファンクションを実行
し続け、止めることなく、他のメッセージを待機する。
これには他のタスクの処理をブロックするという欠点が
ある。この欠点は、例えば実時間のモニタリング又は警
報制御の実時間アプリケーションを特に困難にする。こ
の種のアプリケーションにおいて、キーボードを使った
ウィンドウサイズの決定又は移動操作が開始され、さら
に割り込まれたオペレータがウィンドウサイズの決定又
は移動動作を完了することができない全時間に対してキ
ーボード又はマウスを用いて全ての他のアプリケーショ
ンをブロックすることが生じたりするかもしれない。
【0022】従って、本発明の目的はこの欠点を取り除
くことにあり、さらにフィルタ(4)が種々のアプリケ
ーション(20、21、22)と“Windows”の
コア(1)の間に設置され、いくつかのメッセージが通
過する時、このフィルタがABMSアプリケーション
(5)によってこれらのメッセージの処理を確実にする
“Windows”のコアに引っ掛けられていることを
示している図1の構成を提供する。これにより、“Wi
ndows”のコアによってアプリケーションA、B、
C(20、21、22)に送られるメッセージ(30
1、321、311)はフィルタ(4)に入り、かつフ
ィルタが活動状態か又は非活動状態かによってABMS
により伝送されるか又は処理される。フィルタが活動状
態の場合は、いくつかの種類のメッセージはメッセージ
の形態をとってアプリケーションAに(304で)、ア
プリケーションBに(324で)、及びアプリケーショ
ンCに(314で)が伝送される。図2及び図4に示さ
れるように、メッセージ(301、321、311)の
一つが特定の事象(50、51、52、53)に対応す
る場合に、このメッセージは、以下に示されるようにア
プリケーションABMS(5)によってインタセプトさ
れ、処理される。
【0023】これにより、本発明は、“Window
s”を具備したメッセージフィルタの使用に基づいてお
り、これらのフィルタは、あらゆるアプリケーション
が、具体的な種類の事象に対応する全メッセージの通過
について知らされるのを可能とし、これらのメッセージ
が真のあて先に到着する前に改良され又は置換されるこ
とを許可する。
【0024】このため、ABMSアプリケーション
(5)はこれらの特定フィルタのうちの二つを用いる。
“Windows”が全てのメッセージをメッセージフ
ァミリーに分類しかつ我々に関するこのメッセージがこ
れらのファミリーの二つに属するため、我々に関する場
合の全ての可能性のあるメッセージを網羅するには二つ
のフィルタが必要である。“WM_GETMESSAG
E”フィルタ(アペンディックス1、400)はハード
ウエアの割込み、即ちマウス又はキーボードによって通
知されたメッセージの受け取りを可能にし、これらのメ
ッセージはこのアプリケーションの待ち行列に正常に位
置していたであろう。他の“WH_CALLWNDPR
OC”フィルタ(401、アペンディックス1)は、ア
プリケーション方法に直接送られる全てのメッセージが
フィルタされかつ受け取られるのを可能にする。ABM
Sアプリケーション(5)が初期化された時、これらの
フィルタは設置され、この設置状態は図2及びアペンデ
ィックス1の参照番号(40)によって示されており、
“SETWINDOWSHOOK”ファンクションによ
って実行される。ABMSアプリケーションの閉鎖はこ
れらのフィルタを取り除き、この除去は図2及びアペン
ディックス1の参照番号(41)に示されており、かつ
“UNHOOKWINDOWSHOOK”ファンクショ
ンによって実行される。これらの設置されているフィル
タはメッセージに影響を与えない受動に、又はいくつか
の特定の事象から生じる具体的な種類の処理を生じる能
動になり得る。フィルタが受動である場合は、このフィ
ルタに到達するメッセージ(301、321、311)
は分散能動の形態をとってこれらのアプリケーションに
伝送され、フィルタはこのメッセージを処理のためAB
MSアプリケーションに送る。
【0025】ABMSアプリケーションによって考慮に
入れられたオプションは、動作、用いられる手段、及び
操作されたウィンドウの状態を示している3次元表(図
3参照)に分類されるいくつかのシナリオに分割され得
る。ABMSアプリケーションの実現化は多くの難点が
克服されることを要求しており、その難点のいくつかは
一般的なものであり以下に記載されており、他の難点は
シナリオに対して特定であり図3の対応するボックスに
示されている。
【0026】一般的な難点は、ESCキーによって取り
消された時の動作終了に関している。この場合、初期状
態を回復は、ABMSアプリケーションのデータゾーン
に残っている変数によって構成された多数の情報の個々
の記憶を割り当てる。他の難点はキーボード及びマウス
のシナリオの画面上の形態の相互の交錯(インタペネト
レーション)である。実際、これらの手段の一つを用い
た再開始動作がいかなる時にも他の手段によって続行す
ることができるように、キーボードとマウスのシナリオ
との間の境界線はシールされない。ABMSはこのフレ
キシビリティを考慮に入れている。処理された各メッセ
ージは、このアプリケーションの一般的な文脈を、変数
の内容を変更することによって又はABMSデータゾー
ンで規定されたパラメータで動作することによって発展
させ、さらにこれらの変数を、他のいかなるメッセージ
によっても引き継がれることができる明確に規定された
状態にしておく。これらの変数は以下に示される、動作
がウィンドウで開始されたことを示す変数である“h_
WndCurr”と、アイコンの場合、ウィンドウがメ
ニュー実行フェーズ又はアイコン移動フェーズであるか
どうかを示す変数である“h_WndMenu”と、こ
のアプリケーションが開始される前にウィンドウの能動
カーソル識別子が記憶され、かつこのアプリケーション
の特定カーソルが置換されるのを可能にする変数である
“h_OldCursor”と、サイズの決定、フレー
ミング、及び最小幅を定めるそれぞれの間のウィンドウ
座標の変数である“w_CXScreen”、“w_C
YScreen”、“w_CXframe”、“w_C
YMinHeight”、“w_CXMinWidt
h”と、フレームの現行位置変数である“Frm_Cu
rPos”と、マウスの現行位置変数である“Mse_
CurPos”と、新ウィンドウ及び方向テストの座標
を計算するために用いられる方向変数である“w_Le
ft”、“w_Top”、“w_Right”、“w_
Bottom”、“w_Caption”と、初期ウィ
ンドウ位置の定義変数である“Wnd_StartPo
s”と、初期カーソル位置の定義変数である“Mse_
StartPos”と、開始時に偽であると割当てられ
たブール変数である“b_Cursor”及び“b_L
oadedIcon”とである。
【0027】マウスによってのみ行われるアイコンでは
ないウィンドウサイズの決定の場合、オペレータは以下
の動作を実行しなければならない、オペレータは、ウィ
ンドウのエッジの一つにマウスカーソルを位置させ、左
ボタンを押し、かつ抑える。次いでオペレータは、スク
リーン上でウィンドウゴーストを示すそのフレームのエ
ッジの一つの移動を実行するマウスを移動させる。ユー
ザが所望サイズに到達したと確信した時、左ボタンを離
し、そのウィンドウはたった今再規定されたばかりのフ
レームに再び描かれる。動作の初めに、ABMSによっ
て設置されたフィルタは最初は受動状態にある。“Wi
ndows”のコア(1)によって送られた全てのマウ
ス移動のメッセージは分散される。カーソルをウィンド
ウのエッジに位置させて、オペレータが左マウスボタン
を押す時、“Windows”は、そのパラメータがウ
ィンドウ識別子及び事象が生じたゾーンを規定する値を
有する“WM_NCLBUTTONDOWN”メッセー
ジを生成する。次いでABMS動作は以下のようにな
る、能動モードへの遷移、このメッセージ及びこの初期
座標が意図されているHWNDウィンドウの識別子の記
憶と、クリックゾーン(左、右、頂部、底部、斜めサイ
ズの決定)から生じるその種類の動作の記憶であって、
アペンディックス1及び7のプログラム参照番号(50
1)のABMSHitテスト部、及びアペンディックス
3の参照番号(502、503)のABMSInitプ
ログラムによって行われる該記憶と、当該ウィンドウに
対する(SETCAPTURE命令による)次に続くマ
ウスメッセージの適合と、参照番号(521)によって
アペンディックス4に示されたABMSInvertb
lock手続きによるウィンドウ周辺のゴーストフレー
ムを最初に描くことであり、各移動に応じて、前出のゴ
ーストフレームを取り消しかつ新しい位置に次のゴース
トフレームを再び描く該最初の描きと、このメッセージ
を“Windows”によって処理されることなくかつ
何の動作も生じない“WM_ENTERIDLE”メッ
セージで置換し代用するニュートラリゼーションとであ
る。
【0028】ABMSプログラムが開始される時、アペ
ディックス1の参照番号(40)によって示される最初
のファンクションは、フィルタファンクションを設置す
るか又は除去するかのいずれかを行う。このフィルタフ
ァンクションは、“SETWINDOWSHOOK”フ
ァンクションによって設置され、かつフィルタの除去は
図2の参照番号(40、41)によって示されている
“UNHOOKWINDOWSHOOK”ファンクショ
ンによって行われる。このフィルタファンクションが一
旦活動状態となると、“WM_SYSCOMMAND、
WM_LBUTTONUP、WM_SYSKEYDOW
N、WM_NCLBUTTONDOWN、WM_MOU
SEMOVE”のごとき全てのメッセージが転送され、
ABMSHookプログラムによって処理され、かつこ
のアプリケーションの“WM_ENTERIDLE”メ
ッセージを“Windows”に送ることによってニュ
ートラルにされる。全てのこれらのメッセージは、キー
ボード又はマウスの割込み後、最初に“Window
s”によって送られる。
【0029】これにより、図4に示されるように、参照
番号(50)の“WM_NCLBUTTONDOWN”
メッセージが“Windows”によって送られる時、
このメッセージは、ABMSHookプログラムによっ
てインタセプトされる。該プログラムは第1フェーズ
(504)でこのメッセージが意図されているウィンド
ウの識別子を記憶し、変数“h_WndCurr”内で
このウィンドウがアイコンであるかどうかを見つけだす
ための、行(500)によってアペンディックス1のプ
ログラム(50)に示されているテストを実行し、次に
アペンディックス7に参照番号(501)によって詳細
に示されているアペンディックス1のABMSHitテ
ストプログラム(501)の部分によって、クリッキン
グゾーンから生じるこの種の動作を記憶し、それからア
ペンディックス4に参照番号(502、503)によっ
て詳細に示されているアペンディックス1のサブプログ
ラムABMSInit(502、503)を実行する。
このプログラムは、“SETCAPTURE”メッセー
ジによって後からのマウスメッセージを当該ウィンドウ
に適合させ、かつウィンドウとカーソル位置の初期座標
とを決定する。シーケンス(50)を処理する“WM_
NCLBUTTONDOWN”は、処理の終わりに“W
M_ENTERIDLE”メッセージを返送する。
【0030】Windowsによって送られる次のメッ
セージは“WM_MOUSEMOVE”メッセージによ
って示されかつアペンディックス1の命令シーケンス
(51)によって処理されるマウスの移動となることが
でき、この命令シーケンスの終わりで、このプログラム
は“WM_ENTERIDLE”メッセージを送ること
によってWindowsに手渡す。他の命令の可能性は
マウスボタンリリース命令であって、この命令は、その
処理シーケンス(52)がアペンディックス1に示され
ているウィンドウメッセージ“WM_LBUTTONU
P”によって示されている。このシーケンスは、その終
わりに“WM_ENTERIDLE”を送るためにWi
ndowsのコア(1)に手渡すサブプログラムABM
SEndを開始する。
【0031】Windowsによって送られた“WM_
MOUSEMOVE”メッセージの場合は、このプログ
ラムは、アペンディックス1の参照番号(510)によ
ってオブジェクトがアイコンされているかどうかを確認
する。もしそれがアイコンされていないならば、命令
(515)はこの方向変数が初期化されていたかどうか
を確認する。初期化されていた場合は、アペンディック
ス5のABMSMoveファンクション(511)を開
始するが、初期化されてなかった場合は、アペンディッ
クス6のABMSDirectionファンクション
(512)は、パラメータとしてアペンディックス8の
ABMSTestDirectファンクション(51
3)の結果によって方向変数の初期化を開始する。オブ
ジェクトがアイコンされている場合は、このシーケンス
は、命令番号(5111)によって、カーソルとABM
SLoadIconファンクション(5110)とによ
って示された位置でのアイコンのローディングを開始す
る。このシーケンスは、次いで“WM_ENTERID
LE”メッセージを送りながら、Windowsに手渡
す。
【0032】ABMSが図4の参照番号(53)によっ
て示される“WM_SYSKEYDOWN”メッセージ
をインタセプトする場合は、このメッセージの処理はサ
ブプログラム(53)をスタートする。このサブプログ
ラムは、“VK_RETURN”メッセージ又はエスケ
ープメッセージ“VK_ESCAPE”が受け取られ、
次いで左移動キー“VK_LEFT”、上方移動キー
“VK_UP”、右移動キー“VK_RIGHT”及び
下方移動キー“VK_DOWN”の各ケースを処理する
時に復帰(キャリッジリターン)キーが活動状態の場合
の処理によって始められる。押し下げられるキーの種類
によって、左方向の移動用(530)、上方向の移動用
(531)、右方向の移動用(532)、及び下方向の
移動用(533)のごときサブプログラムのうちの一つ
に対応する処理を実行する。
【0033】上記のように、メッセージはフィルタによ
って受け取られるとすぐに処理される。対応した処理の
後に、ABMSプログラムはWindowsのコア
(1)に引継ぎを行う。そのコアはこうして、フィルタ
がその処理にこのABMSプログラムの介入を必要とす
る新しいメッセージをインタセプトする前に他のアプリ
ケーションに手渡すことができる。オペレータが左のマ
ウスボタンを離すか、又は“Enter”又は“Es
c.”を打つまで、フィルタは能動状態のままである。
この動作は、能動状態から受動状態へとABMSフィル
タの状態に変化を生じさせる“WM_LBUTTONU
P、WM_SYSKEYDOWN、VK_ENTER、
VK_ESCAPE”メッセージを生成する。この変化
の間に実行された動作は以下の通りである。即ち、アペ
ンディックス6のサブプログラム(5210)によって
示されているABMSComputerNewPos手
続きによる、最終ウィンドウ座標の計算と、Inver
tBlockによるゴーストの消去と、最終位置のウィ
ンドウの描画と、記憶されたパラメータをゼロにリセッ
トすることと、“Release Capture”命
令によるマウスメッセージのオーナシップの放棄と、フ
ィルタの受動モードへの遷移とである。
【0034】上記説明の通り、設置されたフィルタのた
め、ABMSアプリケーションは、種々のメッセージ
“WM_SYSCOMMAND、WM_NCLBUTT
ONDOWN、WM_MOUSEMOVE、WM_LB
UTTONUP、WM_SYSKEYDOWN、WM_
KEYDOWN、WM_ACTIVATEAPP、WM
_NCACTIVATE、WM_ACTIVATE”を
受け取る。このアプリケーションは、Windowsの
利益となるために、これらのメッセージを“WM_EN
TERIDLE”などのニュートラルメッセージに置換
し、次いで、処理が初期化されたのが検出された時は、
コールされた種々の主たる処理ファンクションをコール
しながら、これらのメッセージを処理し続ける。これら
の主たる処理ファンクションは以下の通りである。即
ち、最初の“SC_MOVE”又は“SC_SIZE”
が“WM_SYSCOMMAND”で受け取られた時、
処理を初期化するためのABMSInitファンクショ
ンであって、このABMSInitファンクションは、
“SETCAPTURE”命令によってマウスメッセー
ジを適合させ、次いでこのウィンドウが、親ウィンドウ
の子ウィンドウであるかどうか、即ちこの子ウィンドウ
の移動を限定するためにこの親ウィンドウに書き込まれ
ているかどうかを確認し、次いで現行座標になるように
初期ウィンドウ座標及びカーソル位置を初期化し、さら
にウィンドウの特性パラメータ(w_CXFrame、
w_CXMinWidth、w_CYMinHeigh
t)を初期化することからなる、該ファンクションと、
次いでABMSEnd及びABMSMoveファンクシ
ョンとである。
【0035】これら3つの主ファンクションのほかに、
主ファンクションの異なるポイントで呼び出されるユテ
ィリティファンクションがあり、ユティリティ処理を実
行するのに役立つ。これらのファンクションは以下の通
りである、−マウス座標がそれに与えられた時、広域及
び残留変数を考慮にいれながら、ウィンドウ座標を計算
しかつ更新するのに役立つABMSComputNew
Posファンクション。アペンディックス5のABMS
ComputNewPosファンクション(5210)
は、新しい位置がW_Left、W_Caption、
W_Top、W_Right、及びW_Bottomパ
ラメータから計算されること、及びマウス座標及びウィ
ンドウフレームがウィンドウの最低の高さ及び幅の座標
から計算されることを可能にする。このファンクション
はまた、子ウィンドウが親ウィンドウから出ないことを
確実とするためにこれらの計算の限界をテストする。
【0036】−アペンディックス6のABMSDire
ctionファンクション(512)は、カーソルの形
を決定しかつ受け取られたメッセージの関数として方向
変数を初期化するために役立つ。アペンディックス6の
ABMSDirectionファンクション(512)
は、例えば、ABMSTestDirectionによ
って返送されたパラメータがD_Topである場合に
は、W_Topパラメータを1に位置決めさせ、命令番
号(5120)によってカーソル位置をウィンドウの上
方エッジに引っ掛ける。次いでこのシーケンスはW_L
eftが初期化されたかどうかを見つけるためにW_L
eftパラメータをテストする。W_Leftが初期化
されていた場合は、このシーケンスは、カーソルディス
プレイが上方右方向40°に傾斜しているかどうかを尋
ねるためにメッセージ“D_TTOBDBLEARRO
W”を送る。W_Leftが初期化されていない場合
は、このシーケンスはW_Rightが初期化されてい
るかどうかを確認する。もしW_Rightが初期化さ
れていた場合は、このシーケンスは、カーソルが上方左
方向に傾斜してディスプレイされることを要求するため
にメッセージ“D_BTOTDBLEARROW”を送
る。W_Rightのテストが否定ならば、メッセージ
“D_VERTDBLEARROW”の実行によって垂
直カーソルがディスプレイされる。
【0037】−アペンディックス7のABMSHitT
estファンクション(501)は、初期化時に、どの
ゾーンがクリックされたかを決定し、マウス移動の場合
の方向変数を初期化するのに役立つ。このファンクショ
ンは、“WM_NCLBUTTONDOWN”が受け取
られた場合にABMSInitによって呼び出され、か
つW_Top、W_Right、W_Bottom、W
_Left、及びW_Captionの変数が初期化さ
れるのを可能にする。
【0038】このため、アペンディックス7に示されて
いるように、頂部右コーナがマウスによってクリックさ
れたことを示す、HT_TopRightメッセージが
受け取られた時、ABMSHitTestファンクショ
ンはW_Top及びW_Right変数をゼロにセット
する。これは、新しいメッセージが受け取られた時、ウ
ィンドウの上方右コーナに初期化が生じたかどうかを示
し、これによりウィンドウの移動またはウィンドウサイ
ズの決定が処理されなければならない、アペンディック
ス7の参照番号(5030)によって示されたABMS
InvertBlockファンクションは、hDCパラ
メータと、例えばP_RecFrm.leftによって
示されているウィンドウの寸法との関数としてPatB
ltファンクションによってコマンドされた4つの隣接
した長方形を描くことによって長方形を描く。DSTI
NVERTコマンドによって、このPatBltファン
クションはウィンドウゴーストを同時に反転させる。−
アペンディックス7のABMSLoadCursorフ
ァンクション(5031)は、ウィンドウのエッジのそ
の位置に従って送られたパラメータの関数としてカーソ
ルをロードする。このため、W_LeftとW_Top
とのパラメータが1で初期化された場合は、ウィンドウ
の上方左エッジが処理されかつ初期化されたこのカーソ
ルは、ウィンドウの下方右エッジ即ち45°を指し示す
矢印のように見えるであろう、−アペンディックス8の
ABMSLoadIconファンクション(5100)
は、静的アイコンが移動せしめられた場合は、カーソル
が、Windowsによって生成された静的アイコンの
画像によって置換されるのを可能にする。さらに動的ア
イコンが移動せしめられた場合は、該ファンクション
は、この動的アイコン画像が、カーソルによって構成さ
れる画像によって置換されるのを可能にする、−アペン
ディックス8の参照番号(513)で示されたABMS
TestDirectファンクションは、アプリケーシ
ョンによって受け取られかつP_MSEPOS.Xによ
って示されたマウスの位置のX座標によって構成された
“Windows”によって送られたその情報をテスト
することによって、例えばD_Left(5130)の
ごときパラメータが返送されるのを決定し、かつこの座
標をウィンドウの左位置の値と比較し、さらにマウスの
X座標の値がウィンドウの左エッジの横座標より下であ
る場合は、このファンクションはD_Leftメッセー
ジをアプリケーションにリターンする。このファンクシ
ョンはABMSDirectionファンクションと連
動して用いられる、−アペンディックス5のABMSM
oveファンクション(511)は、アペンディックス
5及び7の参照番号(5030)で示されているABM
SInvertBlockファンクションによってウィ
ンドウのゴーストを反転することによりウィンドウが移
動せしめられることを可能にする。該ファンクション
は、次いで、ABMSComputNewPosファン
クション(5210)によってウィンドウの新しい位置
を計算し、最終的に参照番号(5112)によって示さ
れている計算された新しい位置にウィンドウゴーストを
反転させる、−アペンディックス4のABMSEndフ
ァンクション(521)は、ウィンドウがアイコンされ
ているかどうかを見るために命令(5211)を用いる
ことによって処理を終了させる。これがアイコンされて
いない場合は、終了は正常終了である。従って、ABM
SComputNewPosファンクション(521
0)が開始される。さもなければカーソルは、命令(5
213)によってその初期開始位置で再開する。このフ
ァンクションは、またシーケンス(5214)によっ
て、処理中のウィンドウが子ウィンドウであるかどうか
を決定するのを可能にし、さらにこの場合、移動前に座
標を反転する。このようにこのファンクションは、必要
ならば、カーソルを回復するためにシーケンス(521
5)を用いかつシーケンス(5216)によってパラメ
ータをゼロにリセットする。
【0039】CalMsgHookフィルタによるアプ
リケーションは、“WM_SYSCOMMAND、WM
_ACTIVATEAPP、WM_NCACTIVAT
E、WM_ACTIVATE”メッセージを含んでいる
アプリケーション方法に直接送られていたであろうメッ
セージがフィルタされかつ受け取られるのを可能にす
る。(54)で示された“WM_SYSCOMMAN
D”メッセージの処理は、“SC_MOVE”か又は
“SC_SIZE”メッセージのいずれかの処理に分類
され得る。この“SC_SIZE”メッセージは、W_
Captionパラメータを1に位置決めし、またウィ
ンドウサイズの決定のメッセージである“SC_SIZ
E”は(540)によって示された処理をトリガする。
このアプリケーションがウィンドウサイズの決定のメッ
セージを受け取る時は、このアプリケーションは、参照
番号(5401)にマウスのカーソル位置を要求し、さ
らにそれがマウスのカーソル位置となることを要求す
る。次いで参照番号(5402)で、この手続きはAB
MSInitファンクションを開始する。またカーソル
位置の参照番号(5403)は実行された動作に対応付
けられており、かつ処理終了時に、このアプリケーショ
ンはWindowsに参照番号(541)のメッセージ
“WM_ENTERIDLE”を返送し、このメッセー
ジは“WM_SYSCOMMAND”メッセージと置換
する。
【0040】このように、GetMsgHookフィル
タは、“WM_NCLBUTTONDOWN、WM_M
OUSEMOVE、WM_LBUTTONUP、WM_
KEYDOWN、WM_SYSKEYDOWN”のメッ
セージをフィルタする。この種の“WM_NCLBUT
TONDOWN”メッセージが、命令番号(504)を
用いてABMSアプリケーションに到達する時は、この
アプリケーションがメニュー実行であるかどうかが確認
される。メニュー実行でない場合は、アイコンのために
作動しているかどうかが参照番号(500)で見られ
る。アイコンのために作動していない場合は、パラメー
タがABMSHitTestファンクション(501)
によって初期化されたかどうかが確認される。パラメー
タが初期化されてなかった場合は、メッセージパラメー
タを具備しているX及びY座標のポイントに格納するこ
とによってABMSInitファンクション(502、
503)を開始する。次いで“WM_ENTERIDL
E”メッセージ(505)は、Windowsに手渡す
ためWindowsに送られる。Windowsによっ
て送られた“WM_MOUSEMOVE”メッセージの
場合は、プログラムは、アペンディックス1の参照番号
(510)でオブジェクトがアイコンされているかどう
かを確認する。オブジェクトがアイコンされていない場
合は、命令(515)は方向変数が初期化されていたか
どうかを確認するが、初期化の場合は、プログラムはア
ペンディックス5のABMSMove(511)ファン
クションを開始する。方向変数が初期化されていなかっ
た場合は、アペンディックス6のABMSDirect
ionファンクション(512)は、パラメータとして
アペンディックス8のABMSTestDirectフ
ァンクション(513)の結果生じる方向変数の初期化
が開始される。オブジェクトがアイコンされている場合
は、このシーケンスは、カーソルで示されている位置で
のアイコンのローディングを開始するための命令(51
11)及びファンクションABMSLoadIcon
(5100)を用いる。次いでシーケンスは、メッセー
ジ“WM_ENTERIDLE”を送ることによってW
indowsに手渡す。
【0041】メッセージ“WM_LBUTTONUP”
がアプリケーションから受け取られた場合は、参照番号
(510)でオペレータがメニュー実行したかどうかが
見られる。実行でなければ、このアプリケーションは、
ウィンドウ座標がマウス座標に対応するかどうかを確認
し、ABMSEndファンクション(521)を開始
し、次いでWindowsに“WM_ENTERIDL
E”メッセージを送る。
【0042】キーが押し下げられた後に送られたメッセ
ージの場合、エスケープ(VK_ESCAPE)及び復
帰(VK_RETURN)キーによって構成されている
アボート(放棄)キーの場合を取り扱うために参照番号
(534)でアプリケーションが開始される。これと場
合を異にして、アプリケーションがVK_Leftメッ
セージを受け取った場合、アプリケーションは最初にア
イコンモードであるかどうかを参照番号530のシーケ
ンスで確認して、ファンクションABMSLoadIc
on(5100)によってアイコンをロードし、次いで
命令(5301)によってパラメータW_Captio
n、W_Left、及びW_Rightが初期化されて
いたかどうかを確認する。さらにそれらが初期化されて
いた場合は、アプリケーションはアイコンを移動させる
か、又はシーケンス(5302)によって実際サイズを
提供する。アイコンモードがこのポイントで丁度良く動
作していない場合は、ABMSMoveファンクション
が開始され、またマウスの位置はカーソルの位置に提供
される。さもなければ、ABMSはABMSDirec
tionファンクションを開始し、次いでメッセージ
“WM_ENTERIDLE”をウィンドウに返送す
る。
【0043】生じ得る種々の事象を取り扱いかつ主処理
ファンクション上又はユティリティファンクション上で
呼び出すこのプログラムの他の部分の動作は、上記説明
及びアペンディックスのリストによって推測されるかも
しれない。
【0044】個々の当業者の範囲内でのいかなる変形も
本発明の精神及びその範囲から逸脱することなく行われ
るであろう。
【0045】
【表1】
【0046】
【表2】
【0047】
【表3】
【0048】
【表4】
【0049】
【表5】
【0050】
【表6】
【0051】
【表7】
【0052】
【表8】
【0053】
【表9】
【0054】
【表10】
【図面の簡単な説明】
【図1】本発明の全体的な経路図を示している。
【図2】本発明のフィルタの動作原理を示している。
【図3】実行可能なシナリオ表を示している。
【図4】フィルタリングファンクションが一度ロードさ
れた時の翻訳プログラムのフローチャートである。
【図5】本発明の従来の技術を示している。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成10年7月23日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正内容】
【書類名】 明細書
【発明の名称】 ウィンドウサイズの決定又はウィンド
ウ移動の方法
【特許請求の範囲】
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はウィンドウのサイズの決
定(sizing,寸法の決定)又はウィンドウ移動の
方法に関している。
【0002】
【従来の技術及び発明が解決しようとする課題】ウィン
ドウのサイズの決定又は移動の方法としては、マイクロ
ソフト(登録商標)社の“Windows”,“Win
dows NT(登録商標)”,及びIBM(登録商
標)社の“OS2(登録商標)”のマルチウィンドウ,
マルチタスクプログラムが公知である。この種のプログ
ラムは、ウィンドウがサイズを決められかつ移動せしめ
られる時、その他のウィンドウで実行中のアプリケーシ
ョンの展開(development)をブロックする
欠点を有している。
【0003】本発明の目的は、この欠点を克服すること
にある。
【0004】
【課題を解決するための手段】この目的は、次の事実、
即ち“Windows”等のウィンドウ管理プログラム
下で動作するアプリケーションにおけるウィンドウサイ
ズの決定又はウィンドウ移動の方法が具体的なメッセー
ジをインタセプトするフィルタをウィンドウ管理プログ
ラムのコア部とウィンドウ管理プログラム下で実行され
る種々のアプリケーションとの間に挿入することと、特
定アプリケーションによりこれらのメッセージを処理す
ることと、ウィンドウ管理プログラムの側で何の動作も
トリガせずかつこの他のアプリケーションの実行をブロ
ックしないニュートラルメッセージ(neutral
message)をウィンドウ管理プログラムに送るこ
ととによって達成される。
【0005】他の特徴によれば、特定アプリケーション
によって行われる処理は発生し得る特定の事象の各々を
処理することから成るが、それは潜在的にはウィンドウ
の移動という事象又はウィンドウサイズの決定という事
象に対応し、この処理時間内に多数のパラメータ、W_
Top、W_Right、W_Bottom、W_Le
ft、W_Caption、Frm_CurPos、h
_WndCurrの初期化を可能とする特定のファンク
ションを呼び出すことから成り、それらのパラメータは
後の事象が生じる迄格納されて、処理終了をトリガす
る。
【0006】他の特徴によれば、格納されたパラメータ
は以下のもの、即ち、任意のウィンドウで動作が開始さ
れたことを示す変数である“h_WndCurr”=
“h_WndCurrent”と、アイコンがロードさ
れたのを記憶する“b_LoadedIcon”と、ア
イコンの場合、メニュー実行であるか又はアイコン移動
フェーズ(iconmove phase)であるかど
うかを示す変数である“h_WndMenu”と、アプ
リケーションが開始されかつこのアプリケーションの特
定カーソルが置換される前に、ウィンドウ管理プログラ
ムの能動カーソル(active cursor,活動
カーソル)の識別子が記憶されるのを可能にする変数で
ある“h_OldCursor”と、サイズの決定、フ
レーミング、及び最小幅を定めるそれぞれの間のウィン
ドウの座標変数である“w_CXScreen”、“w
_CYScreen”、“w_CXframe”、“w
_CYMinHeight”、“w_CXMinWid
th”と、現行フレームポジション変数である“Frm
_CurPos”と、現行マウスポジション変数である
“Mse_CurPos”と、新ウィンドウ及び方向テ
ストの座標を計算するために用いられる方向変数である
“w_Left”、“w_Top”、“w_Righ
t”、“w_Bottom”、“w_Caption”
と、ウィンドウの初期位置を定義する変数である“Wn
d_StartPos”と、カーソルの初期位置を定義
する変数である“Mse_StartPos”と、開始
時に偽であると仮定されたブール変数である“b_Cu
rsor及び“b_LoadedIcon”と、であ
る。
【0007】他の特徴によれば、二つのフィルタがあ
る。第1の“WM_GETMESSAGE”フィルタ
は、ハードウェアの割り込みによって通知された(po
stedby hardware)以下の様なメッセー
ジWM_NCLBUTTONDOWN、WM_MOUS
EMOVE、WM_KEYDOWN、WM_SYSKE
YDOWN、が受け取られることを可能にし、また第2
の“WH_CALLWNDPROC”フィルタは、方法
[sic]に送られた以下の様なメッセージWM_SY
SCOMMAND、WM_ACTIVATEAPP、W
M_NCACTIVATE、WM_ACTIVATW
E、がフィルタされかつ受け取られることを可能にす
る、他の特徴によれば、メッセージをインタセプトする
ことは、各メッセージにとって特定のプログラムの処理
をトリガし、格納されたパラメータ、及び、それ自体が
ユティリティファンクションを呼び出す以下のごとき主
要処理ファンクション、処理初期化のABMSIni
t、ウィンドウ移動のABMSMove、処理終了のA
BMSEnd、を参加させる。
【0008】他の特徴によれば、ABMSInitファ
ンクションは、メッセージ“WM_NCLBUTTON
DOWN”と、“WM_SYSCOMMAND”に依存
するメッセージ“SC_SIZE”とを処理するための
みに実行される。
【0009】他の特徴によれば、ABMSEndファン
クションは、“WM_LBUTTONUP”と、“WM
_SYSKEYDOWN”に依存するメッセージ“VK
_ESCAPE”及び“VK_RETURN”とを処理
するためのみに実行される。他の特徴によれば、ABM
SMoveファンクションは、“WM_SYSKEYD
OWN”に依存するメッセージである“WM_MOUS
EMOVE、MK_LEFT、VK_UP、VK_RI
GHT、及びVK_DOWN”メッセージを処理するた
めのみに実行される。
【0010】他の特徴によれば、ABMSInitファ
ンクションは、“SETCAPTURE”命令によって
マウスメッセージを適合させることと、次いで該ウィン
ドウが親ウィンドウの子ウィンドウであるかどうか、即
ちこの子ウィンドウの移動を限定するためにこの親ウィ
ンドウにウィンドウが書き込まれているかどうかを確認
することと、次いでウィンドウの初期座標とカーソルの
位置とを初期化して現行座標とすることと、さらにウィ
ンドウの特性パラメータ(w_CXframe、w_C
XMinWidth、w_CYMinHeight)を
初期化することとからなる。
【0011】他の特徴によれば、この方法は、以下の各
段階を備えている。即ち、フィルタの能動モードへの遷
移と、そこへメッセージが送られる“h_Wnd”ウィ
ンドウの識別子を記憶することと、記憶がHitTes
tファンクション及びABMSInitファンクション
によって達成される、このクリックゾーンから生じる種
類の動作を記憶することと、後続のマウスメッセージを
当該ウィンドウに適合させることと、InvertBl
ock手続きによってウィンドウの周囲にゴーストフレ
ームを最初に描くことと、メッセージを置換えてウィン
ドウ管理プログラムの側で処理されずかつ何の動作もト
リガしない“WM_ENTERIDLE”メッセージを
代用することによってメッセージをニートラルにするこ
とと、を備えている。
【0012】他の特徴によれば、この方法は、以下の各
段階を備えている。即ち、InvertBlockによ
ってゴーストを消去しながら、ABMSComputN
ewPos手続きによってウィンドウの最終座標を計算
することと、ABMSMoveファンクションによって
最終位置にウィンドウを描くことと、ABMSEndフ
ァンクションによって記憶パラメータをゼロにリセット
することと、を備えている。
【0013】最終的な特徴によれば、この方法はまた、
以下各段階を備えている。即ち、“Release C
apture”命令によるマウスメッセージのオーナシ
ップの放棄と、フィルタの能動モードへの移行と、を備
えている。
【0014】
【実施例】本発明の他の特徴及び利点は図面に関する以
下説明によってより明確に理解されよう。
【0015】本発明は、複数のアプリケーションプログ
ラム及びウィンドウ管理プログラムを処理するためのC
PU(中央処理装置)又はプロセッサ、ウィンドウを表
示しかつアプリケーションプログラムの各種出力等を表
示するためのディスプレイモニタ、並びに、割り込みを
発生し得るキーボードリソース及びマウスの入力装置を
備えているコンピュータ装置上で動作するマルチタス
ク、マルチウィンドウプログラムの改良に関している。
【0016】また、周知の様にこの種のコンピュータ装
置は外部記憶装置を備えており、この装置にはOS,
“Windows”管理プログラム及びアプリケーショ
ンプログラムが記憶され(IBM社のOS/2は、OS
とウィンドウ管理プログラムとを含む。)、コンピュー
タの起動時にCPU内部の記憶装置(内部メモリ)にO
Sの一部、更に“Windows“管理プログラムが実
行されると、その一部が記憶装置にロードされる。
【0017】いくつかのアプリケーションが、アプリケ
ーション当り一つ又はそれ以上のウィンドウとともに実
行されるのを可能にするプログラムの動作を示している
図5の従来の技術では、多数の欠陥が認められる。これ
により、マイクロソフト社“Windows”,“Wi
ndows NT”環境又はOS2(IBM社)におい
て、ウィンドウ管理プログラム(例えば、“Windo
ws”管理プログラム)のコア(1)は、種々のアプリ
ケーション即ちタスク(T1、T2、T3)即ち(2
0、21、23)の方向に夫々メッセージ(30、3
1)を送る。ウィンドウ管理プログラムのコア(1)
は、メッセージ(30、31)が、活動状態となったタ
スク、例えば図5の場合はタスク(T1)及び(T3)
へ送られ、かつそれぞれのタスクにアドレスされたこれ
らのメッセージがそれぞれの待ち行列(Q1、Q3)に
スタックされるのを可能にする。ウィンドウ管理プログ
ラムのコア(1)はプロセッサをアプリケーションに帰
属させ、アプリケーションは次いで待ち行列化されたメ
ッセージを管理し、処理し、待ち行列が空になった場
合、タスクはプロセッサをウィンドウ管理プログラムの
コア(1)へ送って、プロセッサを他の活動化されてい
るアプリケーションに帰属できるようにする。各アプリ
ケーション(T1、T3)は、関連したウィンドウ(F
1、F3)を備えている。各ウィンドウは、可視又は不
可視のオブジェクトを構成する。アプリケーションのウ
ィンドウに関する種々のメッセージに対するウィンドウ
の使用又はリアクションモードを構成する方法が、各ウ
ィンドウと対応付けられている。この方法は各メッセー
ジを処理し、結果としての動作を実行するプログラムで
ある。このプログラムは、これらのメッセージのいくつ
かを処理するか、又はいくつかの他のメッセージがウィ
ンドウ管理プログラムによって処理されるのを許可する
かを選択し得る。後者の場合には、アプリケーションプ
ログラムはウィンドウ管理プログラムのコア(1)のフ
ァンクション(13)にメッセージ(33)を送ること
を要求し、さらにこのファンクションは“defaul
t WindowsProc.”(デフォルトウィンド
ウプロセッサ)と呼ばれる。ウィンドウ管理プログラム
のコア(1)はこれらの具体的なメッセージを認識する
ことができ、さらに例えばウィンドウサイズを決めた
り、又はウィンドウを移動させる場合には標準処理(s
tandard processing)を実行する。
このため、ウィンドウサイズを決めたいとするオペレー
タは、ハードウエアを割込ませることによって多数のメ
ッセージを生成するシステム“mouse”(マウス)
を実行する。これらのメッセージは、例えば関連するア
プリケーションの待ち行列(Q1)に送られ、スタック
される。この待ち行列を処理する時、プログラムはこれ
らのメッセージをウィンドウの方法に送り、さらにマウ
スが位置する所、即ちウィンドウのエッジ上か中間部内
か又はメニューゾーン上かを見つけ出そうとする。この
位置によっては、この方法は多数の異なるメッセージを
生成する。
【0018】マウスがウィンドウのエッジ上にある場
合、そのために生じる割込みはメッセージ“WM_LB
UTTONDOWN”を生成する。この方法がこのメッ
セージを回復する時、その方法がこのメッセージをファ
ンクション(13)の“DefWindow Pro
c”に送り、ウィンドウ管理プログラムに手渡す。この
特定のメッセージを検出するウィンドウ管理プログラム
は、そこからメッセージが得られたそのウィンドウのゾ
ーンを見つけ出し、さらに場合によっては、“WM_S
IZE”(ウィンドウサイズの決定に対応する)又は
“WM_MOVE”(ウィンドウを移動させることに対
応する)のごとき多数のメッセージを生成し、さらにこ
れらのメッセージを迅速に処理することができるように
マウスからの次に続くメッセージを待機する。
【0019】送られたメッセージ(30、31)は、ウ
ィンドウ管理プログラムのコア(1)によって直接アプ
リケーションに送られるシステムメッセージか、割込み
後にしばしば生成される、例えばマウスメッセージ又は
キーボードメッセージのごときハードウエアからのメッ
セージかのいずれかであり得る。方法がメッセージを
「Def Wnd Proc」ファンクションへ送り、
ファンクション(13)がメッセージの処理を終了でき
るようにする、ウィンドウのサイズ決定または移動に関
する他の情報がこのファンクションに到達していない限
り、プロセッサはこのファンクションの実行を継続し、
これを放棄せず、他のメッセージを待つ。これには他の
タスクを処理するプロセスをブロックするという欠点が
ある。この欠点が特に問題となるのは、リアルタイムア
プリケーション、たとえばリアルタイム監視または警報
制御(alarm control)の場合である。こ
のタイプのアプリケーションにおいては、キーボードを
使用したウィンドウのサイズ決定または移動挙動が起動
し、割込みを受けたオペレータはそのオペレータがキー
ボードまたはマウスを使用して自分のウィンドウのサイ
ズ決定またはウィンドウの移動処置を完了できない全期
間の間、すべての他のアプリケーションをブロックする
こととなる。
【0020】従って、本発明の目的はこの欠点を取り除
き、コンピュータ装置のCPUを効率よく動作させるこ
とにある。フィルタ(4)がCPU内部メモリ等の記憶
装置の一部に割り当てられた種々のアプリケーション
(20、21、22)と同様に記憶装置の他の部分に割
り当てられたウィンドウ管理プログラムのコア(1)の
間に設置され、いくつかのメッセージが通過する時、こ
のフィルタがABMSアプリケーション(5)によって
これらのメッセージの処理を確実にするウィンドウ管理
プログラムのコアに引っ掛けられて(hooked)い
ることを示している図1の構成を提供する。それ故、ウ
ィンドウ管理プログラムのコアによりアプリケーション
A、B、C(20、21、22)へ送られたメッセージ
(301、321、331)はフィルタ(4)へ入力さ
れ、活動化または非活動化に応じて、ABMSによって
伝送されるか、処理されるかする。フィルタが活動状態
の場合は、いくつかの種類のメッセージはメッセージの
形態をとってアプリケーションAに(304で)、アプ
リケーションBに(324で)、及びアプリケーション
Cに(314で)伝送される。図2及び図4に示される
ように、メッセージ(301、321、311)の一つ
が特定の事象(50、51、52、53)に対応する場
合に、このメッセージは、以下に示されるようにアプリ
ケーションABMS(5)によってインタセプトされ、
処理される。
【0021】それ故、本発明はウィンドウ管理プログラ
ムが提供するメッセージフィルタに基づくものである、
これらのフィルタによって、アプリケーションに特定の
タイプのイベントに対応したすべてのメッセージの経路
を通知することができ、またこれらのメッセージを変更
または置き換えてから、真の宛先に到着するようにする
ことができる。
【0022】それ故、ABMSアプリケーション(5)
はこれらの特定のフィルタのうちの二つを使用する。ウ
ィンドウ管理プログラムがすべてのメッセージをメッセ
ージファミリに分類し、本件に関するメッセージをこれ
らファミリの二つに属するものであるから、二つのフィ
ルタは本件に関する場合に考えられるすべてのメッセー
ジをカバーしている必要がある。「WM_GETMES
SAGE」フィルタ(400、アペンディックス1)は
ハードウェア割込み、すなわちマウスまたはキーボード
によって通知された、アプリケーション待ち行列に通常
おかれているメッセージの受取りを可能とする。他の
「WH_CALLWNPROC」(401、アペンディ
ックス1)はアプリケーションメソッド(ママ)へ直接送
られたすべてのメッセージをフィルタして、受け取るこ
とを可能とする。これらのフィルタはABMSアプリケ
ーションがインストールされるときに初期化されるが、
これらのインストールは図2およびアペンディックス1
において符号(40)で示されており、「SETWIN
DOWSHOOK」機能によって実行される。ABMS
アプリケーションが終了すると、フィルタが削除され、
この削除は図2およびアペンディックス1において符号
(41)で示されており、「UNHOOKWINDOW
SHOOK」機能によって行われる。インストールされ
たこれらのフィルタは受動的、すなわちメッセージに影
響を及ぼさないものであるか、能動的、すなわち特別な
種類の処理をいくつかの特定のイベントから生じさせる
ものである。フィルタが受動的なものである場合、フィ
ルタに到着するメッセージ(301、321、311)
はアプリケーションへ、分散形態で伝送され、能動的な
場合、フィルタはメッセージを処理のためにABMSへ
送る。
【0023】ABMSが考慮するオプションはアクショ
ン、用いられる手段、および走査されたウィンドウの状
況を表す三次元テーブル(図3)に分類されるいくつか
のシナリオに分割できる。ABMSアプリケーションを
実現するには、いくつかの問題点を解決する必要がある
が、これらのうちいくつかは一般的なものであって、以
下で説明するものであり、他はシナリオに特定のもので
あって、図3の対応する枠に示されている。
【0024】一般的な問題点はESCキーによってキャ
ンセルされた場合に、アクションを終了することに関連
している。この時点で、初期状況の回復はABMSアプ
リケーションに残っている変数によって構成されるいく
つかの情報片を記憶することを想定している。他の問題
点はキーボード/マウスシナリオの相互浸透である。実
際には、キーボードおよびマウスのシナリオの間のフロ
ンティアはシールされていないので、これらの手段の一
つによる再起動処置をいつでも他のものによって継続す
ることができる。ABMSはこの柔軟性を考慮に入れて
いる。処理される各メッセージは、変数の内容を変更す
ることにより、あるいはABMSのデータゾーンに定義
されたパラメータを操作することにより、アプリケーシ
ョンの一般的なコンテキストを発展させ、これらの変数
を他のメッセージが引き継ぐことのできる、明確に定義
された状況に残す。これらの変数は次のように表され
る。
【0025】動作がウィンドウで開始されたことを示す
変数である“h_WndCurr”と、アイコンの場
合、ウィンドウがメニュー実行フェーズ又はアイコン移
動フェーズであるかどうかを示す変数である“h_Wn
dMenu”と、このアプリケーションが開始される前
にウィンドウの活動カーソル識別子が記憶され、かつこ
のアプリケーションの特定カーソルが置換されるのを可
能にする変数である“h_OldCursor”と、サ
イズの決定、フレーミング、及び最小幅を定めるそれぞ
れの間のウィンドウ座標の変数である“w_CXScr
een”、“w_CYScreen”、“w_CXfr
ame”、“w_CYMinHeight”、“w_C
XMinWidth”と、フレームの現行位置変数であ
る“Frm_CurPos”と、マウスの現行位置変数
である“Mse_CurPos”と、新ウィンドウ及び
方向テスト(direction tests)の座標
を計算するために用いられる方向変数である“w_Le
ft”、“w_Top”、“w_Right”、“w_
Bottom”、“w_Caption”と、初期ウィ
ンドウ位置の定義変数(definition var
iable)である“Wnd_StartPos”と、
初期カーソル位置の定義変数である“Mse_Star
tPos”と、開始時に偽であると割当てられたブール
変数である“b_Cursor”及び“b_Loade
dIcon”と、である。
【0026】アイコンではない、マウスだけによって行
われるウィンドウのサイズ決定の場合には、オペレータ
は以下の操作を行わなければならない。
【0027】−操作員はマウスカーソルをウィンドウの
縁部の一つにおき、左ボタンを押したままとする。次
に、マウスを移動させるが、これには画面上でウィンド
ウのゴーストを表す縁部の一つを移動させる効果があ
る。ユーザが希望するサイズに達したと考えた場合に
は、左ボタンを離すと、ウィンドウは再定義されたフレ
ームに再描画される。操作の開始時に、ABMSによっ
てインストールされたフィルタは当初受動状態にある。
ウィンドウ管理プログラムのコア(1)が送ったすべて
のマウス移動メッセージは分散される。カーソルがウィ
ンドウの縁部にあるときに、操作員がマウスの左ボタン
を押すと、ウィンドウ管理プログラムは「WM_NCL
BUTTONDOWN」メッセージを生成する。このメ
ッセージのパラメータはウィンドウ識別子と、イベント
が生じたゾーンを定義している値を含んでいる。この場
合、ABMSのアクションは次のようになる。
【0028】−活動モードへの移行、メッセージと初期
座標が目的としているHWNDウィンドウの識別子の記
憶。
【0029】−クリックゾーンから生じるアクションの
タイプ(左、右、上部、下部、および対角方向でのサイ
ズ決定)の記憶。この記憶はアペンディックス1および
アペンディックス7において(501)という符号がつ
けられているプログラムのABMSHitテスト部分、
およびアペンディックス3において(502、403)
という符号がつけられているABMSInitプログラ
ムによって行われる。
【0030】−問題のウィンドウに対する以降のマウス
メッセージ(SETCAPTURE命令による)の割当
て。
【0031】−アペンディックス4において符号(52
1)で示されているABMSInvertBlockに
よるウィンドウ周囲でのゴーストフレームの最初の描
画。これは移動のたびに、以前のゴーストフレームを取
り消し、次のものを新しい位置に再描画する。
【0032】−ウィンドウ管理プログラムによって処理
されず、アクションを引き起こさない「WM_ENTE
RIDLE」を置き換え代入することによるメッセージ
の中立化。
【0033】ABMSプログラムが開始される時、アペ
ンディックス1の参照番号(40)によって示される最
初のファンクションは、フィルタファンクションを設置
するか又は除去するかのいずれかを行う。このフィルタ
ファンクションは、“SETWINDOWSHOOK”
ファンクションによって設置され、かつフィルタの除去
は図2の参照番号(40、41)によって示されている
“UNHOOKWINDOWSHOOK”ファンクショ
ンによって行われる。このフィルタファンクションが一
旦活動状態となると、“WM_SYSCOMMAND、
WM_LBUTTONUP、WM_SYSKEYDOW
N、WM_NCLBUTTONDOWN、WM_MOU
SEMOVE”のごとき全てのメッセージが転送され、
ABMSHookプログラムによって処理され、かつこ
のアプリケーションの“WM_ENTERIDLE”メ
ッセージをウィンドウ管理プログラムに送ることによっ
てニュートラルにされる。全てのこれらのメッセージ
は、キーボード又はマウスの割込み後、最初にウィンド
ウ管理プログラムによって送られる。
【0034】これにより、図4に示されるように、参照
番号(50)の“WM_NCLBUTTONDOWN”
メッセージがウィンドウ管理プログラムによって送られ
る時、このメッセージは、ABMSHookプログラム
によってインタセプトされる。該プログラムは第1フェ
ーズ(504)でこのメッセージが意図されているウィ
ンドウの識別子を記憶し、変数“h_WndCurr”
内でこのウィンドウがアイコンであるかどうかを見つけ
だすための、行(500)によってアペンディックス1
のプログラム(50)に示されているテストを実行し、
次にアペンディックス7に参照番号(501)によって
詳細に示されているアペンディックス1のABMSHi
tテストプログラム(501)の部分によって、クリッ
キングゾーンから生じるこの種の動作を記憶し、それか
らアペンディックス4に参照番号(502、503)に
よって詳細に示されているアペンディックス1のサブプ
ログラムABMSInit(502、503)を実行す
る。このプログラムは、“SETCAPTURE”メッ
セージによって後からのマウスメッセージを当該ウィン
ドウに適合させ、かつウィンドウとカーソル位置の初期
座標とを決定する。シーケンス(50)を処理する“W
M_NCLBUTTONDOWN”は、処理の終わりに
“WM_ENTERIDLE”メッセージを返送する。
【0035】ウィンドウ管理プログラムによって送られ
る次のメッセージは“WM_MOUSEMOVE”メッ
セージによって示されかつアペンディックス1の命令シ
ーケンス(51)によって処理されるマウスの移動とな
ることができ、この命令シーケンスの終わりで、このプ
ログラムは“WM_ENTERIDLE”メッセージを
送ることによってウィンドウ管理プログラムに手渡す。
他の命令の可能性はマウスボタンリリース命令であっ
て、この命令は、その処理シーケンス(52)がアペン
ディックス1に示されているウィンドウメッセージ“W
M_LBUTTONUP”によって示されている。この
シーケンスは、その終わりに“WM_ENTERIDL
E”を送るためにウィンドウ管理プログラムのコア
(1)に手渡すサブプログラムABMSEndを開始す
る。
【0036】ウィンドウ管理プログラムによって送られ
た“WM_MOUSEMOVE”メッセージの場合は、
このプログラムは、アペンディックス1の参照番号(5
10)によってオブジェクトがアイコン表示されている
(iconic)かどうかを確認する。もしそれがアイ
コン表示されていないならば、命令(515)はこの方
向変数が初期化されていたかどうかを確認する。初期化
されていた場合は、アペンディックス5のABMSMo
veファンクション(511)を開始するが、初期化さ
れてなかった場合は、アペンディックス6のABMSD
irectionファンクション(512)は、パラメ
ータとしてアペンディックス8のABMSTestDi
rectファンクション(513)の結果によって方向
変数の初期化を開始するべく立上げられる。オブジェク
トがアイコン表示されている場合は、このシーケンス
は、命令番号(5111)によって、カーソルとABM
SLoadIconファンクション(5100)とによ
って示さ れた位置でのアイコンのローディングを開始
する。このシーケンスは、次いで“WM_ENTERI
DLE”メッセージを送りながら、ウィンドウ管理プロ
グラムに手渡す。
【0037】ABMSが図4の参照番号(53)によっ
て示される“WM_SYSKEYDOWN”メッセージ
をインタセプトする場合は、このメッセージの処理はサ
ブプログラム(53)をスタートする。このサブプログ
ラムは、“VK_RETURN”メッセージ又はエスケ
ープメッセージ“VK_ESCAPE”が受け取られ、
次いで左移動キー“VK_LEFT”、上方移動キー
“VK_UP”、右移動キー“VK_RIGHT”及び
下方移動キー“VK_DOWN”の各ケースを処理する
時に復帰(キャリッジリターン)キーが活動状態の場合
の処理によって始められる。押し下げられるキーの種類
によって、左方向の移動用(530)、上方向の移動用
(531)、右方向の移動用(532)、及び下方向の
移動用(533)のごときサブプログラムのうちの一つ
に対応する処理を実行する。
【0038】上述したように、メッセージをフィルタが
受け取ると同時に、これは処理され、対応する処理の
後、ABMSプログラムがウィンドウ管理プログラムの
コア(1)をハンドオフし、コアは他のアプリケーショ
ンをハンドオフできるとともに、フィルタがABMSプ
ログラムの介入を必要とする処理を必要とする新しいメ
ッセージをインターセプトするのを待つ。フィルタはオ
ペレータが左マウスボタンを放すか、「Enter」ま
たは「Esc」を押すまで、活動状態のままである。こ
のアクションは「WM_LBUTTONUP、WM_S
YSKEYDOWN、VK_ENTER、VK_ESC
APE」メッセージを生成し、このメッセージはABM
Sフィルタの状況の能動状況から受動状況への変化を引
き起こす。この変更中に行われるアクションは次の通り
である。即ち、アペンディックス6のサブプログラム
(5210)によって示されているABMSCompu
tNewPos手続きによる、最終ウィンドウ座標の計
算と、InvertBlockによるゴーストの消去
と、最終位置のウィンドウの描画と、記憶されたパラメ
ータをゼロにリセットすることと、“Release
Capture”命令によるマウスメッセージのオーナ
シップの放棄と、フィルタの受動モードへの遷移と、で
ある。
【0039】上記説明の通り、設置されたフィルタのた
め、ABMSアプリケーションは、種々のメッセージ
“WM_SYSCOMMAND、WM_NCLBUTT
ONDOWN、WM_MOUSEMOVE、WM_LB
UTTONUP、WM_SYSKEYDOWN、WM_
KEYDOWN、WM_ACTIVATEAPP、WM
_NCACTIVATE、WM_ACTIVATE”を
受け取る。このアプリケーションは、ウィンドウ管理プ
ログラムの利益となるために、これらのメッセージを
“WM_ENTERIDLE”などのニュートラルメッ
セージに置換し、次いで、処理が初期化されたのが検出
された時は、コールされた種々の主たる処理ファンクシ
ョンをコールしながら、これらのメッセージを処理し続
ける。これらの主たる処理ファンクションは以下の通り
である。即ち、最初の“SC_MOVE”又は“SC_
SIZE”が“WM_SYSCOMMAND”で受け取
られた時、処理を初期化するためのABMSInitフ
ァンクションであり、このABMSInitファンクシ
ョンは、“SETCAPTURE”命令によってマウス
メッセージを適合させ、次いでこのウィンドウが、親ウ
ィンドウの子ウィンドウであるかどうか、即ちこの子ウ
ィンドウの移動を限定するためにこの親ウィンドウにウ
ィンドウが書き込まれているかどうかを確認し、次いで
初期ウィンドウ座標及びカーソル位置を初期化して現行
座標とし、さらにウィンドウの特性パラメータ(w_C
XFrame、w_CXMinWidth、w_CYM
inHeight)を初期化することからなる。更に、
ABMSEnd及びABMSMoveファンクションを
含む。
【0040】これら3つの主ファンクションのほかに、
主ファンクションの異なるポイントで呼び出されるユテ
ィリティファンクションがあり、ユティリティ処理を実
行するのに役立つ。これらのファンクションは以下の通
りである。
【0041】−マウス座標がそれに与えられた時、広域
(global)及び残留変数(remanent v
ariables)を考慮にいれながら、ウィンドウ座
標を計算しかつ更新するのに役立つABMSCompu
tNewPosファンクション。アペンディックス5の
ABMSComputNewPosファンクション(5
210)は、新しい位置がW_Left、W_Capt
ion、W_Top、W_Right、及びW_Bot
tomパラメータから計算されること、及びマウス座標
及びウィンドウフレームがウィンドウの最低の高さ及び
幅の座標から計算されることを可能にする。このファン
クションはまた、子ウィンドウが親ウィンドウから出な
いことを確実とするためにこれらの計算の限界をテスト
する。
【0042】−アペンディックス6のABMSDire
ctionファンクション(512)は、カーソルの形
を決定しかつ受け取られたメッセージの関数として方向
変数を初期化するために役立つ。アペンディックス6の
ABMSDirectionファンクション(512)
は、例えば、ABMSTestDirectionによ
って返送されたパラメータがD_Topである場合に
は、W_Topパラメータを1に位置決めさせ、命令番
号(5120)によってカーソル位置をウィンドウの上
方エッジに引っ掛ける。次いでこのシーケンスはW_L
eftが初期化されたかどうかを見つけるためにW_L
eftパラメータをテストする。W_Leftが初期化
されていた場合は、このシーケンスは、カーソルディス
プレイが上方右方向40°に傾斜しているかどうかを尋
ねるためにメッセージ“D_TTOBDBLEARRO
W”を送る。W_Leftが初期化されていない場合
は、このシーケンスはW_Rightが初期化されてい
るかどうかを確認する。もしW_Rightが初期化さ
れていた場合は、このシーケンスは、カーソルが上方左
方向に傾斜してディスプレイされることを要求するため
にメッセージ“D_BTOTDBLEARROW”を送
る。W_Rightのテストが否定ならば、メッセージ
“D_VERTDBLEARROW”の実行によって垂
直カーソルがディスプレイされる。
【0043】−アペンディックス7のABMSHitT
estファンクション(501)は、初期化時に、どの
ゾーンがクリックされたかを決定し、マウス移動の場合
の方向変数を初期化するのに役立つ。このファンクショ
ンは、“WM_NCLBUTTONDOWN”が受け取
られた場合にABMSInitによって呼び出され、か
つW_Top、W_Right、W_Bottom、W
_Left、及びW_Captionの変数が初期化さ
れるのを可能にする。
【0044】このため、アペンディックス7に示されて
いるように、頂部右コーナがマウスによってクリックさ
れたことを示す、HT_TopRightメッセージが
受け取られた時、ABMSHitTestファンクショ
ンはW_Top及びW_Right変数をゼロにセット
する。これは、新しいメッセージが受け取られた時、ウ
ィンドウの上方右コーナに初期化が生じて、これにより
ウィンドウの移動またはウィンドウサイズの決定が処理
されなければならないことを示す。
【0045】アペンディックス7の参照番号(503
0)によって示されたABMSInvertBlock
ファンクションは、hDCパラメータと、例えばP_R
ecFrm.leftによって示されているウィンドウ
の寸法との関数としてPatBltファンクションによ
ってコマンドされた4つの隣接した長方形を描くことに
よって長方形を描く。DSTINVERTコマンドによ
って、このPatBltファンクションはウィンドウゴ
ーストを同時に反転させる。
【0046】−アペンディックス7のABMSLoad
Cursorファンクション(5031)は、ウィンド
ウのエッジのその位置に従って送られたパラメータの関
数としてカーソルをロードする。このため、W_Lef
tとW_Topとのパラメータが1で初期化された場合
は、ウィンドウの上方左エッジが処理されかつ初期化さ
れたこのカーソルは、ウィンドウの下方右エッジ即ち4
5°を指し示す矢印のように見えるであろう。
【0047】−アペンディックス8のABMSLoad
Iconファンクション(5100)は、静的アイコン
が移動せしめられた場合は、カーソルが、ウィンドウ管
理プログラムによって生成された静的アイコンの画像に
よって置換されるのを可能にする。さらに動的アイコン
が移動せしめられた場合は、該ファンクションは、この
動的アイコン画像が、カーソルによって構成される画像
によって置換されるのを可能にする。
【0048】−アペンディックス8の参照番号(51
3)で示されたABMSTestDirectファンク
ションは、アプリケーションによって受け取られかつP
_MSEPOS.Xによって示されたマウスの位置のX
座標によって構成されたウィンドウ管理プログラムによ
って送られたその情報をテストすることによって、例え
ばD_Left(5130)のごときパラメータが返送
されるのを決定し、かつこの座標をウィンドウの左位置
の値と比較し、さらにマウスのX座標の値がウィンドウ
の左エッジの横座標より小さい場合は、このファンクシ
ョンはD_Leftメッセージをアプリケーションにリ
ターンする。このファンクションはABMSDirec
tionファンクションと連動して用いられる。
【0049】−アペンディックス5のABMSMove
ファンクション(511)は、アペンディックス5及び
7の参照番号(5030)で示されているABMSIn
vertBlockファンクションによってウィンドウ
のゴーストを反転することによりウィンドウが移動せし
められることを可能にする。該ファンクションは、次い
で、ABMSComputNewPosファンクション
(5210)によってウィンドウの新しい位置を計算
し、最終的に参照番号(5112)によって示されてい
る計算された新しい位置にウィンドウゴーストを反転さ
せる。
【0050】−アペンディックス4のABMSEndフ
ァンクション(521)は、ウィンドウがアイコンされ
ているかどうかを見るために命令(5211)を用いる
ことによって処理を終了させる。これがアイコンされて
いない場合は、終了は正常終了(5212)である。従
って、ABMSComputNewPosファンクショ
ン(5210)が開始される。さもなければカーソル
は、命令(5213)によってその初期開始位置で再開
する。このファンクションは、またシーケンス(521
4)によって、処理中のウィンドウが子ウィンドウであ
るかどうかを決定するのを可能にし、さらにこの場合、
移動前に座標を反転する。このようにこのファンクショ
ンは、必要ならば、カーソルを回復するためにシーケン
ス(5215)を用いかつシーケンス(5216)によ
ってパラメータをゼロにリセットする。
【0051】CalMsgHookフィルタによるアプ
リケーションは、“WM_SYSCOMMAND、WM
_ACTIVATEAPP、WM_NCACTIVAT
E、WM_ACTIVATE”メッセージを含んでいる
アプリケーション方法に直接送られていたであろうメッ
セージがフィルタされかつ受け取られるのを可能にす
る。(54)で示された“WM_SYSCOMMAN
D”メッセージの処理は、“SC_MOVE”か又は
“SC_SIZE”メッセージのいずれかの処理に分類
され得る。この“SC_SIZE”メッセージは、W_
Captionパラメータを1に位置決めし、またウィ
ンドウサイズの決定のメッセージである“SC_SIZ
E”は(540)によって示された処理をトリガする。
このアプリケーションがウィンドウサイズの決定のメッ
セージを受け取る時は、このアプリケーションは、参照
番号(5401)にマウスのカーソル位置を要求し、さ
らにそれがマウスのカーソル位置となることを要求す
る。次いで参照番号(5402)で、この手続きはAB
MSInitファンクションを開始する。またカーソル
位置の参照番号(5403)は実行された動作に対応付
けられており、かつ処理終了時に、このアプリケーショ
ンはウィンドウ管理プログラムに参照番号(541)の
メッセージ“WM_ENTERIDLE”を返送し、こ
のメッセージは“WM_SYSCOMMAND”メッセ
ージと置換する。
【0052】このように、GetMsgHookフィル
タは、“WM_NCLBUTTONDOWN、WM_M
OUSEMOVE、WM_LBUTTONUP、WM_
KEYDOWN、WM_SYSKEYDOWN”のメッ
セージをフィルタする。この種の“WM_NCLBUT
TONDOWN”メッセージが、命令番号(504)を
用いてABMSアプリケーションに到達する時は、この
アプリケーションがメニュー実行であるかどうかが確認
される。メニュー実行でない場合は、アイコンのために
作動しているかどうかが参照番号(500)で見られ
る。アイコンのために作動していない場合は、パラメー
タがABMSHitTestファンクション(501)
によって初期化されたかどうかが確認される。パラメー
タが初期化されてなかった場合は、メッセージパラメー
タを具備しているX及びY座標のポイントに格納するこ
とによってABMSInitファンクション(502、
503)を開始する。次いで“WM_ENTERIDL
E”メッセージ(505)は、ウィンドウ管理プログラ
ムに手渡すためウィンドウ管理プログラムに送られる。
ウィンドウ管理プログラムによって送られた“WM_M
OUSEMOVE”メッセージの場合は、プログラム
は、アペンディックス1の参照番号(510)でオブジ
ェクトがアイコンされているかどうかを確認する。オブ
ジェクトがアイコンされていない場合は、命令(51
5)は方向変数が初期化されていたかどうかを確認する
が、初期化の場合は、プログラムはアペンディックス5
のABMSMove(511)ファンクションを開始す
る。方向変数が初期化されていなかった場合は、アペン
ディックス6のABMSDirectionファンクシ
ョン(512)は、パラメータとしてアペンディックス
8のABMSTestDirectファンクション(5
13)の結果生じる方向変数の初期化が開始される。オ
ブジェクトがアイコンされている場合は、このシーケン
スは、カーソルで示されている位置でのアイコンのロー
ディングを開始するための命令(5111)及びファン
クションABMSLoadIcon(5100)を用い
る。次いでシーケンスは、メッセージ“WM_ENTE
RIDLE”を送ることによってウィンドウ管理プログ
ラムに手渡す。
【0053】メッセージ“WM_LBUTTONUP”
がアプリケーションから受け取られた場合は、参照番号
(510)でオペレータがメニュー実行したかどうかが
見られる。実行でなければ、このアプリケーションは、
ウィンドウ座標がマウス座標に対応するかどうかを確認
し、ABMSEndファンクション(521)を開始
し、次いでウィンドウ管理プログラムに“WM_ENT
ERIDLE”メッセージを送る。
【0054】キーが押し下げられた後に送られたメッセ
ージの場合、エスケープ(VK_ESCAPE)及び復
帰(VK_RETURN)キーによって構成されている
アボート(放棄)キーの場合を取り扱うために参照番号
(534)でアプリケーションが開始される。これと場
合を異にして、アプリケーションがVK_Leftメッ
セージを受け取った場合、アプリケーションは最初にア
イコンモードであるかどうかを参照番号530のシーケ
ンスで確認して、ファンクションABMSLoadIc
on(5100)によってアイコンをロードし、次いで
命令(5301)によってパラメータW_Captio
n、W_Left、及びW_Rightが初期化されて
いたかどうかを確認する。さらにそれらが初期化されて
いた場合は、アプリケーションはアイコンを移動させる
か、又はシーケンス(5302)によって実際サイズを
提供する。アイコンモードがこのポイントで丁度良く動
作していない場合は、ABMSMoveファンクション
が開始され、またマウスの位置はカーソルの位置に提供
される。さもなければ、ABMSはABMSDirec
tionファンクションを開始し、次いでメッセージ
“WM_ENTERIDLE”をウィンドウ管理プログ
ラムに返送する。
【0055】生じ得る種々の事象を取り扱いかつ主処理
ファンクション上又はユティリティファンクション上で
呼び出すこのプログラムの他の部分の動作は、上記説明
及び表のリストによって推測される。
【0056】図4のフローチャートの種々の段階を詳細
に示したアペンディックス1〜アペンディックス8を以
下に示す。
【0057】
【表1】
【0058】
【表2】
【0059】
【表3】
【0060】
【表4】
【0061】
【表5】
【0062】
【表6】
【0063】
【表7】
【0064】
【表8】
【0065】
【表9】
【0066】
【表10】
【0067】個々の当業者の範囲内でのいかなる変形も
本発明の精神及びその範囲から逸脱することなく行われ
るであろう。
【図面の簡単な説明】
【図1】本発明の全体的な経路図を示している。
【図2】本発明のフィルタの動作原理を示している。
【図3】実行可能なシナリオ表を示している。
【図4】フィルタリングファンクションが一度ロードさ
れた時の翻訳プログラムのフローチャートである。
【図5】本発明の従来の技術を示している。
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図2】
【図3】
【図4】
【図5】

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 “Windows”アプリケーションに
    おけるウィンドウサイズの決定又は移動の方法であっ
    て、“Windows”(1)と“Windows”下
    で実行される種々のアプリケーション(20、21、2
    2)との間に特定のメッセージをインタセプトするフィ
    ルタ(4)を位置させ、特定のアプリケーション(5)
    によってこれらのメッセージを処理し、“Window
    s”側で何の動作もトリガせずかつ他のアプリケーショ
    ンの動作をブロックしないニュートラルな“WM_EN
    TERIDLE”メッセージを、次に“Window
    s”に返送することを特徴とするウィンドウサイズの決
    定又は移動の方法。
  2. 【請求項2】 特定のアプリケーションによって実行さ
    れる処理が、発生し得るかつウィンドウの移動又はウィ
    ンドウサイズの決定の事象に潜在的に対応する各個別事
    象を処理することと、この処理終了をトリガする後続の
    事象が発生するまでに格納されている多数のパラメータ
    “w_Top、w_Right、w_Bottom、w
    _Caption、FrmCurPos、h_WndC
    urr”が初期化されることを可能にする特定のファン
    クションを前記処理時間内に呼び出すこととからなるこ
    とを特徴とする請求の範囲1に記載のウィンドウサイズ
    の決定又は移動の方法。
  3. 【請求項3】 格納されている前記パラメータが以下の
    もの、即ちウィンドウで動作が開始されたかどうかの情
    報を与える変数である“h_WndCurr”と、 アイコンがロードされたことを記憶する“b_Load
    edIcon”、 アイコンされている場合、メニュー実行フェーズか又は
    アイコン移動フェーズかの情報を与える変数である“h
    _WndMenu”と、 アプリケーションが開始されかつこのアプリケーション
    の特定カーソルによって置換される前にWindows
    の能動カーソル識別子が記憶されるのを可能にする変数
    である“h_OldCursor”と、 サイズを決め、フレーミングし、かつ最小幅を定めるそ
    れぞれの間のウィンドウの座標変数である“w_CXS
    creen”、“w_CYScreen”、“w_CX
    frame”、“w_CYMinHeight”、“w
    _CXMinWidth”と、 現行フレームポジション変数である“Frm_CurP
    os”と、 現行マウスポジション変数である“Mse_CurPo
    s”、 新ウィンドウ及び方向テストの座標を計算するために用
    いられる方向変数である“w_Left”、“w_To
    p”、“w_Right”、“w_Bottom”、
    “w_Caption”と、 ウィンドウの初期位置を規定する変数である“Wnd_
    StartPos”と、 カーソルの初期位置を規定する変数である“Mse_S
    tartPos”と、 開始時に偽であると割り当てられたブール変数である
    “b_Cursor”及び“b_LoadedIco
    n”とから構成されていることを特徴とする請求の範囲
    第2項に記載のウィンドウサイズの決定又は移動の方
    法。
  4. 【請求項4】 以下のごとき、ハードウエアの割り込み
    によって通知されたメッセージ、 WM_NCLBUTTONDOWN、 WM_MOUSEMOVE、 WM_KEYDOWN、 WM_SYSKEYDOWN、が受け取られるのを可能
    とする第1の“WM_GETMESSAGE”フィルタ
    と、 以下のごとき、方法に送られたメッセージ、 WM_SYSCOMMAND、 WM_ACTIVATEAPP、 WM_NCACTIVATE、 WM_ACTIVATE、がフィルタされかつ受け取ら
    れることを可能にする第2の“WH_CALLWNDP
    ROC”フィルタとからなる、合計二つのフィルタを有
    していることを特徴とする請求の範囲1又は3のいずれ
    か1項に記載のウィンドウサイズの決定又は移動の方
    法。
  5. 【請求項5】 各メッセージにとって特定のプログラム
    処理をトリガし、格納されたパラメータと、それ自体ユ
    ティリティファンクションを呼び出す以下のごとき、主
    処理ファンクション、 処理初期化のABMSInit、 ウィンドウ移動のABMSMove、 及び処理終了のABMSEndとを参加させるメッセー
    ジのインタセプトを特徴とする請求の範囲第4項に記載
    のウィンドウサイズの決定又は移動の方法。
  6. 【請求項6】 ABMSInitファンクションが、メ
    ッセージ“WM_BUTTONDOWN”と、“WM_
    SYSCOMMAND”に依存するメッセージである
    “SC_SIZE”とを処理するためのみに実行される
    ことを特徴とする請求の範囲5に記載のウィンドウサイ
    ズの決定又は移動の方法。
  7. 【請求項7】 ABMSEndファンクションが、メッ
    セージ“WM_LBUTTONUP”と、“WM_SY
    SKEYDOWN”に依存するメッセージ“VK_ES
    CAPE”及び“VK_RETURN”とを処理するた
    めのみに実行されることを特徴とする請求の範囲5に記
    載のウィンドウサイズの決定又は移動の方法。
  8. 【請求項8】 ABMSMoveファンクションが、
    “WM_SYSKEYDOWN”に依存するメッセージ
    である“WM_MOUSEMOVE、VK_LEFT、
    VK_UP、VK_RIGHT、及びVK_DOWN”
    メッセージを処理するためのみに実行されることを特徴
    とする請求の範囲5に記載のウィンドウサイズの決定又
    は移動の方法。
  9. 【請求項9】 ABMSInitファンクションが、
    “SETCAPTURE”の命令によってマウスメッセ
    ージを適合させることと、次いでウィンドウが親ウィン
    ドウの子ウィンドウであるかどうか、即ち該子ウィンド
    ウの移動を限定する該親ウィンドウに書き込まれている
    かどうかを確認することと、次いで現行座標となるため
    ウィンドウの初期座標とカーソルの位置とを初期化する
    ことと、ウィンドウの特性パラメータ(w_CXfra
    me、w_CXMinWidth、w_CYMinHe
    ight)を初期化することとからなることを特徴とす
    る請求の範囲6に記載のウィンドウサイズの決定又は移
    動の方法。
  10. 【請求項10】 特定のアプリケーションを示す以下の
    各段階、 フィルタの能動モードへの遷移と、 そこへメッセージが送られる“h_Wnd”ウィンドウ
    の識別子を記憶することと、 記憶がHitTestファンクション(501)及びA
    BMSInitファンクション(502、503)によ
    って達成される、このクリックゾーンから生じる種類の
    動作を記憶することと、 後続のマウスメッセージを当該ウィンドウに適合させる
    ことと、 InvertBlock手続き(5030)によってウ
    ィンドウの周囲にゴーストフレームを最初に描くこと
    と、 置換することによってこのメッセージをニュートラルに
    し、また“Windows”の側で処理されずかつ何の
    動作もトリガしない“WM_ENTERIDLE”メッ
    セージを代用することとを備えていることを特徴とする
    請求の範囲1又は2に記載のウィンドウサイズの決定又
    は移動の方法。
  11. 【請求項11】 以下の各段階、 InvertBlockによってゴーストを消去しなが
    ら、ABMSComputNewPos手続きによって
    ウィンドウの最終座標を計算することと、 ABMSMoveファンクション(511)によって最
    終位置にウィンドウを描くことと、 ABMSEndファンクションによって記憶パラメータ
    をゼロにリセットすることとを備えていることを特徴と
    する請求の範囲第10項に記載のウィンドウサイズの決
    定又は移動の方法。
  12. 【請求項12】 以下の各段階、 “Release Capture”命令によるマウス
    メッセージのオーナシップの放棄と、 フィルタ(4)の能動モードへ通過とを備えていること
    を特徴とする請求の範囲第11項に記載のウィンドウサ
    イズの決定又は移動の方法。
JP10161212A 1990-08-02 1998-06-09 ウィンドウサイズの決定又はウィンドウ移動の方法 Pending JPH1195889A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9009884 1990-08-02
FR9009884A FR2665552B1 (fr) 1990-08-02 1990-08-02 Procede de retaillage ou de deplacement de fenetres.

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP3513930A Division JP2925734B2 (ja) 1990-08-02 1991-07-24 ウィンドウサイズの決定又はウィンドウ移動の方法

Publications (1)

Publication Number Publication Date
JPH1195889A true JPH1195889A (ja) 1999-04-09

Family

ID=9399353

Family Applications (2)

Application Number Title Priority Date Filing Date
JP3513930A Expired - Lifetime JP2925734B2 (ja) 1990-08-02 1991-07-24 ウィンドウサイズの決定又はウィンドウ移動の方法
JP10161212A Pending JPH1195889A (ja) 1990-08-02 1998-06-09 ウィンドウサイズの決定又はウィンドウ移動の方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP3513930A Expired - Lifetime JP2925734B2 (ja) 1990-08-02 1991-07-24 ウィンドウサイズの決定又はウィンドウ移動の方法

Country Status (5)

Country Link
EP (1) EP0470881A1 (ja)
JP (2) JP2925734B2 (ja)
CA (1) CA2066180C (ja)
FR (1) FR2665552B1 (ja)
WO (1) WO1992002921A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3592549B2 (ja) * 1998-09-24 2004-11-24 株式会社東芝 情報処理システム及びシュミレーションシステム

Also Published As

Publication number Publication date
FR2665552B1 (fr) 1992-10-16
JP2925734B2 (ja) 1999-07-28
WO1992002921A1 (fr) 1992-02-20
EP0470881A1 (fr) 1992-02-12
CA2066180C (fr) 1998-11-03
JPH04505681A (ja) 1992-10-01
FR2665552A1 (fr) 1992-02-07
CA2066180A1 (fr) 1992-02-03

Similar Documents

Publication Publication Date Title
US5455904A (en) Method of sizing or moving windows
US12061915B2 (en) Gesture recognizers with delegates for controlling and modifying gesture recognition
CN108874288B (zh) 应用程序切换方法、装置、终端及存储介质
JP3723236B2 (ja) オペレーティングシステムおよびアプリケーションプログラムを実行するコンピュータシステムにおける方法
US9886190B2 (en) Gesture discernment and processing system
JP4213582B2 (ja) 仮想スレッドを介したコンピューター多重タスク
US5742285A (en) Virtual screen display system
JP2521035B2 (ja) 表示装置への注釈の配置
EP0297772B1 (en) Mouse pointer with switchable emulation mode
CN109857303B (zh) 交互控制方法及装置
KR19990062562A (ko) 접근 포인터를 갖는 컴퓨터 디스플레이 상에서다수의 그래픽사용자 인터페이스 구성 요소를 조작하는컴퓨터 시스템 및 방법
AU2001297946A1 (en) Computer multi-tasking via virtual threading
US5812804A (en) Display apparatus for tossing windows
US20170192942A1 (en) Hierarchical positioned event dispatch
US20150286343A1 (en) Organization mode support mechanisms
JPH01200480A (ja) コンピユータ・グラフイック・システムの制御方法
JPH1195889A (ja) ウィンドウサイズの決定又はウィンドウ移動の方法
JPH10198504A (ja) 情報処理装置の機能起動方法及び座標読取システム
JPH07219753A (ja) 会話型プログラム開発支援システム
JPH0713683A (ja) マルチウインドウ表示装置
JP3770660B2 (ja) マルチタスクオペレーティングシステムのキュー表示方法およびデバッグ装置
JP3480017B2 (ja) ポインティングデバイス制御装置
JPH103373A (ja) 情報処理装置
JPH0497389A (ja) Crt表示装置の表示制御方法
JPH03242721A (ja) マウスフォントの表示方式