タイトル【MacWIRE配信予定】小池邦人のプログラミング日記》2002/2/6<TransitionWindow()でウィンドウを移動させる>(2)カテゴリーユーザインタフェース, Carbon/CF, 小池邦人のプログラミング日記
作成日2002/2/6 15:18:48作成者新居雅行
続いて、setUpWindowEvent()でCarbon Event HandlerルーチンとしてインストールされてるmyWindowEventHandler()を見てみます。

 

Handlerルーチンは、ウィンドウのボタンがクリックされると呼ばれます。押されたボタンのコマンドIDを調べ適切な処理へ分岐していることが分かります。各ボタンに割り付けられているコマンドIDは、「拡大」が’’zom1’、「縮小」が’zom2’、「移動」が’move’、「シート」が’shet’となっています。

「拡大」ボタンのクリックでは、エフェクトにkWindowSlideTransitionEffectを、アクションにkWindowResizeTransitionActionを選択し、TransitionWindow()を実行します。矩形情報には、現在のウィンドウサイズより縦横20ピクセル大きなサイズが代入されています。この設定によりウィンドウが拡大されるわけです。「縮小」ボタンのクリックでは、それとはまったく逆の処理を行い、ウィンドウの縦横サイズを20ピクセルずつ小さくします。「縮小」ボタンを何度もクリックすると、ウィンドウサイズはどんどんと小さくなって行きます。

 

この機能は、Mac OS X 10.1の「初期設定」ダイアログで利用されています。機能アイコンを選択した時に、表示する内容によってダイアログウィンドウの縦サイズが延びたり縮んだりする時が、それに相当します。

「移動」ボタンのクリックでは、エフェクトにkWindowSlideTransitionEffectを、アクションにkWindowMoveTransitionActionを選択し、TransitionWindow()を実行します。矩形情報には、現在より縦横へ100ピクセルだけ移動した情報を設定します。これにより、ウィンドウは画面上をスライドするように移動します。「移動」ボタンをマウスクリックすると、ウィンドウがマウスから逃げるような感じになります。

最後の「シート」ボタンは、TransitionWindow()ではなくShowSheetWindow()を使い、Nibファイルから読み込んだSheetWindowを表示します。SheetWindowの「OK」ボタンにはコマンドIDとして’ok ’が割り付けられています。「OK」ボタンがクリックされると、Handlerルーチンは、HideSheetWindow()とDisposeWindow()を実行してウィンドウを閉じる処理を実行します。以下が、MainWindowで「シート」ボタンをクリックした時の様子です。

 

MainWindowのCloseボタンがクリックされた時には、QuitApplicationEventLoop()を実行してアプリケーションを終了させる処理がHandlerルーチンに記述されています。

「Transfer_Demo」サンプルアプリケーションは、以下のサイトに登録されていますので、試してみてください。Mac OS X 10.1と最新版のDeveloper Toolsが必要です。

 http://www.ottimo.co.jp/library/

次回は、ウィンドウのグループ化について解説します。この機能を利用すると、マウスドラッグにより複数のウィンドウを同時に移動させるようなことが可能となります。
[小池邦人/オッティモ< http://www.ottimo.co.jp/>]
(この項、以上)
関連リンク