tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13199
投稿日: 2008/11/06(Thu) 09:39
投稿者みなな
ユーザーコントロール上にWebBrowserコントロールを置いて
Debug.Print WebBrowser1.Container.hwnd
とコードを書いて実行してみると

実行時エラー '438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

というエラーがでます。

フォーム上にWebBrowserコントロールを置いたときは
このようなエラーがでなかったのですが
何か解決方法はありませんでしょうか?

よろしくお願い致します

[ツリー表示へ]
タイトルRe: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13202
投稿日: 2008/11/06(Thu) 11:00
投稿者花ちゃん
質問される前に【当サイト内外の検索】を使って下調べをされましたか?

まだでしたら、WebBrowser1.Container.hwnd をキーに検索して見て下さい。

>フォーム上にWebBrowserコントロールを置いたときはこのようなエラーがでなかった
そもそも、何のハンドルを取得したいのでしょうか?

[ツリー表示へ]
タイトルRe^2: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13204
投稿日: 2008/11/06(Thu) 13:20
投稿者みなな
ユーザーコントロール上に置いた場合についての書き込みは私は見つけられませんでした

> そもそも、何のハンドルを取得したいのでしょうか?
この場合だとユーザーコントロールのハンドルです。
ハンドルは他の方法でも取得はできますが
WebBrowser1.Container.hwnd のような書き方はできないのでしょうか?

※二重に書き込んでしまってすみません。

[ツリー表示へ]
タイトルRe^3: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13206
投稿日: 2008/11/06(Thu) 15:01
投稿者花ちゃん
> ハンドルは他の方法でも取得はできますが
ハンドルの取得が目的ではないという事ですか。

> WebBrowser1.Container.hwnd のような書き方はできないのでしょうか?
上記の書き方は、ユーザーコントロールではサポートしていないから、
エラーとなっているのでは。

[ツリー表示へ]
タイトルRe: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13210
投稿日: 2008/11/07(Fri) 08:39
投稿者K.J.K.
ユーザーコントロールのコード内から自身のプロパティを呼び出すときに、
UserControl.hWnd

Me.hWnd ' こちらはこれが成立するコードを記述する必要あり
があり得ることに注意しなければいけません。フォームだと、これが後者のみです。

で、みなみさんは、後者のコードで前者の効果を期待していませんか?

[ツリー表示へ]
タイトルRe^2: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13215
投稿日: 2008/11/09(Sun) 11:50
投稿者みなな
WebBrowser1.Container.hwnd は UserControl.hWnd ではなく、
Me.hwnd を呼び出そうとしているということでしょうか?

私はWebBrowserのコンテナになっているハンドルを取得したいと思っていました。
私のイメージでは UserControl.hWnd の効果を期待しています。

[ツリー表示へ]
タイトルRe^3: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13221
投稿日: 2008/11/11(Tue) 12:51
投稿者K.J.K.
> WebBrowser1.Container.hwnd は UserControl.hWnd ではなく、
> Me.hwnd を呼び出そうとしているということでしょうか?

Form と Form1 との関係と、UserControl と UserControl1 との関係が
どう似ていて、どう異なるのかを考えてみてください、ということです。

[ツリー表示へ]
タイトルRe: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13208
投稿日: 2008/11/06(Thu) 15:56
投稿者魔界の仮面弁士
> Debug.Print WebBrowser1.Container.hwnd
> とコードを書いて実行してみると

Parent では無く、Container が必要なのですね?


> 実行時エラー '438':
> オブジェクトは、このプロパティまたはメソッドをサポートしていません。

'=== UserControl1 の中で ===

Dim O As Object
Set O = WebBrowser1.Container

If O Is Me Then     'If O Is UserControl Then
 MsgBox hWnd
ElseIf TypeOf O Is Control Then
 MsgBox O.hWnd
Else
 MsgBox CallByName(O, "hWnd", VbGet)
End If

[ツリー表示へ]
タイトルRe^2: ユーザーコントロール上にWebBrowserを置くと.Container.hwndが取得できない
記事No13216
投稿日: 2008/11/09(Sun) 11:55
投稿者みなな
お返事が遅れて申し訳ありません。
教えていただいたコードにてバッチリ期待する動作ができました!

他のコードの部分は理解できるのですが
お恥ずかしながら CallByName を今まで使ったことが無かったので
ここを調べてちゃんと理解しておきたいと思います。
ありがとうございました!

[ツリー表示へ]