フォーカスとは?

タグの編集
投稿者 hitochan  (高校生) 投稿日時 2009/4/26 03:39:55
はじめまして。hitochanといいます。

visual basicを初めてもう1年ぐらいすぎたのですが、

毎日勉強や部活に追われ趣味のプログラミングをする時間がなく、

あまり技術的には進歩していません。

本題に入りますが、

visual basic中学校の初級講座の「第21回 マウス・キーボードからの入力」

でmousewheel の使用例ということで、


ちょっと注意が必要なのはMouseWheelイベントはフォーカスのあるコントロールが受け取るということです。そのためこのプログラムではPictureBox1に強制的にフォーカスを与えるためにフォームのActivatedイベント(読み方:Activated = アクティベイテッド)でPictureBox1のSelectメソッドを呼び出しています。Activatedイベントはフォームがアクティブになった直後に発生します。(この場合の「アクティブ」とはユーザーから入力を受け取れるように準備が整った状態を指します。)

この場でのフォーカスの意味がよくわかりません。

「フォーカスを与える」というのはチカチカ点滅している状態のことを言うと思っていたのですが、

pictureboxにフォーカスを与えるというのはどういうことなのかわかりません。

「ユーザーから入力を受け取れるように準備が整った」とはどういうことなのでしょうか。

ご教授お願いします。


投稿者 hitochan  (高校生) 投稿日時 2009/4/26 03:42:24
2008を使ってます。
投稿者 (削除されました)  () 投稿日時 2009/4/26 04:08:32
(削除されました)
投稿者 neptune  (社会人) 投稿日時 2009/4/26 07:07:03
こんにちは

私もうまく説明できないのでググッたら
http://www.asahi-net.or.jp/~ha3t-nkmr/vcl3-5.htm
一番上にとても判りやすい説明がありました。

PictureBoxもWindowの一つですから、この説明がそのまんまと思います。
/////////////////////以下引用//////////////////
・ ウィンドウがフォーカスを持つとはそのウィンドウがキーボードメッセージの入力先になっていること  
・ ウィンドウがアクティブとは、そのウィンドウがトップレベルウィンドウで、それ自身か その子ウィンドウ、孫ウィンドウなど、そのトップレベルウィンドウに属するいずれかのウィンドウがフォーカスを持つこと  
//////////////////////引用終わり///////////////

なので、
>この場でのフォーカスの意味がよくわかりません。
はプログラムがそのWidnow、この場合はpictureboxに命令(メッセージ)を送れる状態にした
という事では?

まだ良く判らんようなら、識者のアドバイスもお待ち下さい。
投稿者 hitochan  (高校生) 投稿日時 2009/4/26 08:11:09
なるほど。



フォーカスを与えるとは命令が与えられる状態にするということなんですね。


わざわざありがとうございました。
投稿者 cupid  (社会人) 投稿日時 2009/4/26 08:23:37
Formやその部品、TextBox、Labelなど全てにFocusはあり得ます。
TextBox上のCursolが点滅していれば、そこにFocusがあるのはご指摘の通りです。
が、LabelやFormあるいはPictureboxに、Focusが移っても目には見えません。
しいて言えば、TextBoxにあった場合それのFocusが無くなる事で分かる場合もあります。

「ユーザーから入力を受け取れるように準備が整った」とは多分、アプリケーションが
Waite状態になった事を言うのでしょう。Waite状態でない状態は、つまりビジー状態で、
そんな時、アプリは人の入力を受け付けません。しかし、今はPCが高性能であるため、
多くの場合、アプリはWaite状態である事がほとんどで、起動したり何か処理させたりしても
ビジー状態は一瞬で終わる場合がほとんどです。だから、目にする機会は少ないかもしれません。
これで如何でしょうか。
投稿者 hitochan  (高校生) 投稿日時 2009/4/29 02:00:53
なるほど!

そういうことなんですか。

分かりやすい説明をありがとうございました。

また迷惑を掛けるかもしれませんがよろしくお願いします。