●逆襲のOS/2●(2009.02.27/2009.10.28)

VIOウィンドウの初期状態の変更

Warp 4.xのVIOウィンドウは常に最大化状態(右上端が[|□|])でオープンされる。それはそれでいいんだが、その状態でいったん最小化し、再表示するとウィンドウ位置が画面左上に強制的に移動してしまう。これは非常に気持ちが悪い。この現象にはALWALTFXというツールで対処できるらしいのだが、なぜかウチの環境では機能しない。

また、PMでは[SHIFT]キーを押したままウィンドウをリサイズすれば、デフォルトのウィンドウサイズを変更できるはずなのだが、なぜかVIOではこれも機能しない。つーか、そもそもVIOウィンドウを小さくしても、最大化状態のままだと判断されているようで、右上ボタンは[|□|]のままである。これは一般のPMウィンドウでは起きない現象。ま、バグでしょうな。

で、対処方法を見つけた。

[SHIFT]+[|□|]をクリック

すると、非最大化状態のまま、最大化できる…なんて書き方をすると混乱するかもしれないが、まあ、やって見ればどれだけ便利かすぐにわかる。次回VIO起動時から右上端が[□]になり、起動→最小化→復元を実行してもウィンドウ位置が変わらなくなる。なお、[SHIFT]+[|□|]でウィンドウが小さくなってしまったら、[SHIFT]を押したままウィンドウ右下をドラッグして、ウィンドウの大きさを最大にすること(これはいわゆる「最大化」ではない)。

●VIOウィンドウが画面の下の方で開かないようにしたい

画面の最下部にあるlswitch(タスクスイッチャ)なんかにカブって、物凄く迷惑。これはALWALTFXの[ウィンドウフレームの位置制御]で対処できる。上下左右、すべて50ドットほどのマージンを取ることにした。我が家の環境でも成功。ただ、これ、副作用もあるかもしれないなあ…。できればVIOウィンドウに限定したいのだが…

●REXXマクロでウィンドウの位置を制御

ALWALTFXにはREXXマクロ機能があり、ウィンドウの各種の情報を参照したり変更したりできる。私がやりたいのは、VIOウィンドウのみ、常に画面の中央付近で開くこと。これをマクロで書くと、次のようになる。

/* VIOウィンドウのみを画面中央付近に開く */

/* REXX関数のロード */
CALL RxFuncAdd 'ArxLoadFuncs','ALWAREXX','ArxLoadFuncs'
CALL ArxLoadFuncs

CALL ArxQueryWindowInfo 'main','info' /* infoは情報が格納されるステム変数 */
IF info.style=H9200A801 THEN /* よくわからんが、これがVIOの識別子みたい */
DO
  CALL ArxSetWindowPos 'main',80,90 /* 座標原点もウィンドウ位置も左下が基準 */
End;

ALWALTFXの[ウィンドウ制御]Page 3/3で、このファイルを[WM_SHOW(1ST)]メッセージに割り当てればよい。なお、Page 1/3の[フレームウィンドウの位置制御]は無効にしておく方がよいだろう。

【逆襲のOS/2目次】 【ホーム】