ハンドルについて・・・
ハンドルとは、識別子みたいなものだと私は思っています。
例えば、今扱っているウインドウがA,Bと二つあり、Aのウインドウに丸を、Bのウインドウに四角を描画したいなら、AとBを区別する必要があるでしょう?
例えば、今扱っているウインドウがA,Bと二つあり、Aのウインドウに丸を、Bのウインドウに四角を描画したいなら、AとBを区別する必要があるでしょう?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
CommandButton1がクリックされた時に、EditBox1のハンドルをメッセージボックスに表示する という内容になると思います。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
でも、こうしないとアクセス違反になってしまうのでは?
コード: 全て選択
Sub MainWnd_CommandButton1_Click()
Dim id As Long
id=GetDlgItem(hMainWnd,EditBox1)
MessageBox(hMainWnd,Str$(id),"ハンドル",MB_OK)
End Sub
Re: ハンドルについて・・・
ハンドル、コントロールに割り当てられた識別番号、って感じですかねぇ...。
というコードを書いた場合、hMainWnd っていうウィンドウに含まれる、 EditBox1 っていうエディットコントロールの識別番号を hEdit に代入する、といった動きになっています。
で、この識別番号は可変性のものでプログラムを実行する度に変わってしまいます。
hMainWnd というウィンドウに含まれる EditBox1 であることに変わりはないんですけどね。
あ。 hMainWnd っていうのもハンドルで、ウィンドウに割り当てられた識別番号になります。
コントロールもウィンドウなので、コントロールとウィンドウは別として考えなくてもいいです。
分かり辛いかなぁ...。
コード: 全て選択
Dim hEdit As HWND
hEdit=GetDlgItem(hMainWnd,EditBox1)
で、この識別番号は可変性のものでプログラムを実行する度に変わってしまいます。
hMainWnd というウィンドウに含まれる EditBox1 であることに変わりはないんですけどね。
あ。 hMainWnd っていうのもハンドルで、ウィンドウに割り当てられた識別番号になります。
コントロールもウィンドウなので、コントロールとウィンドウは別として考えなくてもいいです。
分かり辛いかなぁ...。
補足で追記させていただきます。
私たちがウィンドウを生成するときにはWindowsに「ウィンドウを作ってください」と頼みます。(ActiveBasicのRADを使っている場合、この辺はActiveBasicがやってくれます)するとWindowsがウィンドウを作ってくれて、そのウィンドウを示す番号を教えてくれます。以後、ウィンドウに操作したいときはこの番号を使用して「Windowsさん、この番号のウィンドウに文字を設定してくれよ」と頼んだりするわけです。その番号がハンドルということになります。
ちなみに、ID(EditBox1とか)は、こちらでウィンドウにつけた名前のようなものです。Windowsにいきなり「あなたは番号10283(実際こうではありませんが)のウィンドウを作りましたから使ってください」と言われても、こんな半端の番号では扱いずらいですよね。そこでこっちはこっちで、番号10283のウィンドウは"EditBox1"と命名しよう。とするわけです。
RADを使う場合、私たちはIDを使っています。それではWindowsに頼めませんのでGetDlgItem()でIDからハンドルを取得するわけです。
ちなみに、ハンドルはWindowsのいたるところで使われます。ウィンドウに限った話ではありません。
説明大丈夫かなぁ~、、、多少語弊のあるような説明をしたところもありますが、ハンドルを理解できたころにはそれも問題なくなると思います。
誰に割り当てられるのかというと、Windowsです。7さん さんが書きました:コントロールに割り当てられた識別番号
私たちがウィンドウを生成するときにはWindowsに「ウィンドウを作ってください」と頼みます。(ActiveBasicのRADを使っている場合、この辺はActiveBasicがやってくれます)するとWindowsがウィンドウを作ってくれて、そのウィンドウを示す番号を教えてくれます。以後、ウィンドウに操作したいときはこの番号を使用して「Windowsさん、この番号のウィンドウに文字を設定してくれよ」と頼んだりするわけです。その番号がハンドルということになります。
ちなみに、ID(EditBox1とか)は、こちらでウィンドウにつけた名前のようなものです。Windowsにいきなり「あなたは番号10283(実際こうではありませんが)のウィンドウを作りましたから使ってください」と言われても、こんな半端の番号では扱いずらいですよね。そこでこっちはこっちで、番号10283のウィンドウは"EditBox1"と命名しよう。とするわけです。
RADを使う場合、私たちはIDを使っています。それではWindowsに頼めませんのでGetDlgItem()でIDからハンドルを取得するわけです。
ちなみに、ハンドルはWindowsのいたるところで使われます。ウィンドウに限った話ではありません。
説明大丈夫かなぁ~、、、多少語弊のあるような説明をしたところもありますが、ハンドルを理解できたころにはそれも問題なくなると思います。