- - PR -
ActiveX control画面を閉じる
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-23 10:43
VB6で作成したActiveXControlで自分自身を閉じるボタンを作成したいので、VBでMe.Closeみたいな事は何でしょうか、誰か教えていただけるでしょうか?
| ||||
|
投稿日時: 2006-01-23 11:01
Unload Meじゃないの?
| ||||
|
投稿日時: 2006-01-23 11:07
Unload(me)を使えない。このオブジェクトのプロパティが存在しないみたいなメッセージがでました。
| ||||
|
投稿日時: 2006-01-23 11:20
「自分自身を閉じる」とは、その ActiveX コントロールだけが閉じればいいんですか? それとも、ActiveX コントロールをホストしている、トップレベルのウィンドウを閉じたいんですか? | ||||
|
投稿日時: 2006-01-23 11:30
ありがとうございます、トップ画面を閉じればいいと思います。
| ||||
|
投稿日時: 2006-01-23 11:34
それは「ActiveX 自身」とは言えないと思うのですが... ActiveX コントロールの Parent を見ていって Form である場合に、Unload すればいいのかな。 ただ、ActiveX コントロール自身からではなく、そのフォームから Unload すべきです。 子コントロールは親コントロールに関与しない方が良いからです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-23 12:43
ActiveX コントロールには「ウィンドウレスコントロール」というものもあるので、ウィンドウの親子関係を辿るのは間違いです。 ActiveX コントロールの「親子関係」は IOleObject、IOleClientSite, IOleContainer の接続によって表されので、それを辿るのが正道です。 が、「IE に表示されている ActiveX コントロール」の場合、コントロール自身は IObjectWithSite を必ず実装している保証があり、IE4 以降の実装では、IObjectWithSite::GetSite() で取得したインターフェースから、もっと簡単に IE のトップレベルフレーム(ウィンドウ)にたどり着けます。 # 。。。が、詳細はもう忘れました (^^; | ||||
|
投稿日時: 2006-01-24 01:07
今回は、最終的に「トップレベルウィンドウ」が見つかればよいだけなので、ウィンドウの親子関係を辿るのでも出来そうですね (^^; ただし、自分自身がウィンドウレスコントロールの場合は一工夫必要かも。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ |