囲みコラム

ScriptorViewクラスのMouseDown()メソッド


リスト8.10を注意深く見ると分かるように、ScriptorViewクラスでは、BViewクラスが提供しているフック関数のうち、本文の説明で述べたものに加えてMouseDown()メソッドを再定義しています。

ScriptorViewクラスのMouseDown()メソッドでは、単にMakeFocus()メソッドを呼び出しているだけです。このメソッドはBViewクラスで定義されているもので、キーボードフォーカスを自身にセットします。入力フィールドやボタンなどのコントロール部品はキーボードフォーカスがセットされるとハイライト表示しますが、このハイライト表示をクリック操作で解除できるようにするために、MouseDown()メソッドを再定義しています。

つまり、ScriptorViewの上にサブビューが貼りついていない場所をクリックすると、それだけでコントロール部品のハイライト表示を解除できるようにしているのです。Tabキーを繰り返し入力し、フォーカスを移動させてScriptorViewに移しても解除できますが、それでは面倒に感じることもあるため、このようにしました。これは必ずしも必要な措置ではありません。どちらかといえば、筆者の趣味でやっていることですので、あまり深く考えないで下さい。

Art of BeOS Programming
koga@stprec.co.jp